blob: c34372bca5cca41c7fa96c03268bb6726680a80a [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 Yang62b23322018-12-24 12:45:47 -080043#include "goldfish_vk_transform.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 Yangafe29d32018-12-25 13:01:52 -08001602 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, 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 Yangafe29d32018-12-25 13:01:52 -08001866 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, 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 Yangafe29d32018-12-25 13:01:52 -08001913 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, &local_memoryOffset, 1, nullptr, 0, nullptr, 0, 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 Yangafe29d32018-12-25 13:01:52 -08001971 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, &local_memoryOffset, 1, nullptr, 0, nullptr, 0, 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 Yang97a06702018-12-24 17:02:43 -080010754 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010755 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010756 countingStream->rewind();
10757 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010758 uint64_t cgen_var_758;
10759 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_758, 1);
10760 countingStream->write((uint64_t*)&cgen_var_758, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010761 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010762 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10763 }
10764 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10765 countingStream->rewind();
10766 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
10767 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
10768 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010769 uint64_t cgen_var_759;
10770 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_759, 1);
10771 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010772 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010773 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10774 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010775 if (pExternalBufferProperties)
10776 {
10777 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
10778 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010779 mImpl->log("finish vkGetPhysicalDeviceExternalBufferProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010780}
10781
10782void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
10783 VkPhysicalDevice physicalDevice,
10784 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
10785 VkExternalFenceProperties* pExternalFenceProperties)
10786{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010787 mImpl->log("start vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010788 auto stream = mImpl->stream();
10789 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010790 auto resources = mImpl->resources();
10791 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010792 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010793 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010794 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010795 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010796 local_pExternalFenceInfo = nullptr;
10797 if (pExternalFenceInfo)
10798 {
10799 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
10800 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
10801 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010802 if (local_pExternalFenceInfo)
10803 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010804 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010805 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010806 countingStream->rewind();
10807 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010808 uint64_t cgen_var_760;
10809 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_760, 1);
10810 countingStream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010811 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010812 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10813 }
10814 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10815 countingStream->rewind();
10816 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
10817 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
10818 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010819 uint64_t cgen_var_761;
10820 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_761, 1);
10821 stream->write((uint64_t*)&cgen_var_761, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010822 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010823 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10824 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010825 if (pExternalFenceProperties)
10826 {
10827 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
10828 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010829 mImpl->log("finish vkGetPhysicalDeviceExternalFenceProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010830}
10831
10832void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
10833 VkPhysicalDevice physicalDevice,
10834 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
10835 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
10836{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010837 mImpl->log("start vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010838 auto stream = mImpl->stream();
10839 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010840 auto resources = mImpl->resources();
10841 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010842 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010843 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010844 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010845 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010846 local_pExternalSemaphoreInfo = nullptr;
10847 if (pExternalSemaphoreInfo)
10848 {
10849 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
10850 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
10851 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010852 if (local_pExternalSemaphoreInfo)
10853 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010854 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010855 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010856 countingStream->rewind();
10857 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010858 uint64_t cgen_var_762;
10859 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
10860 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010861 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010862 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10863 }
10864 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10865 countingStream->rewind();
10866 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
10867 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
10868 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010869 uint64_t cgen_var_763;
10870 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_763, 1);
10871 stream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010872 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010873 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10874 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010875 if (pExternalSemaphoreProperties)
10876 {
10877 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10878 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010879 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphoreProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010880}
10881
10882void VkEncoder::vkGetDescriptorSetLayoutSupport(
10883 VkDevice device,
10884 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
10885 VkDescriptorSetLayoutSupport* pSupport)
10886{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010887 mImpl->log("start vkGetDescriptorSetLayoutSupport");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010888 auto stream = mImpl->stream();
10889 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010890 auto resources = mImpl->resources();
10891 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010892 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010893 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010894 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010895 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010896 local_pCreateInfo = nullptr;
10897 if (pCreateInfo)
10898 {
10899 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
10900 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
10901 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010902 if (local_pCreateInfo)
10903 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010904 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010905 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010906 countingStream->rewind();
10907 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010908 uint64_t cgen_var_764;
10909 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_764, 1);
10910 countingStream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010911 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010912 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
10913 }
10914 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10915 countingStream->rewind();
10916 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
10917 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
10918 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010919 uint64_t cgen_var_765;
10920 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_765, 1);
10921 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010922 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010923 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
10924 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010925 if (pSupport)
10926 {
10927 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
10928 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010929 mImpl->log("finish vkGetDescriptorSetLayoutSupport");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010930}
10931
10932#endif
10933#ifdef VK_KHR_surface
10934void VkEncoder::vkDestroySurfaceKHR(
10935 VkInstance instance,
10936 VkSurfaceKHR surface,
10937 const VkAllocationCallbacks* pAllocator)
10938{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010939 mImpl->log("start vkDestroySurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010940 auto stream = mImpl->stream();
10941 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010942 auto resources = mImpl->resources();
10943 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010944 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010945 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010946 VkSurfaceKHR local_surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010947 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010948 local_instance = instance;
10949 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010950 local_pAllocator = nullptr;
10951 if (pAllocator)
10952 {
10953 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10954 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10955 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010956 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010957 if (local_pAllocator)
10958 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010959 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010960 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010961 countingStream->rewind();
10962 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010963 uint64_t cgen_var_766;
10964 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_766, 1);
10965 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
10966 uint64_t cgen_var_767;
10967 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
10968 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010969 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010970 uint64_t cgen_var_768 = (uint64_t)(uintptr_t)local_pAllocator;
10971 countingStream->putBe64(cgen_var_768);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010972 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010973 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010974 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010975 }
10976 }
10977 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10978 countingStream->rewind();
10979 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
10980 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
10981 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010982 uint64_t cgen_var_769;
10983 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_769, 1);
10984 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
10985 uint64_t cgen_var_770;
10986 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_770, 1);
10987 stream->write((uint64_t*)&cgen_var_770, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010988 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010989 uint64_t cgen_var_771 = (uint64_t)(uintptr_t)local_pAllocator;
10990 stream->putBe64(cgen_var_771);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010991 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010992 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010993 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010994 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010995 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010996 mImpl->log("finish vkDestroySurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010997}
10998
10999VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
11000 VkPhysicalDevice physicalDevice,
11001 uint32_t queueFamilyIndex,
11002 VkSurfaceKHR surface,
11003 VkBool32* pSupported)
11004{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011005 mImpl->log("start vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011006 auto stream = mImpl->stream();
11007 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011008 auto resources = mImpl->resources();
11009 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011010 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011011 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011012 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011013 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011014 local_physicalDevice = physicalDevice;
11015 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011016 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011017 countingStream->rewind();
11018 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011019 uint64_t cgen_var_772;
11020 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_772, 1);
11021 countingStream->write((uint64_t*)&cgen_var_772, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011022 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011023 uint64_t cgen_var_773;
11024 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_773, 1);
11025 countingStream->write((uint64_t*)&cgen_var_773, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011026 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
11027 }
11028 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11029 countingStream->rewind();
11030 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
11031 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
11032 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011033 uint64_t cgen_var_774;
11034 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
11035 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011036 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011037 uint64_t cgen_var_775;
11038 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
11039 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011040 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
11041 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
11042 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
11043 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011044 countingStream->clearPool();
11045 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011046 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011047 mImpl->log("finish vkGetPhysicalDeviceSurfaceSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011048 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
11049}
11050
11051VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
11052 VkPhysicalDevice physicalDevice,
11053 VkSurfaceKHR surface,
11054 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
11055{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011056 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011057 auto stream = mImpl->stream();
11058 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011059 auto resources = mImpl->resources();
11060 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011061 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011062 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011063 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011064 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011065 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011066 countingStream->rewind();
11067 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011068 uint64_t cgen_var_776;
11069 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_776, 1);
11070 countingStream->write((uint64_t*)&cgen_var_776, 1 * 8);
11071 uint64_t cgen_var_777;
11072 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_777, 1);
11073 countingStream->write((uint64_t*)&cgen_var_777, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011074 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11075 }
11076 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11077 countingStream->rewind();
11078 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
11079 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
11080 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011081 uint64_t cgen_var_778;
11082 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_778, 1);
11083 stream->write((uint64_t*)&cgen_var_778, 1 * 8);
11084 uint64_t cgen_var_779;
11085 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_779, 1);
11086 stream->write((uint64_t*)&cgen_var_779, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011087 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11088 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011089 if (pSurfaceCapabilities)
11090 {
11091 transform_fromhost_VkSurfaceCapabilitiesKHR(mImpl->resources(), (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11092 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011093 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
11094 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011095 countingStream->clearPool();
11096 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011097 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011098 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011099 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
11100}
11101
11102VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
11103 VkPhysicalDevice physicalDevice,
11104 VkSurfaceKHR surface,
11105 uint32_t* pSurfaceFormatCount,
11106 VkSurfaceFormatKHR* pSurfaceFormats)
11107{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011108 mImpl->log("start vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011109 auto stream = mImpl->stream();
11110 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011111 auto resources = mImpl->resources();
11112 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011113 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011114 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011115 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011116 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011117 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011118 countingStream->rewind();
11119 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011120 uint64_t cgen_var_780;
11121 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
11122 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
11123 uint64_t cgen_var_781;
11124 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
11125 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011126 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011127 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11128 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011129 if (pSurfaceFormatCount)
11130 {
11131 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11132 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011133 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011134 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pSurfaceFormats;
11135 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011136 if (pSurfaceFormats)
11137 {
11138 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11139 {
11140 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11141 }
11142 }
11143 }
11144 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11145 countingStream->rewind();
11146 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
11147 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
11148 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011149 uint64_t cgen_var_784;
11150 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
11151 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
11152 uint64_t cgen_var_785;
11153 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
11154 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011155 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011156 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11157 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011158 if (pSurfaceFormatCount)
11159 {
11160 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11161 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011162 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011163 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pSurfaceFormats;
11164 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011165 if (pSurfaceFormats)
11166 {
11167 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11168 {
11169 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11170 }
11171 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011172 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011173 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011174 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011175 if (pSurfaceFormatCount)
11176 {
11177 if (!(check_pSurfaceFormatCount))
11178 {
11179 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
11180 }
11181 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11182 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011183 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011184 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011185 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011186 if (pSurfaceFormats)
11187 {
11188 if (!(check_pSurfaceFormats))
11189 {
11190 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
11191 }
11192 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11193 {
11194 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11195 }
11196 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011197 if (pSurfaceFormats)
11198 {
11199 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11200 {
11201 transform_fromhost_VkSurfaceFormatKHR(mImpl->resources(), (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11202 }
11203 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011204 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
11205 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011206 countingStream->clearPool();
11207 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011208 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011209 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormatsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011210 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
11211}
11212
11213VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
11214 VkPhysicalDevice physicalDevice,
11215 VkSurfaceKHR surface,
11216 uint32_t* pPresentModeCount,
11217 VkPresentModeKHR* pPresentModes)
11218{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011219 mImpl->log("start vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011220 auto stream = mImpl->stream();
11221 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011222 auto resources = mImpl->resources();
11223 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011224 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011225 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011226 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011227 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011228 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011229 countingStream->rewind();
11230 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011231 uint64_t cgen_var_790;
11232 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_790, 1);
11233 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
11234 uint64_t cgen_var_791;
11235 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_791, 1);
11236 countingStream->write((uint64_t*)&cgen_var_791, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011237 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011238 uint64_t cgen_var_792 = (uint64_t)(uintptr_t)pPresentModeCount;
11239 countingStream->putBe64(cgen_var_792);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011240 if (pPresentModeCount)
11241 {
11242 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11243 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011244 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011245 uint64_t cgen_var_793 = (uint64_t)(uintptr_t)pPresentModes;
11246 countingStream->putBe64(cgen_var_793);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011247 if (pPresentModes)
11248 {
11249 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11250 }
11251 }
11252 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11253 countingStream->rewind();
11254 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
11255 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
11256 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011257 uint64_t cgen_var_794;
11258 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_794, 1);
11259 stream->write((uint64_t*)&cgen_var_794, 1 * 8);
11260 uint64_t cgen_var_795;
11261 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_795, 1);
11262 stream->write((uint64_t*)&cgen_var_795, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011263 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011264 uint64_t cgen_var_796 = (uint64_t)(uintptr_t)pPresentModeCount;
11265 stream->putBe64(cgen_var_796);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011266 if (pPresentModeCount)
11267 {
11268 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11269 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011270 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011271 uint64_t cgen_var_797 = (uint64_t)(uintptr_t)pPresentModes;
11272 stream->putBe64(cgen_var_797);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011273 if (pPresentModes)
11274 {
11275 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11276 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011277 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011278 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011279 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011280 if (pPresentModeCount)
11281 {
11282 if (!(check_pPresentModeCount))
11283 {
11284 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
11285 }
11286 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11287 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011288 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011289 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011290 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011291 if (pPresentModes)
11292 {
11293 if (!(check_pPresentModes))
11294 {
11295 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
11296 }
11297 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11298 }
11299 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11300 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011301 countingStream->clearPool();
11302 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011303 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011304 mImpl->log("finish vkGetPhysicalDeviceSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011305 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
11306}
11307
11308#endif
11309#ifdef VK_KHR_swapchain
11310VkResult VkEncoder::vkCreateSwapchainKHR(
11311 VkDevice device,
11312 const VkSwapchainCreateInfoKHR* pCreateInfo,
11313 const VkAllocationCallbacks* pAllocator,
11314 VkSwapchainKHR* pSwapchain)
11315{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011316 mImpl->log("start vkCreateSwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011317 auto stream = mImpl->stream();
11318 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011319 auto resources = mImpl->resources();
11320 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011321 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011322 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011323 VkSwapchainCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011324 VkAllocationCallbacks* local_pAllocator;
11325 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011326 local_pCreateInfo = nullptr;
11327 if (pCreateInfo)
11328 {
11329 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
11330 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
11331 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011332 local_pAllocator = nullptr;
11333 if (pAllocator)
11334 {
11335 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11336 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11337 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011338 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011339 if (local_pCreateInfo)
11340 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011341 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011342 }
11343 if (local_pAllocator)
11344 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011345 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011346 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011347 countingStream->rewind();
11348 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011349 uint64_t cgen_var_800;
11350 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
11351 countingStream->write((uint64_t*)&cgen_var_800, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011352 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011353 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011354 uint64_t cgen_var_801 = (uint64_t)(uintptr_t)local_pAllocator;
11355 countingStream->putBe64(cgen_var_801);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011356 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011357 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011358 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011359 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011360 uint64_t cgen_var_802;
11361 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_802, 1);
11362 countingStream->write((uint64_t*)&cgen_var_802, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011363 }
11364 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11365 countingStream->rewind();
11366 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
11367 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
11368 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011369 uint64_t cgen_var_803;
11370 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
11371 stream->write((uint64_t*)&cgen_var_803, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011372 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011373 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011374 uint64_t cgen_var_804 = (uint64_t)(uintptr_t)local_pAllocator;
11375 stream->putBe64(cgen_var_804);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011376 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011377 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011378 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011379 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011380 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011381 uint64_t cgen_var_805;
11382 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_805, 1);
11383 stream->write((uint64_t*)&cgen_var_805, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011384 stream->setHandleMapping(resources->unwrapMapping());
11385 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011386 uint64_t cgen_var_806;
11387 stream->read((uint64_t*)&cgen_var_806, 8);
11388 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_806, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011389 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011390 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
11391 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011392 countingStream->clearPool();
11393 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011394 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011395 mImpl->log("finish vkCreateSwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011396 return vkCreateSwapchainKHR_VkResult_return;
11397}
11398
11399void VkEncoder::vkDestroySwapchainKHR(
11400 VkDevice device,
11401 VkSwapchainKHR swapchain,
11402 const VkAllocationCallbacks* pAllocator)
11403{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011404 mImpl->log("start vkDestroySwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011405 auto stream = mImpl->stream();
11406 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011407 auto resources = mImpl->resources();
11408 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011409 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011410 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011411 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011412 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011413 local_device = device;
11414 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011415 local_pAllocator = nullptr;
11416 if (pAllocator)
11417 {
11418 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11419 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11420 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011421 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011422 if (local_pAllocator)
11423 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011424 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011425 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011426 countingStream->rewind();
11427 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011428 uint64_t cgen_var_807;
11429 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_807, 1);
11430 countingStream->write((uint64_t*)&cgen_var_807, 1 * 8);
11431 uint64_t cgen_var_808;
11432 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_808, 1);
11433 countingStream->write((uint64_t*)&cgen_var_808, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011434 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011435 uint64_t cgen_var_809 = (uint64_t)(uintptr_t)local_pAllocator;
11436 countingStream->putBe64(cgen_var_809);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011437 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011438 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011439 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011440 }
11441 }
11442 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11443 countingStream->rewind();
11444 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
11445 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
11446 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011447 uint64_t cgen_var_810;
11448 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_810, 1);
11449 stream->write((uint64_t*)&cgen_var_810, 1 * 8);
11450 uint64_t cgen_var_811;
11451 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_811, 1);
11452 stream->write((uint64_t*)&cgen_var_811, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011453 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011454 uint64_t cgen_var_812 = (uint64_t)(uintptr_t)local_pAllocator;
11455 stream->putBe64(cgen_var_812);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011456 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011457 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011458 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011459 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011460 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011461 mImpl->log("finish vkDestroySwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011462}
11463
11464VkResult VkEncoder::vkGetSwapchainImagesKHR(
11465 VkDevice device,
11466 VkSwapchainKHR swapchain,
11467 uint32_t* pSwapchainImageCount,
11468 VkImage* pSwapchainImages)
11469{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011470 mImpl->log("start vkGetSwapchainImagesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011471 auto stream = mImpl->stream();
11472 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011473 auto resources = mImpl->resources();
11474 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011475 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011476 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011477 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011478 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011479 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011480 countingStream->rewind();
11481 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011482 uint64_t cgen_var_813;
11483 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_813, 1);
11484 countingStream->write((uint64_t*)&cgen_var_813, 1 * 8);
11485 uint64_t cgen_var_814;
11486 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_814, 1);
11487 countingStream->write((uint64_t*)&cgen_var_814, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011488 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011489 uint64_t cgen_var_815 = (uint64_t)(uintptr_t)pSwapchainImageCount;
11490 countingStream->putBe64(cgen_var_815);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011491 if (pSwapchainImageCount)
11492 {
11493 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11494 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011495 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011496 uint64_t cgen_var_816 = (uint64_t)(uintptr_t)pSwapchainImages;
11497 countingStream->putBe64(cgen_var_816);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011498 if (pSwapchainImages)
11499 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011500 if ((*(pSwapchainImageCount)))
11501 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011502 uint64_t* cgen_var_817;
11503 countingStream->alloc((void**)&cgen_var_817, (*(pSwapchainImageCount)) * 8);
11504 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_817, (*(pSwapchainImageCount)));
11505 countingStream->write((uint64_t*)cgen_var_817, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011506 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011507 }
11508 }
11509 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11510 countingStream->rewind();
11511 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
11512 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
11513 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011514 uint64_t cgen_var_818;
11515 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_818, 1);
11516 stream->write((uint64_t*)&cgen_var_818, 1 * 8);
11517 uint64_t cgen_var_819;
11518 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_819, 1);
11519 stream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011520 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011521 uint64_t cgen_var_820 = (uint64_t)(uintptr_t)pSwapchainImageCount;
11522 stream->putBe64(cgen_var_820);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011523 if (pSwapchainImageCount)
11524 {
11525 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11526 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011527 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011528 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011529 uint64_t cgen_var_821 = (uint64_t)(uintptr_t)pSwapchainImages;
11530 stream->putBe64(cgen_var_821);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011531 if (pSwapchainImages)
11532 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011533 if ((*(pSwapchainImageCount)))
11534 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011535 uint64_t* cgen_var_822;
11536 stream->alloc((void**)&cgen_var_822, (*(pSwapchainImageCount)) * 8);
11537 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_822, (*(pSwapchainImageCount)));
11538 stream->write((uint64_t*)cgen_var_822, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011539 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011540 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011541 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011542 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011543 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011544 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011545 if (pSwapchainImageCount)
11546 {
11547 if (!(check_pSwapchainImageCount))
11548 {
11549 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
11550 }
11551 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11552 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011553 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011554 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011555 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011556 if (pSwapchainImages)
11557 {
11558 if (!(check_pSwapchainImages))
11559 {
11560 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
11561 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011562 if ((*(pSwapchainImageCount)))
11563 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011564 uint64_t* cgen_var_825;
11565 stream->alloc((void**)&cgen_var_825, (*(pSwapchainImageCount)) * 8);
11566 stream->read((uint64_t*)cgen_var_825, (*(pSwapchainImageCount)) * 8);
11567 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_825, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011568 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011569 }
11570 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
11571 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011572 countingStream->clearPool();
11573 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011574 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011575 mImpl->log("finish vkGetSwapchainImagesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011576 return vkGetSwapchainImagesKHR_VkResult_return;
11577}
11578
11579VkResult VkEncoder::vkAcquireNextImageKHR(
11580 VkDevice device,
11581 VkSwapchainKHR swapchain,
11582 uint64_t timeout,
11583 VkSemaphore semaphore,
11584 VkFence fence,
11585 uint32_t* pImageIndex)
11586{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011587 mImpl->log("start vkAcquireNextImageKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011588 auto stream = mImpl->stream();
11589 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011590 auto resources = mImpl->resources();
11591 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011592 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011593 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011594 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011595 uint64_t local_timeout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011596 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011597 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011598 local_device = device;
11599 local_swapchain = swapchain;
11600 local_timeout = timeout;
11601 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011602 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011603 countingStream->rewind();
11604 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011605 uint64_t cgen_var_826;
11606 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
11607 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
11608 uint64_t cgen_var_827;
11609 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_827, 1);
11610 countingStream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011611 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011612 uint64_t cgen_var_828;
11613 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_828, 1);
11614 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
11615 uint64_t cgen_var_829;
11616 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_829, 1);
11617 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011618 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11619 }
11620 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11621 countingStream->rewind();
11622 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
11623 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
11624 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011625 uint64_t cgen_var_830;
11626 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_830, 1);
11627 stream->write((uint64_t*)&cgen_var_830, 1 * 8);
11628 uint64_t cgen_var_831;
11629 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_831, 1);
11630 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011631 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011632 uint64_t cgen_var_832;
11633 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_832, 1);
11634 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
11635 uint64_t cgen_var_833;
11636 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_833, 1);
11637 stream->write((uint64_t*)&cgen_var_833, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011638 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11639 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
11640 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
11641 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011642 countingStream->clearPool();
11643 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011644 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011645 mImpl->log("finish vkAcquireNextImageKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011646 return vkAcquireNextImageKHR_VkResult_return;
11647}
11648
11649VkResult VkEncoder::vkQueuePresentKHR(
11650 VkQueue queue,
11651 const VkPresentInfoKHR* pPresentInfo)
11652{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011653 mImpl->log("start vkQueuePresentKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011654 auto stream = mImpl->stream();
11655 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011656 auto resources = mImpl->resources();
11657 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011658 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011659 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011660 VkPresentInfoKHR* local_pPresentInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011661 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011662 local_pPresentInfo = nullptr;
11663 if (pPresentInfo)
11664 {
11665 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
11666 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
11667 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011668 if (local_pPresentInfo)
11669 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011670 transform_tohost_VkPresentInfoKHR(mImpl->resources(), (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011671 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011672 countingStream->rewind();
11673 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011674 uint64_t cgen_var_834;
11675 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_834, 1);
11676 countingStream->write((uint64_t*)&cgen_var_834, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011677 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011678 }
11679 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11680 countingStream->rewind();
11681 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
11682 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
11683 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011684 uint64_t cgen_var_835;
11685 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_835, 1);
11686 stream->write((uint64_t*)&cgen_var_835, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011687 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011688 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
11689 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011690 countingStream->clearPool();
11691 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011692 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011693 mImpl->log("finish vkQueuePresentKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011694 return vkQueuePresentKHR_VkResult_return;
11695}
11696
11697VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
11698 VkDevice device,
11699 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
11700{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011701 mImpl->log("start vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011702 auto stream = mImpl->stream();
11703 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011704 auto resources = mImpl->resources();
11705 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011706 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011707 VkDevice local_device;
11708 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011709 countingStream->rewind();
11710 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011711 uint64_t cgen_var_836;
11712 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_836, 1);
11713 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011714 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11715 }
11716 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11717 countingStream->rewind();
11718 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
11719 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
11720 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011721 uint64_t cgen_var_837;
11722 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_837, 1);
11723 stream->write((uint64_t*)&cgen_var_837, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011724 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11725 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011726 if (pDeviceGroupPresentCapabilities)
11727 {
11728 transform_fromhost_VkDeviceGroupPresentCapabilitiesKHR(mImpl->resources(), (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11729 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011730 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
11731 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011732 countingStream->clearPool();
11733 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011734 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011735 mImpl->log("finish vkGetDeviceGroupPresentCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011736 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
11737}
11738
11739VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
11740 VkDevice device,
11741 VkSurfaceKHR surface,
11742 VkDeviceGroupPresentModeFlagsKHR* pModes)
11743{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011744 mImpl->log("start vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011745 auto stream = mImpl->stream();
11746 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011747 auto resources = mImpl->resources();
11748 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011749 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011750 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011751 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011752 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011753 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011754 countingStream->rewind();
11755 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011756 uint64_t cgen_var_838;
11757 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_838, 1);
11758 countingStream->write((uint64_t*)&cgen_var_838, 1 * 8);
11759 uint64_t cgen_var_839;
11760 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_839, 1);
11761 countingStream->write((uint64_t*)&cgen_var_839, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011762 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011763 uint64_t cgen_var_840 = (uint64_t)(uintptr_t)pModes;
11764 countingStream->putBe64(cgen_var_840);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011765 if (pModes)
11766 {
11767 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11768 }
11769 }
11770 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11771 countingStream->rewind();
11772 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
11773 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
11774 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011775 uint64_t cgen_var_841;
11776 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_841, 1);
11777 stream->write((uint64_t*)&cgen_var_841, 1 * 8);
11778 uint64_t cgen_var_842;
11779 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_842, 1);
11780 stream->write((uint64_t*)&cgen_var_842, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011781 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011782 uint64_t cgen_var_843 = (uint64_t)(uintptr_t)pModes;
11783 stream->putBe64(cgen_var_843);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011784 if (pModes)
11785 {
11786 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11787 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011788 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011789 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011790 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011791 if (pModes)
11792 {
11793 if (!(check_pModes))
11794 {
11795 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
11796 }
11797 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11798 }
11799 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11800 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011801 countingStream->clearPool();
11802 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011803 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011804 mImpl->log("finish vkGetDeviceGroupSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011805 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
11806}
11807
11808VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
11809 VkPhysicalDevice physicalDevice,
11810 VkSurfaceKHR surface,
11811 uint32_t* pRectCount,
11812 VkRect2D* pRects)
11813{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011814 mImpl->log("start vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011815 auto stream = mImpl->stream();
11816 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011817 auto resources = mImpl->resources();
11818 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011819 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011820 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011821 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011822 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011823 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011824 countingStream->rewind();
11825 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011826 uint64_t cgen_var_845;
11827 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_845, 1);
11828 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
11829 uint64_t cgen_var_846;
11830 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_846, 1);
11831 countingStream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011832 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011833 uint64_t cgen_var_847 = (uint64_t)(uintptr_t)pRectCount;
11834 countingStream->putBe64(cgen_var_847);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011835 if (pRectCount)
11836 {
11837 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11838 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011839 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011840 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pRects;
11841 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011842 if (pRects)
11843 {
11844 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11845 {
11846 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
11847 }
11848 }
11849 }
11850 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11851 countingStream->rewind();
11852 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
11853 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
11854 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011855 uint64_t cgen_var_849;
11856 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_849, 1);
11857 stream->write((uint64_t*)&cgen_var_849, 1 * 8);
11858 uint64_t cgen_var_850;
11859 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_850, 1);
11860 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011861 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011862 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pRectCount;
11863 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011864 if (pRectCount)
11865 {
11866 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11867 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011868 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011869 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pRects;
11870 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011871 if (pRects)
11872 {
11873 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11874 {
11875 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11876 }
11877 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011878 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011879 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011880 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011881 if (pRectCount)
11882 {
11883 if (!(check_pRectCount))
11884 {
11885 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
11886 }
11887 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
11888 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011889 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011890 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011891 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011892 if (pRects)
11893 {
11894 if (!(check_pRects))
11895 {
11896 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
11897 }
11898 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11899 {
11900 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11901 }
11902 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011903 if (pRects)
11904 {
11905 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11906 {
11907 transform_fromhost_VkRect2D(mImpl->resources(), (VkRect2D*)(pRects + i));
11908 }
11909 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011910 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
11911 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011912 countingStream->clearPool();
11913 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011914 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011915 mImpl->log("finish vkGetPhysicalDevicePresentRectanglesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011916 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
11917}
11918
11919VkResult VkEncoder::vkAcquireNextImage2KHR(
11920 VkDevice device,
11921 const VkAcquireNextImageInfoKHR* pAcquireInfo,
11922 uint32_t* pImageIndex)
11923{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011924 mImpl->log("start vkAcquireNextImage2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011925 auto stream = mImpl->stream();
11926 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011927 auto resources = mImpl->resources();
11928 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011929 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011930 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011931 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011932 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011933 local_pAcquireInfo = nullptr;
11934 if (pAcquireInfo)
11935 {
11936 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
11937 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
11938 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011939 if (local_pAcquireInfo)
11940 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011941 transform_tohost_VkAcquireNextImageInfoKHR(mImpl->resources(), (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011942 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011943 countingStream->rewind();
11944 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011945 uint64_t cgen_var_855;
11946 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_855, 1);
11947 countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011948 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011949 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11950 }
11951 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11952 countingStream->rewind();
11953 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
11954 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
11955 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011956 uint64_t cgen_var_856;
11957 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_856, 1);
11958 stream->write((uint64_t*)&cgen_var_856, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011959 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011960 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11961 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
11962 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
11963 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011964 countingStream->clearPool();
11965 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011966 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011967 mImpl->log("finish vkAcquireNextImage2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011968 return vkAcquireNextImage2KHR_VkResult_return;
11969}
11970
11971#endif
11972#ifdef VK_KHR_display
11973VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
11974 VkPhysicalDevice physicalDevice,
11975 uint32_t* pPropertyCount,
11976 VkDisplayPropertiesKHR* pProperties)
11977{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011978 mImpl->log("start vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011979 auto stream = mImpl->stream();
11980 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011981 auto resources = mImpl->resources();
11982 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011983 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011984 VkPhysicalDevice local_physicalDevice;
11985 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011986 countingStream->rewind();
11987 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011988 uint64_t cgen_var_857;
11989 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_857, 1);
11990 countingStream->write((uint64_t*)&cgen_var_857, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011991 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011992 uint64_t cgen_var_858 = (uint64_t)(uintptr_t)pPropertyCount;
11993 countingStream->putBe64(cgen_var_858);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011994 if (pPropertyCount)
11995 {
11996 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11997 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011998 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011999 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pProperties;
12000 countingStream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012001 if (pProperties)
12002 {
12003 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12004 {
12005 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
12006 }
12007 }
12008 }
12009 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12010 countingStream->rewind();
12011 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
12012 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
12013 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012014 uint64_t cgen_var_860;
12015 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_860, 1);
12016 stream->write((uint64_t*)&cgen_var_860, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012017 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012018 uint64_t cgen_var_861 = (uint64_t)(uintptr_t)pPropertyCount;
12019 stream->putBe64(cgen_var_861);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012020 if (pPropertyCount)
12021 {
12022 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12023 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012024 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012025 uint64_t cgen_var_862 = (uint64_t)(uintptr_t)pProperties;
12026 stream->putBe64(cgen_var_862);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012027 if (pProperties)
12028 {
12029 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12030 {
12031 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12032 }
12033 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012034 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012035 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012036 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012037 if (pPropertyCount)
12038 {
12039 if (!(check_pPropertyCount))
12040 {
12041 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12042 }
12043 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12044 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012045 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012046 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012047 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012048 if (pProperties)
12049 {
12050 if (!(check_pProperties))
12051 {
12052 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12053 }
12054 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12055 {
12056 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12057 }
12058 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012059 if (pProperties)
12060 {
12061 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12062 {
12063 transform_fromhost_VkDisplayPropertiesKHR(mImpl->resources(), (VkDisplayPropertiesKHR*)(pProperties + i));
12064 }
12065 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012066 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
12067 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012068 countingStream->clearPool();
12069 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012070 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012071 mImpl->log("finish vkGetPhysicalDeviceDisplayPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012072 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
12073}
12074
12075VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
12076 VkPhysicalDevice physicalDevice,
12077 uint32_t* pPropertyCount,
12078 VkDisplayPlanePropertiesKHR* pProperties)
12079{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012080 mImpl->log("start vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012081 auto stream = mImpl->stream();
12082 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012083 auto resources = mImpl->resources();
12084 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012085 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012086 VkPhysicalDevice local_physicalDevice;
12087 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012088 countingStream->rewind();
12089 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012090 uint64_t cgen_var_865;
12091 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_865, 1);
12092 countingStream->write((uint64_t*)&cgen_var_865, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012093 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012094 uint64_t cgen_var_866 = (uint64_t)(uintptr_t)pPropertyCount;
12095 countingStream->putBe64(cgen_var_866);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012096 if (pPropertyCount)
12097 {
12098 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12099 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012100 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012101 uint64_t cgen_var_867 = (uint64_t)(uintptr_t)pProperties;
12102 countingStream->putBe64(cgen_var_867);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012103 if (pProperties)
12104 {
12105 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12106 {
12107 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12108 }
12109 }
12110 }
12111 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12112 countingStream->rewind();
12113 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
12114 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
12115 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012116 uint64_t cgen_var_868;
12117 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_868, 1);
12118 stream->write((uint64_t*)&cgen_var_868, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012119 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012120 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pPropertyCount;
12121 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012122 if (pPropertyCount)
12123 {
12124 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12125 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012126 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012127 uint64_t cgen_var_870 = (uint64_t)(uintptr_t)pProperties;
12128 stream->putBe64(cgen_var_870);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012129 if (pProperties)
12130 {
12131 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12132 {
12133 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12134 }
12135 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012136 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012137 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012138 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012139 if (pPropertyCount)
12140 {
12141 if (!(check_pPropertyCount))
12142 {
12143 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12144 }
12145 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12146 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012147 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012148 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012149 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012150 if (pProperties)
12151 {
12152 if (!(check_pProperties))
12153 {
12154 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12155 }
12156 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12157 {
12158 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12159 }
12160 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012161 if (pProperties)
12162 {
12163 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12164 {
12165 transform_fromhost_VkDisplayPlanePropertiesKHR(mImpl->resources(), (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12166 }
12167 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012168 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
12169 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012170 countingStream->clearPool();
12171 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012172 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012173 mImpl->log("finish vkGetPhysicalDeviceDisplayPlanePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012174 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
12175}
12176
12177VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
12178 VkPhysicalDevice physicalDevice,
12179 uint32_t planeIndex,
12180 uint32_t* pDisplayCount,
12181 VkDisplayKHR* pDisplays)
12182{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012183 mImpl->log("start vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012184 auto stream = mImpl->stream();
12185 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012186 auto resources = mImpl->resources();
12187 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012188 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012189 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012190 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012191 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012192 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012193 countingStream->rewind();
12194 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012195 uint64_t cgen_var_873;
12196 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_873, 1);
12197 countingStream->write((uint64_t*)&cgen_var_873, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012198 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012199 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012200 uint64_t cgen_var_874 = (uint64_t)(uintptr_t)pDisplayCount;
12201 countingStream->putBe64(cgen_var_874);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012202 if (pDisplayCount)
12203 {
12204 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12205 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012206 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012207 uint64_t cgen_var_875 = (uint64_t)(uintptr_t)pDisplays;
12208 countingStream->putBe64(cgen_var_875);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012209 if (pDisplays)
12210 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012211 if ((*(pDisplayCount)))
12212 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012213 uint64_t* cgen_var_876;
12214 countingStream->alloc((void**)&cgen_var_876, (*(pDisplayCount)) * 8);
12215 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_876, (*(pDisplayCount)));
12216 countingStream->write((uint64_t*)cgen_var_876, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012217 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012218 }
12219 }
12220 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12221 countingStream->rewind();
12222 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
12223 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
12224 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012225 uint64_t cgen_var_877;
12226 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_877, 1);
12227 stream->write((uint64_t*)&cgen_var_877, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012228 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012229 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012230 uint64_t cgen_var_878 = (uint64_t)(uintptr_t)pDisplayCount;
12231 stream->putBe64(cgen_var_878);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012232 if (pDisplayCount)
12233 {
12234 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12235 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012236 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012237 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012238 uint64_t cgen_var_879 = (uint64_t)(uintptr_t)pDisplays;
12239 stream->putBe64(cgen_var_879);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012240 if (pDisplays)
12241 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012242 if ((*(pDisplayCount)))
12243 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012244 uint64_t* cgen_var_880;
12245 stream->alloc((void**)&cgen_var_880, (*(pDisplayCount)) * 8);
12246 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_880, (*(pDisplayCount)));
12247 stream->write((uint64_t*)cgen_var_880, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012248 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012249 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012250 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012251 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012252 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012253 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012254 if (pDisplayCount)
12255 {
12256 if (!(check_pDisplayCount))
12257 {
12258 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
12259 }
12260 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
12261 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012262 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012263 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012264 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012265 if (pDisplays)
12266 {
12267 if (!(check_pDisplays))
12268 {
12269 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
12270 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012271 if ((*(pDisplayCount)))
12272 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012273 uint64_t* cgen_var_883;
12274 stream->alloc((void**)&cgen_var_883, (*(pDisplayCount)) * 8);
12275 stream->read((uint64_t*)cgen_var_883, (*(pDisplayCount)) * 8);
12276 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_883, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012277 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012278 }
12279 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
12280 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012281 countingStream->clearPool();
12282 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012283 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012284 mImpl->log("finish vkGetDisplayPlaneSupportedDisplaysKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012285 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
12286}
12287
12288VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
12289 VkPhysicalDevice physicalDevice,
12290 VkDisplayKHR display,
12291 uint32_t* pPropertyCount,
12292 VkDisplayModePropertiesKHR* pProperties)
12293{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012294 mImpl->log("start vkGetDisplayModePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012295 auto stream = mImpl->stream();
12296 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012297 auto resources = mImpl->resources();
12298 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012299 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012300 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012301 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012302 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012303 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012304 countingStream->rewind();
12305 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012306 uint64_t cgen_var_884;
12307 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
12308 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
12309 uint64_t cgen_var_885;
12310 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
12311 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012312 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012313 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)pPropertyCount;
12314 countingStream->putBe64(cgen_var_886);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012315 if (pPropertyCount)
12316 {
12317 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12318 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012319 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012320 uint64_t cgen_var_887 = (uint64_t)(uintptr_t)pProperties;
12321 countingStream->putBe64(cgen_var_887);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012322 if (pProperties)
12323 {
12324 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12325 {
12326 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12327 }
12328 }
12329 }
12330 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12331 countingStream->rewind();
12332 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
12333 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
12334 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012335 uint64_t cgen_var_888;
12336 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
12337 stream->write((uint64_t*)&cgen_var_888, 1 * 8);
12338 uint64_t cgen_var_889;
12339 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
12340 stream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012341 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012342 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)pPropertyCount;
12343 stream->putBe64(cgen_var_890);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012344 if (pPropertyCount)
12345 {
12346 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12347 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012348 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012349 uint64_t cgen_var_891 = (uint64_t)(uintptr_t)pProperties;
12350 stream->putBe64(cgen_var_891);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012351 if (pProperties)
12352 {
12353 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12354 {
12355 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12356 }
12357 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012358 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012359 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012360 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012361 if (pPropertyCount)
12362 {
12363 if (!(check_pPropertyCount))
12364 {
12365 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12366 }
12367 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12368 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012369 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012370 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012371 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012372 if (pProperties)
12373 {
12374 if (!(check_pProperties))
12375 {
12376 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12377 }
12378 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12379 {
12380 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12381 }
12382 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012383 if (pProperties)
12384 {
12385 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12386 {
12387 transform_fromhost_VkDisplayModePropertiesKHR(mImpl->resources(), (VkDisplayModePropertiesKHR*)(pProperties + i));
12388 }
12389 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012390 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
12391 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012392 countingStream->clearPool();
12393 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012394 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012395 mImpl->log("finish vkGetDisplayModePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012396 return vkGetDisplayModePropertiesKHR_VkResult_return;
12397}
12398
12399VkResult VkEncoder::vkCreateDisplayModeKHR(
12400 VkPhysicalDevice physicalDevice,
12401 VkDisplayKHR display,
12402 const VkDisplayModeCreateInfoKHR* pCreateInfo,
12403 const VkAllocationCallbacks* pAllocator,
12404 VkDisplayModeKHR* pMode)
12405{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012406 mImpl->log("start vkCreateDisplayModeKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012407 auto stream = mImpl->stream();
12408 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012409 auto resources = mImpl->resources();
12410 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012411 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012412 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012413 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012414 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012415 VkAllocationCallbacks* local_pAllocator;
12416 local_physicalDevice = physicalDevice;
12417 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012418 local_pCreateInfo = nullptr;
12419 if (pCreateInfo)
12420 {
12421 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
12422 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
12423 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012424 local_pAllocator = nullptr;
12425 if (pAllocator)
12426 {
12427 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12428 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12429 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012430 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012431 if (local_pCreateInfo)
12432 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012433 transform_tohost_VkDisplayModeCreateInfoKHR(mImpl->resources(), (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012434 }
12435 if (local_pAllocator)
12436 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012437 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012438 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012439 countingStream->rewind();
12440 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012441 uint64_t cgen_var_894;
12442 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_894, 1);
12443 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
12444 uint64_t cgen_var_895;
12445 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_895, 1);
12446 countingStream->write((uint64_t*)&cgen_var_895, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012447 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012448 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012449 uint64_t cgen_var_896 = (uint64_t)(uintptr_t)local_pAllocator;
12450 countingStream->putBe64(cgen_var_896);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012451 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012452 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012453 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012454 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012455 uint64_t cgen_var_897;
12456 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_897, 1);
12457 countingStream->write((uint64_t*)&cgen_var_897, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012458 }
12459 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12460 countingStream->rewind();
12461 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
12462 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
12463 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012464 uint64_t cgen_var_898;
12465 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_898, 1);
12466 stream->write((uint64_t*)&cgen_var_898, 1 * 8);
12467 uint64_t cgen_var_899;
12468 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_899, 1);
12469 stream->write((uint64_t*)&cgen_var_899, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012470 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012471 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012472 uint64_t cgen_var_900 = (uint64_t)(uintptr_t)local_pAllocator;
12473 stream->putBe64(cgen_var_900);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012474 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012475 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012476 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012477 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012478 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012479 uint64_t cgen_var_901;
12480 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_901, 1);
12481 stream->write((uint64_t*)&cgen_var_901, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012482 stream->setHandleMapping(resources->unwrapMapping());
12483 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012484 uint64_t cgen_var_902;
12485 stream->read((uint64_t*)&cgen_var_902, 8);
12486 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_902, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012487 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012488 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
12489 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012490 countingStream->clearPool();
12491 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012492 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012493 mImpl->log("finish vkCreateDisplayModeKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012494 return vkCreateDisplayModeKHR_VkResult_return;
12495}
12496
12497VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
12498 VkPhysicalDevice physicalDevice,
12499 VkDisplayModeKHR mode,
12500 uint32_t planeIndex,
12501 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
12502{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012503 mImpl->log("start vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012504 auto stream = mImpl->stream();
12505 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012506 auto resources = mImpl->resources();
12507 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012508 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012509 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012510 VkDisplayModeKHR local_mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012511 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012512 local_physicalDevice = physicalDevice;
12513 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012514 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012515 countingStream->rewind();
12516 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012517 uint64_t cgen_var_903;
12518 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_903, 1);
12519 countingStream->write((uint64_t*)&cgen_var_903, 1 * 8);
12520 uint64_t cgen_var_904;
12521 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_904, 1);
12522 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012523 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012524 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12525 }
12526 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12527 countingStream->rewind();
12528 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
12529 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
12530 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012531 uint64_t cgen_var_905;
12532 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_905, 1);
12533 stream->write((uint64_t*)&cgen_var_905, 1 * 8);
12534 uint64_t cgen_var_906;
12535 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_906, 1);
12536 stream->write((uint64_t*)&cgen_var_906, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012537 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012538 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12539 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080012540 if (pCapabilities)
12541 {
12542 transform_fromhost_VkDisplayPlaneCapabilitiesKHR(mImpl->resources(), (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12543 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012544 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
12545 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012546 countingStream->clearPool();
12547 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012548 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012549 mImpl->log("finish vkGetDisplayPlaneCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012550 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
12551}
12552
12553VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
12554 VkInstance instance,
12555 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
12556 const VkAllocationCallbacks* pAllocator,
12557 VkSurfaceKHR* pSurface)
12558{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012559 mImpl->log("start vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012560 auto stream = mImpl->stream();
12561 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012562 auto resources = mImpl->resources();
12563 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012564 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012565 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012566 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012567 VkAllocationCallbacks* local_pAllocator;
12568 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012569 local_pCreateInfo = nullptr;
12570 if (pCreateInfo)
12571 {
12572 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
12573 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
12574 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012575 local_pAllocator = nullptr;
12576 if (pAllocator)
12577 {
12578 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12579 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12580 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012581 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012582 if (local_pCreateInfo)
12583 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012584 transform_tohost_VkDisplaySurfaceCreateInfoKHR(mImpl->resources(), (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012585 }
12586 if (local_pAllocator)
12587 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012588 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012589 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012590 countingStream->rewind();
12591 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012592 uint64_t cgen_var_907;
12593 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_907, 1);
12594 countingStream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012595 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012596 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012597 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
12598 countingStream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012599 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012600 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012601 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012602 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012603 uint64_t cgen_var_909;
12604 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_909, 1);
12605 countingStream->write((uint64_t*)&cgen_var_909, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012606 }
12607 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12608 countingStream->rewind();
12609 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
12610 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
12611 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012612 uint64_t cgen_var_910;
12613 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_910, 1);
12614 stream->write((uint64_t*)&cgen_var_910, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012615 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012616 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012617 uint64_t cgen_var_911 = (uint64_t)(uintptr_t)local_pAllocator;
12618 stream->putBe64(cgen_var_911);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012619 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012620 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012621 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012622 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012623 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012624 uint64_t cgen_var_912;
12625 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_912, 1);
12626 stream->write((uint64_t*)&cgen_var_912, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012627 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012628 uint64_t cgen_var_913;
12629 stream->read((uint64_t*)&cgen_var_913, 8);
12630 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_913, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012631 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
12632 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012633 countingStream->clearPool();
12634 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012635 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012636 mImpl->log("finish vkCreateDisplayPlaneSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012637 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
12638}
12639
12640#endif
12641#ifdef VK_KHR_display_swapchain
12642VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
12643 VkDevice device,
12644 uint32_t swapchainCount,
12645 const VkSwapchainCreateInfoKHR* pCreateInfos,
12646 const VkAllocationCallbacks* pAllocator,
12647 VkSwapchainKHR* pSwapchains)
12648{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012649 mImpl->log("start vkCreateSharedSwapchainsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012650 auto stream = mImpl->stream();
12651 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012652 auto resources = mImpl->resources();
12653 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012654 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012655 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012656 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012657 VkSwapchainCreateInfoKHR* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012658 VkAllocationCallbacks* local_pAllocator;
12659 local_device = device;
12660 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012661 local_pCreateInfos = nullptr;
12662 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012663 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012664 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012665 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12666 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012667 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012668 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012669 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012670 local_pAllocator = nullptr;
12671 if (pAllocator)
12672 {
12673 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12674 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12675 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012676 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012677 if (local_pCreateInfos)
12678 {
12679 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12680 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012681 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012682 }
12683 }
12684 if (local_pAllocator)
12685 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012686 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012687 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012688 countingStream->rewind();
12689 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012690 uint64_t cgen_var_914;
12691 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_914, 1);
12692 countingStream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012693 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
12694 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12695 {
12696 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
12697 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012698 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012699 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
12700 countingStream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012701 if (local_pAllocator)
12702 {
12703 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012704 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012705 if (((swapchainCount)))
12706 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012707 uint64_t* cgen_var_916;
12708 countingStream->alloc((void**)&cgen_var_916, ((swapchainCount)) * 8);
12709 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_916, ((swapchainCount)));
12710 countingStream->write((uint64_t*)cgen_var_916, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012711 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012712 }
12713 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12714 countingStream->rewind();
12715 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
12716 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
12717 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012718 uint64_t cgen_var_917;
12719 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_917, 1);
12720 stream->write((uint64_t*)&cgen_var_917, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012721 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012722 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12723 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012724 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012725 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012726 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012727 uint64_t cgen_var_918 = (uint64_t)(uintptr_t)local_pAllocator;
12728 stream->putBe64(cgen_var_918);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012729 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012730 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012731 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012732 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012733 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080012734 if (((swapchainCount)))
12735 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012736 uint64_t* cgen_var_919;
12737 stream->alloc((void**)&cgen_var_919, ((swapchainCount)) * 8);
12738 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_919, ((swapchainCount)));
12739 stream->write((uint64_t*)cgen_var_919, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012740 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012741 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080012742 if (((swapchainCount)))
12743 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012744 uint64_t* cgen_var_920;
12745 stream->alloc((void**)&cgen_var_920, ((swapchainCount)) * 8);
12746 stream->read((uint64_t*)cgen_var_920, ((swapchainCount)) * 8);
12747 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_920, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012748 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012749 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
12750 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012751 countingStream->clearPool();
12752 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012753 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012754 mImpl->log("finish vkCreateSharedSwapchainsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012755 return vkCreateSharedSwapchainsKHR_VkResult_return;
12756}
12757
12758#endif
12759#ifdef VK_KHR_xlib_surface
12760VkResult VkEncoder::vkCreateXlibSurfaceKHR(
12761 VkInstance instance,
12762 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
12763 const VkAllocationCallbacks* pAllocator,
12764 VkSurfaceKHR* pSurface)
12765{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012766 mImpl->log("start vkCreateXlibSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012767 auto stream = mImpl->stream();
12768 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012769 auto resources = mImpl->resources();
12770 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012771 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012772 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012773 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012774 VkAllocationCallbacks* local_pAllocator;
12775 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012776 local_pCreateInfo = nullptr;
12777 if (pCreateInfo)
12778 {
12779 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
12780 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
12781 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012782 local_pAllocator = nullptr;
12783 if (pAllocator)
12784 {
12785 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12786 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12787 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012788 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012789 if (local_pCreateInfo)
12790 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012791 transform_tohost_VkXlibSurfaceCreateInfoKHR(mImpl->resources(), (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012792 }
12793 if (local_pAllocator)
12794 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012795 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012796 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012797 countingStream->rewind();
12798 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012799 uint64_t cgen_var_921;
12800 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_921, 1);
12801 countingStream->write((uint64_t*)&cgen_var_921, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012802 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012803 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012804 uint64_t cgen_var_922 = (uint64_t)(uintptr_t)local_pAllocator;
12805 countingStream->putBe64(cgen_var_922);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012806 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012807 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012808 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012809 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012810 uint64_t cgen_var_923;
12811 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_923, 1);
12812 countingStream->write((uint64_t*)&cgen_var_923, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012813 }
12814 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12815 countingStream->rewind();
12816 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
12817 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
12818 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012819 uint64_t cgen_var_924;
12820 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_924, 1);
12821 stream->write((uint64_t*)&cgen_var_924, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012822 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012823 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012824 uint64_t cgen_var_925 = (uint64_t)(uintptr_t)local_pAllocator;
12825 stream->putBe64(cgen_var_925);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012826 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012827 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012828 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012829 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012830 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012831 uint64_t cgen_var_926;
12832 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_926, 1);
12833 stream->write((uint64_t*)&cgen_var_926, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012834 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012835 uint64_t cgen_var_927;
12836 stream->read((uint64_t*)&cgen_var_927, 8);
12837 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_927, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012838 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
12839 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012840 countingStream->clearPool();
12841 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012842 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012843 mImpl->log("finish vkCreateXlibSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012844 return vkCreateXlibSurfaceKHR_VkResult_return;
12845}
12846
12847VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
12848 VkPhysicalDevice physicalDevice,
12849 uint32_t queueFamilyIndex,
12850 Display* dpy,
12851 VisualID visualID)
12852{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012853 mImpl->log("start vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012854 auto stream = mImpl->stream();
12855 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012856 auto resources = mImpl->resources();
12857 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012858 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012859 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012860 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012861 VisualID local_visualID;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012862 local_physicalDevice = physicalDevice;
12863 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012864 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012865 countingStream->rewind();
12866 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012867 uint64_t cgen_var_928;
12868 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
12869 countingStream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012870 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012871 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012872 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012873 }
12874 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12875 countingStream->rewind();
12876 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
12877 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
12878 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012879 uint64_t cgen_var_929;
12880 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_929, 1);
12881 stream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012882 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012883 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012884 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012885 stream->read((Display*)dpy, sizeof(Display));
12886 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12887 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012888 countingStream->clearPool();
12889 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012890 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012891 mImpl->log("finish vkGetPhysicalDeviceXlibPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012892 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
12893}
12894
12895#endif
12896#ifdef VK_KHR_xcb_surface
12897VkResult VkEncoder::vkCreateXcbSurfaceKHR(
12898 VkInstance instance,
12899 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
12900 const VkAllocationCallbacks* pAllocator,
12901 VkSurfaceKHR* pSurface)
12902{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012903 mImpl->log("start vkCreateXcbSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012904 auto stream = mImpl->stream();
12905 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012906 auto resources = mImpl->resources();
12907 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012908 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012909 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012910 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012911 VkAllocationCallbacks* local_pAllocator;
12912 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012913 local_pCreateInfo = nullptr;
12914 if (pCreateInfo)
12915 {
12916 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
12917 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
12918 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012919 local_pAllocator = nullptr;
12920 if (pAllocator)
12921 {
12922 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12923 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12924 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012925 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012926 if (local_pCreateInfo)
12927 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012928 transform_tohost_VkXcbSurfaceCreateInfoKHR(mImpl->resources(), (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012929 }
12930 if (local_pAllocator)
12931 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012932 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012933 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012934 countingStream->rewind();
12935 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012936 uint64_t cgen_var_930;
12937 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_930, 1);
12938 countingStream->write((uint64_t*)&cgen_var_930, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012939 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012940 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012941 uint64_t cgen_var_931 = (uint64_t)(uintptr_t)local_pAllocator;
12942 countingStream->putBe64(cgen_var_931);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012943 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012944 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012945 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012946 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012947 uint64_t cgen_var_932;
12948 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_932, 1);
12949 countingStream->write((uint64_t*)&cgen_var_932, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012950 }
12951 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12952 countingStream->rewind();
12953 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
12954 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
12955 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012956 uint64_t cgen_var_933;
12957 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_933, 1);
12958 stream->write((uint64_t*)&cgen_var_933, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012959 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012960 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012961 uint64_t cgen_var_934 = (uint64_t)(uintptr_t)local_pAllocator;
12962 stream->putBe64(cgen_var_934);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012963 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012964 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012965 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012966 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012967 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012968 uint64_t cgen_var_935;
12969 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_935, 1);
12970 stream->write((uint64_t*)&cgen_var_935, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012971 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012972 uint64_t cgen_var_936;
12973 stream->read((uint64_t*)&cgen_var_936, 8);
12974 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_936, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012975 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
12976 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012977 countingStream->clearPool();
12978 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012979 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012980 mImpl->log("finish vkCreateXcbSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012981 return vkCreateXcbSurfaceKHR_VkResult_return;
12982}
12983
12984VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
12985 VkPhysicalDevice physicalDevice,
12986 uint32_t queueFamilyIndex,
12987 xcb_connection_t* connection,
12988 xcb_visualid_t visual_id)
12989{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012990 mImpl->log("start vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012991 auto stream = mImpl->stream();
12992 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012993 auto resources = mImpl->resources();
12994 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012995 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012996 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012997 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012998 xcb_visualid_t local_visual_id;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012999 local_physicalDevice = physicalDevice;
13000 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013001 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013002 countingStream->rewind();
13003 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013004 uint64_t cgen_var_937;
13005 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
13006 countingStream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013007 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013008 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013009 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013010 }
13011 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13012 countingStream->rewind();
13013 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
13014 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
13015 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013016 uint64_t cgen_var_938;
13017 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_938, 1);
13018 stream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013019 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013020 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013021 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013022 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
13023 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13024 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013025 countingStream->clearPool();
13026 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013027 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013028 mImpl->log("finish vkGetPhysicalDeviceXcbPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013029 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
13030}
13031
13032#endif
13033#ifdef VK_KHR_wayland_surface
13034VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
13035 VkInstance instance,
13036 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
13037 const VkAllocationCallbacks* pAllocator,
13038 VkSurfaceKHR* pSurface)
13039{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013040 mImpl->log("start vkCreateWaylandSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013041 auto stream = mImpl->stream();
13042 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013043 auto resources = mImpl->resources();
13044 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013045 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013046 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013047 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013048 VkAllocationCallbacks* local_pAllocator;
13049 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013050 local_pCreateInfo = nullptr;
13051 if (pCreateInfo)
13052 {
13053 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
13054 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
13055 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013056 local_pAllocator = nullptr;
13057 if (pAllocator)
13058 {
13059 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13060 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13061 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013062 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013063 if (local_pCreateInfo)
13064 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013065 transform_tohost_VkWaylandSurfaceCreateInfoKHR(mImpl->resources(), (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013066 }
13067 if (local_pAllocator)
13068 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013069 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013070 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013071 countingStream->rewind();
13072 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013073 uint64_t cgen_var_939;
13074 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_939, 1);
13075 countingStream->write((uint64_t*)&cgen_var_939, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013076 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013077 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013078 uint64_t cgen_var_940 = (uint64_t)(uintptr_t)local_pAllocator;
13079 countingStream->putBe64(cgen_var_940);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013080 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013081 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013082 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013083 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013084 uint64_t cgen_var_941;
13085 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_941, 1);
13086 countingStream->write((uint64_t*)&cgen_var_941, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013087 }
13088 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13089 countingStream->rewind();
13090 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
13091 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
13092 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013093 uint64_t cgen_var_942;
13094 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_942, 1);
13095 stream->write((uint64_t*)&cgen_var_942, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013096 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013097 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013098 uint64_t cgen_var_943 = (uint64_t)(uintptr_t)local_pAllocator;
13099 stream->putBe64(cgen_var_943);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013100 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013101 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013102 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013103 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013104 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013105 uint64_t cgen_var_944;
13106 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_944, 1);
13107 stream->write((uint64_t*)&cgen_var_944, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013108 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013109 uint64_t cgen_var_945;
13110 stream->read((uint64_t*)&cgen_var_945, 8);
13111 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_945, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013112 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
13113 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013114 countingStream->clearPool();
13115 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013116 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013117 mImpl->log("finish vkCreateWaylandSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013118 return vkCreateWaylandSurfaceKHR_VkResult_return;
13119}
13120
13121VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
13122 VkPhysicalDevice physicalDevice,
13123 uint32_t queueFamilyIndex,
13124 wl_display* display)
13125{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013126 mImpl->log("start vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013127 auto stream = mImpl->stream();
13128 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013129 auto resources = mImpl->resources();
13130 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013131 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013132 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013133 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013134 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013135 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013136 countingStream->rewind();
13137 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013138 uint64_t cgen_var_946;
13139 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
13140 countingStream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013141 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013142 countingStream->write((wl_display*)display, sizeof(wl_display));
13143 }
13144 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13145 countingStream->rewind();
13146 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
13147 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
13148 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013149 uint64_t cgen_var_947;
13150 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_947, 1);
13151 stream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013152 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013153 stream->write((wl_display*)display, sizeof(wl_display));
13154 stream->read((wl_display*)display, sizeof(wl_display));
13155 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13156 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013157 countingStream->clearPool();
13158 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013159 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013160 mImpl->log("finish vkGetPhysicalDeviceWaylandPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013161 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
13162}
13163
13164#endif
13165#ifdef VK_KHR_mir_surface
13166VkResult VkEncoder::vkCreateMirSurfaceKHR(
13167 VkInstance instance,
13168 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
13169 const VkAllocationCallbacks* pAllocator,
13170 VkSurfaceKHR* pSurface)
13171{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013172 mImpl->log("start vkCreateMirSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013173 auto stream = mImpl->stream();
13174 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013175 auto resources = mImpl->resources();
13176 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013177 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013178 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013179 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013180 VkAllocationCallbacks* local_pAllocator;
13181 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013182 local_pCreateInfo = nullptr;
13183 if (pCreateInfo)
13184 {
13185 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
13186 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
13187 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013188 local_pAllocator = nullptr;
13189 if (pAllocator)
13190 {
13191 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13192 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13193 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013194 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013195 if (local_pCreateInfo)
13196 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013197 transform_tohost_VkMirSurfaceCreateInfoKHR(mImpl->resources(), (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013198 }
13199 if (local_pAllocator)
13200 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013201 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013202 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013203 countingStream->rewind();
13204 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013205 uint64_t cgen_var_948;
13206 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_948, 1);
13207 countingStream->write((uint64_t*)&cgen_var_948, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013208 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013209 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013210 uint64_t cgen_var_949 = (uint64_t)(uintptr_t)local_pAllocator;
13211 countingStream->putBe64(cgen_var_949);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013212 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013213 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013214 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013215 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013216 uint64_t cgen_var_950;
13217 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_950, 1);
13218 countingStream->write((uint64_t*)&cgen_var_950, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013219 }
13220 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13221 countingStream->rewind();
13222 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
13223 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
13224 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013225 uint64_t cgen_var_951;
13226 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_951, 1);
13227 stream->write((uint64_t*)&cgen_var_951, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013228 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013229 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013230 uint64_t cgen_var_952 = (uint64_t)(uintptr_t)local_pAllocator;
13231 stream->putBe64(cgen_var_952);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013232 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013233 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013234 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013235 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013236 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013237 uint64_t cgen_var_953;
13238 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_953, 1);
13239 stream->write((uint64_t*)&cgen_var_953, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013240 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013241 uint64_t cgen_var_954;
13242 stream->read((uint64_t*)&cgen_var_954, 8);
13243 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_954, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013244 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
13245 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013246 countingStream->clearPool();
13247 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013248 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013249 mImpl->log("finish vkCreateMirSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013250 return vkCreateMirSurfaceKHR_VkResult_return;
13251}
13252
13253VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
13254 VkPhysicalDevice physicalDevice,
13255 uint32_t queueFamilyIndex,
13256 MirConnection* connection)
13257{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013258 mImpl->log("start vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013259 auto stream = mImpl->stream();
13260 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013261 auto resources = mImpl->resources();
13262 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013263 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013264 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013265 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013266 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013267 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013268 countingStream->rewind();
13269 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013270 uint64_t cgen_var_955;
13271 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_955, 1);
13272 countingStream->write((uint64_t*)&cgen_var_955, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013273 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013274 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
13275 }
13276 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13277 countingStream->rewind();
13278 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
13279 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
13280 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013281 uint64_t cgen_var_956;
13282 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_956, 1);
13283 stream->write((uint64_t*)&cgen_var_956, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013284 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013285 stream->write((MirConnection*)connection, sizeof(MirConnection));
13286 stream->read((MirConnection*)connection, sizeof(MirConnection));
13287 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13288 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013289 countingStream->clearPool();
13290 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013291 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013292 mImpl->log("finish vkGetPhysicalDeviceMirPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013293 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
13294}
13295
13296#endif
13297#ifdef VK_KHR_android_surface
13298VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
13299 VkInstance instance,
13300 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
13301 const VkAllocationCallbacks* pAllocator,
13302 VkSurfaceKHR* pSurface)
13303{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013304 mImpl->log("start vkCreateAndroidSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013305 auto stream = mImpl->stream();
13306 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013307 auto resources = mImpl->resources();
13308 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013309 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013310 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013311 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013312 VkAllocationCallbacks* local_pAllocator;
13313 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013314 local_pCreateInfo = nullptr;
13315 if (pCreateInfo)
13316 {
13317 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
13318 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
13319 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013320 local_pAllocator = nullptr;
13321 if (pAllocator)
13322 {
13323 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13324 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13325 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013326 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013327 if (local_pCreateInfo)
13328 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013329 transform_tohost_VkAndroidSurfaceCreateInfoKHR(mImpl->resources(), (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013330 }
13331 if (local_pAllocator)
13332 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013333 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013334 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013335 countingStream->rewind();
13336 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013337 uint64_t cgen_var_957;
13338 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
13339 countingStream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013340 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013341 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013342 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
13343 countingStream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013344 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013345 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013346 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013347 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013348 uint64_t cgen_var_959;
13349 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
13350 countingStream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013351 }
13352 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13353 countingStream->rewind();
13354 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
13355 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
13356 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013357 uint64_t cgen_var_960;
13358 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_960, 1);
13359 stream->write((uint64_t*)&cgen_var_960, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013360 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013361 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013362 uint64_t cgen_var_961 = (uint64_t)(uintptr_t)local_pAllocator;
13363 stream->putBe64(cgen_var_961);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013364 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013365 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013366 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013367 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013368 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013369 uint64_t cgen_var_962;
13370 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_962, 1);
13371 stream->write((uint64_t*)&cgen_var_962, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013372 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013373 uint64_t cgen_var_963;
13374 stream->read((uint64_t*)&cgen_var_963, 8);
13375 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_963, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013376 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
13377 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013378 countingStream->clearPool();
13379 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013380 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013381 mImpl->log("finish vkCreateAndroidSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013382 return vkCreateAndroidSurfaceKHR_VkResult_return;
13383}
13384
13385#endif
13386#ifdef VK_KHR_win32_surface
13387VkResult VkEncoder::vkCreateWin32SurfaceKHR(
13388 VkInstance instance,
13389 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
13390 const VkAllocationCallbacks* pAllocator,
13391 VkSurfaceKHR* pSurface)
13392{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013393 mImpl->log("start vkCreateWin32SurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013394 auto stream = mImpl->stream();
13395 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013396 auto resources = mImpl->resources();
13397 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013398 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013399 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013400 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013401 VkAllocationCallbacks* local_pAllocator;
13402 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013403 local_pCreateInfo = nullptr;
13404 if (pCreateInfo)
13405 {
13406 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
13407 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
13408 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013409 local_pAllocator = nullptr;
13410 if (pAllocator)
13411 {
13412 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13413 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13414 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013415 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013416 if (local_pCreateInfo)
13417 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013418 transform_tohost_VkWin32SurfaceCreateInfoKHR(mImpl->resources(), (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013419 }
13420 if (local_pAllocator)
13421 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013422 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013423 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013424 countingStream->rewind();
13425 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013426 uint64_t cgen_var_964;
13427 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_964, 1);
13428 countingStream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013429 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013430 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013431 uint64_t cgen_var_965 = (uint64_t)(uintptr_t)local_pAllocator;
13432 countingStream->putBe64(cgen_var_965);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013433 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013434 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013435 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013436 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013437 uint64_t cgen_var_966;
13438 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_966, 1);
13439 countingStream->write((uint64_t*)&cgen_var_966, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013440 }
13441 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13442 countingStream->rewind();
13443 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
13444 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
13445 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013446 uint64_t cgen_var_967;
13447 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_967, 1);
13448 stream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013449 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013450 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013451 uint64_t cgen_var_968 = (uint64_t)(uintptr_t)local_pAllocator;
13452 stream->putBe64(cgen_var_968);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013453 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013454 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013455 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013456 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013457 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013458 uint64_t cgen_var_969;
13459 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_969, 1);
13460 stream->write((uint64_t*)&cgen_var_969, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013461 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013462 uint64_t cgen_var_970;
13463 stream->read((uint64_t*)&cgen_var_970, 8);
13464 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_970, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013465 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
13466 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013467 countingStream->clearPool();
13468 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013469 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013470 mImpl->log("finish vkCreateWin32SurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013471 return vkCreateWin32SurfaceKHR_VkResult_return;
13472}
13473
13474VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
13475 VkPhysicalDevice physicalDevice,
13476 uint32_t queueFamilyIndex)
13477{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013478 mImpl->log("start vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013479 auto stream = mImpl->stream();
13480 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013481 auto resources = mImpl->resources();
13482 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013483 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013484 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013485 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013486 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013487 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013488 countingStream->rewind();
13489 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013490 uint64_t cgen_var_971;
13491 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
13492 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013493 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013494 }
13495 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13496 countingStream->rewind();
13497 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
13498 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
13499 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013500 uint64_t cgen_var_972;
13501 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_972, 1);
13502 stream->write((uint64_t*)&cgen_var_972, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013503 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013504 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
13505 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013506 countingStream->clearPool();
13507 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013508 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013509 mImpl->log("finish vkGetPhysicalDeviceWin32PresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013510 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
13511}
13512
13513#endif
13514#ifdef VK_KHR_sampler_mirror_clamp_to_edge
13515#endif
13516#ifdef VK_KHR_multiview
13517#endif
13518#ifdef VK_KHR_get_physical_device_properties2
13519void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
13520 VkPhysicalDevice physicalDevice,
13521 VkPhysicalDeviceFeatures2* pFeatures)
13522{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013523 mImpl->log("start vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013524 auto stream = mImpl->stream();
13525 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013526 auto resources = mImpl->resources();
13527 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013528 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013529 VkPhysicalDevice local_physicalDevice;
13530 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013531 countingStream->rewind();
13532 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013533 uint64_t cgen_var_973;
13534 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_973, 1);
13535 countingStream->write((uint64_t*)&cgen_var_973, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013536 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
13537 }
13538 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13539 countingStream->rewind();
13540 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
13541 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
13542 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013543 uint64_t cgen_var_974;
13544 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
13545 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013546 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
13547 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013548 if (pFeatures)
13549 {
13550 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
13551 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013552 mImpl->log("finish vkGetPhysicalDeviceFeatures2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013553}
13554
13555void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
13556 VkPhysicalDevice physicalDevice,
13557 VkPhysicalDeviceProperties2* pProperties)
13558{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013559 mImpl->log("start vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013560 auto stream = mImpl->stream();
13561 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013562 auto resources = mImpl->resources();
13563 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013564 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013565 VkPhysicalDevice local_physicalDevice;
13566 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013567 countingStream->rewind();
13568 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013569 uint64_t cgen_var_975;
13570 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_975, 1);
13571 countingStream->write((uint64_t*)&cgen_var_975, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013572 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
13573 }
13574 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13575 countingStream->rewind();
13576 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
13577 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
13578 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013579 uint64_t cgen_var_976;
13580 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_976, 1);
13581 stream->write((uint64_t*)&cgen_var_976, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013582 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
13583 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013584 if (pProperties)
13585 {
13586 transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
13587 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013588 mImpl->log("finish vkGetPhysicalDeviceProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013589}
13590
13591void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
13592 VkPhysicalDevice physicalDevice,
13593 VkFormat format,
13594 VkFormatProperties2* pFormatProperties)
13595{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013596 mImpl->log("start vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013597 auto stream = mImpl->stream();
13598 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013599 auto resources = mImpl->resources();
13600 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013601 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013602 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013603 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013604 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013605 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013606 countingStream->rewind();
13607 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013608 uint64_t cgen_var_977;
13609 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_977, 1);
13610 countingStream->write((uint64_t*)&cgen_var_977, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013611 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013612 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
13613 }
13614 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13615 countingStream->rewind();
13616 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
13617 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
13618 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013619 uint64_t cgen_var_978;
13620 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_978, 1);
13621 stream->write((uint64_t*)&cgen_var_978, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013622 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013623 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
13624 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013625 if (pFormatProperties)
13626 {
13627 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
13628 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013629 mImpl->log("finish vkGetPhysicalDeviceFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013630}
13631
13632VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
13633 VkPhysicalDevice physicalDevice,
13634 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
13635 VkImageFormatProperties2* pImageFormatProperties)
13636{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013637 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013638 auto stream = mImpl->stream();
13639 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013640 auto resources = mImpl->resources();
13641 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013642 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013643 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013644 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013645 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013646 local_pImageFormatInfo = nullptr;
13647 if (pImageFormatInfo)
13648 {
13649 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
13650 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
13651 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013652 if (local_pImageFormatInfo)
13653 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013654 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013655 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013656 countingStream->rewind();
13657 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013658 uint64_t cgen_var_979;
13659 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
13660 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013661 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013662 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
13663 }
13664 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13665 countingStream->rewind();
13666 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
13667 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
13668 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013669 uint64_t cgen_var_980;
13670 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
13671 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013672 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013673 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
13674 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013675 if (pImageFormatProperties)
13676 {
13677 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
13678 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013679 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
13680 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013681 countingStream->clearPool();
13682 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013683 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013684 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013685 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
13686}
13687
13688void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
13689 VkPhysicalDevice physicalDevice,
13690 uint32_t* pQueueFamilyPropertyCount,
13691 VkQueueFamilyProperties2* pQueueFamilyProperties)
13692{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013693 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013694 auto stream = mImpl->stream();
13695 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013696 auto resources = mImpl->resources();
13697 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013698 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013699 VkPhysicalDevice local_physicalDevice;
13700 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013701 countingStream->rewind();
13702 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013703 uint64_t cgen_var_981;
13704 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
13705 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013706 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013707 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
13708 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013709 if (pQueueFamilyPropertyCount)
13710 {
13711 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13712 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013713 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013714 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
13715 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013716 if (pQueueFamilyProperties)
13717 {
13718 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13719 {
13720 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13721 }
13722 }
13723 }
13724 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13725 countingStream->rewind();
13726 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
13727 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
13728 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013729 uint64_t cgen_var_984;
13730 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
13731 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013732 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013733 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
13734 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013735 if (pQueueFamilyPropertyCount)
13736 {
13737 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13738 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013739 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013740 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
13741 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013742 if (pQueueFamilyProperties)
13743 {
13744 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13745 {
13746 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13747 }
13748 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013749 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013750 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013751 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013752 if (pQueueFamilyPropertyCount)
13753 {
13754 if (!(check_pQueueFamilyPropertyCount))
13755 {
13756 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
13757 }
13758 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13759 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013760 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013761 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013762 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013763 if (pQueueFamilyProperties)
13764 {
13765 if (!(check_pQueueFamilyProperties))
13766 {
13767 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
13768 }
13769 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13770 {
13771 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13772 }
13773 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080013774 if (pQueueFamilyProperties)
13775 {
13776 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13777 {
13778 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13779 }
13780 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013781 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013782}
13783
13784void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
13785 VkPhysicalDevice physicalDevice,
13786 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
13787{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013788 mImpl->log("start vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013789 auto stream = mImpl->stream();
13790 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013791 auto resources = mImpl->resources();
13792 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013793 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013794 VkPhysicalDevice local_physicalDevice;
13795 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013796 countingStream->rewind();
13797 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013798 uint64_t cgen_var_989;
13799 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_989, 1);
13800 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013801 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13802 }
13803 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13804 countingStream->rewind();
13805 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
13806 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
13807 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013808 uint64_t cgen_var_990;
13809 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_990, 1);
13810 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013811 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13812 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013813 if (pMemoryProperties)
13814 {
13815 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13816 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013817 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2KHR(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013818 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013819}
13820
13821void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
13822 VkPhysicalDevice physicalDevice,
13823 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
13824 uint32_t* pPropertyCount,
13825 VkSparseImageFormatProperties2* pProperties)
13826{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013827 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013828 auto stream = mImpl->stream();
13829 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013830 auto resources = mImpl->resources();
13831 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013832 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013833 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013834 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013835 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013836 local_pFormatInfo = nullptr;
13837 if (pFormatInfo)
13838 {
13839 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
13840 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
13841 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013842 if (local_pFormatInfo)
13843 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013844 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013845 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013846 countingStream->rewind();
13847 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013848 uint64_t cgen_var_991;
13849 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_991, 1);
13850 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013851 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013852 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013853 uint64_t cgen_var_992 = (uint64_t)(uintptr_t)pPropertyCount;
13854 countingStream->putBe64(cgen_var_992);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013855 if (pPropertyCount)
13856 {
13857 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13858 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013859 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013860 uint64_t cgen_var_993 = (uint64_t)(uintptr_t)pProperties;
13861 countingStream->putBe64(cgen_var_993);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013862 if (pProperties)
13863 {
13864 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13865 {
13866 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
13867 }
13868 }
13869 }
13870 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13871 countingStream->rewind();
13872 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
13873 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
13874 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013875 uint64_t cgen_var_994;
13876 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_994, 1);
13877 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013878 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013879 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013880 uint64_t cgen_var_995 = (uint64_t)(uintptr_t)pPropertyCount;
13881 stream->putBe64(cgen_var_995);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013882 if (pPropertyCount)
13883 {
13884 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13885 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013886 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013887 uint64_t cgen_var_996 = (uint64_t)(uintptr_t)pProperties;
13888 stream->putBe64(cgen_var_996);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013889 if (pProperties)
13890 {
13891 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13892 {
13893 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13894 }
13895 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013896 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013897 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013898 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013899 if (pPropertyCount)
13900 {
13901 if (!(check_pPropertyCount))
13902 {
13903 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
13904 }
13905 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
13906 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013907 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013908 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013909 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013910 if (pProperties)
13911 {
13912 if (!(check_pProperties))
13913 {
13914 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
13915 }
13916 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13917 {
13918 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13919 }
13920 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080013921 if (pProperties)
13922 {
13923 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13924 {
13925 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
13926 }
13927 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013928 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013929}
13930
13931#endif
13932#ifdef VK_KHR_device_group
13933void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
13934 VkDevice device,
13935 uint32_t heapIndex,
13936 uint32_t localDeviceIndex,
13937 uint32_t remoteDeviceIndex,
13938 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
13939{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013940 mImpl->log("start vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013941 auto stream = mImpl->stream();
13942 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013943 auto resources = mImpl->resources();
13944 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013945 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013946 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013947 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013948 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013949 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013950 local_device = device;
13951 local_heapIndex = heapIndex;
13952 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013953 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013954 countingStream->rewind();
13955 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013956 uint64_t cgen_var_999;
13957 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_999, 1);
13958 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013959 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13960 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13961 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013962 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13963 }
13964 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13965 countingStream->rewind();
13966 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
13967 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
13968 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013969 uint64_t cgen_var_1000;
13970 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1000, 1);
13971 stream->write((uint64_t*)&cgen_var_1000, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013972 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13973 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13974 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013975 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13976 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013977 mImpl->log("finish vkGetDeviceGroupPeerMemoryFeaturesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013978}
13979
13980void VkEncoder::vkCmdSetDeviceMaskKHR(
13981 VkCommandBuffer commandBuffer,
13982 uint32_t deviceMask)
13983{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013984 mImpl->log("start vkCmdSetDeviceMaskKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013985 auto stream = mImpl->stream();
13986 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013987 auto resources = mImpl->resources();
13988 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013989 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013990 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013991 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013992 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013993 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013994 countingStream->rewind();
13995 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013996 uint64_t cgen_var_1001;
13997 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1001, 1);
13998 countingStream->write((uint64_t*)&cgen_var_1001, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013999 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014000 }
14001 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14002 countingStream->rewind();
14003 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
14004 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
14005 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014006 uint64_t cgen_var_1002;
14007 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1002, 1);
14008 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014009 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014010 mImpl->log("finish vkCmdSetDeviceMaskKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014011}
14012
14013void VkEncoder::vkCmdDispatchBaseKHR(
14014 VkCommandBuffer commandBuffer,
14015 uint32_t baseGroupX,
14016 uint32_t baseGroupY,
14017 uint32_t baseGroupZ,
14018 uint32_t groupCountX,
14019 uint32_t groupCountY,
14020 uint32_t groupCountZ)
14021{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014022 mImpl->log("start vkCmdDispatchBaseKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014023 auto stream = mImpl->stream();
14024 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014025 auto resources = mImpl->resources();
14026 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014027 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014028 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014029 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014030 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014031 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014032 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014033 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014034 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014035 local_commandBuffer = commandBuffer;
14036 local_baseGroupX = baseGroupX;
14037 local_baseGroupY = baseGroupY;
14038 local_baseGroupZ = baseGroupZ;
14039 local_groupCountX = groupCountX;
14040 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014041 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014042 countingStream->rewind();
14043 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014044 uint64_t cgen_var_1003;
14045 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1003, 1);
14046 countingStream->write((uint64_t*)&cgen_var_1003, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014047 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14048 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14049 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14050 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14051 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14052 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014053 }
14054 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14055 countingStream->rewind();
14056 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
14057 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
14058 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014059 uint64_t cgen_var_1004;
14060 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1004, 1);
14061 stream->write((uint64_t*)&cgen_var_1004, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014062 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14063 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14064 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14065 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14066 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14067 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014068 mImpl->log("finish vkCmdDispatchBaseKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014069}
14070
14071#endif
14072#ifdef VK_KHR_shader_draw_parameters
14073#endif
14074#ifdef VK_KHR_maintenance1
14075void VkEncoder::vkTrimCommandPoolKHR(
14076 VkDevice device,
14077 VkCommandPool commandPool,
14078 VkCommandPoolTrimFlags flags)
14079{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014080 mImpl->log("start vkTrimCommandPoolKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014081 auto stream = mImpl->stream();
14082 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014083 auto resources = mImpl->resources();
14084 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014085 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014086 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014087 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014088 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014089 local_device = device;
14090 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014091 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014092 countingStream->rewind();
14093 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014094 uint64_t cgen_var_1005;
14095 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1005, 1);
14096 countingStream->write((uint64_t*)&cgen_var_1005, 1 * 8);
14097 uint64_t cgen_var_1006;
14098 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1006, 1);
14099 countingStream->write((uint64_t*)&cgen_var_1006, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014100 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014101 }
14102 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14103 countingStream->rewind();
14104 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
14105 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
14106 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014107 uint64_t cgen_var_1007;
14108 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1007, 1);
14109 stream->write((uint64_t*)&cgen_var_1007, 1 * 8);
14110 uint64_t cgen_var_1008;
14111 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1008, 1);
14112 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014113 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014114 mImpl->log("finish vkTrimCommandPoolKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014115}
14116
14117#endif
14118#ifdef VK_KHR_device_group_creation
14119VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
14120 VkInstance instance,
14121 uint32_t* pPhysicalDeviceGroupCount,
14122 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
14123{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014124 mImpl->log("start vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014125 auto stream = mImpl->stream();
14126 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014127 auto resources = mImpl->resources();
14128 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014129 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014130 VkInstance local_instance;
14131 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014132 countingStream->rewind();
14133 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014134 uint64_t cgen_var_1009;
14135 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1009, 1);
14136 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014137 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014138 uint64_t cgen_var_1010 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14139 countingStream->putBe64(cgen_var_1010);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014140 if (pPhysicalDeviceGroupCount)
14141 {
14142 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14143 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014144 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014145 uint64_t cgen_var_1011 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14146 countingStream->putBe64(cgen_var_1011);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014147 if (pPhysicalDeviceGroupProperties)
14148 {
14149 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14150 {
14151 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14152 }
14153 }
14154 }
14155 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14156 countingStream->rewind();
14157 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
14158 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
14159 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014160 uint64_t cgen_var_1012;
14161 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1012, 1);
14162 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014163 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014164 uint64_t cgen_var_1013 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14165 stream->putBe64(cgen_var_1013);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014166 if (pPhysicalDeviceGroupCount)
14167 {
14168 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14169 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014170 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014171 uint64_t cgen_var_1014 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14172 stream->putBe64(cgen_var_1014);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014173 if (pPhysicalDeviceGroupProperties)
14174 {
14175 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14176 {
14177 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14178 }
14179 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014180 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014181 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014182 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014183 if (pPhysicalDeviceGroupCount)
14184 {
14185 if (!(check_pPhysicalDeviceGroupCount))
14186 {
14187 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
14188 }
14189 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14190 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014191 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014192 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014193 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014194 if (pPhysicalDeviceGroupProperties)
14195 {
14196 if (!(check_pPhysicalDeviceGroupProperties))
14197 {
14198 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
14199 }
14200 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14201 {
14202 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14203 }
14204 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080014205 if (pPhysicalDeviceGroupProperties)
14206 {
14207 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14208 {
14209 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14210 }
14211 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014212 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
14213 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014214 countingStream->clearPool();
14215 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014216 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014217 mImpl->log("finish vkEnumeratePhysicalDeviceGroupsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014218 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
14219}
14220
14221#endif
14222#ifdef VK_KHR_external_memory_capabilities
14223void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
14224 VkPhysicalDevice physicalDevice,
14225 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
14226 VkExternalBufferProperties* pExternalBufferProperties)
14227{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014228 mImpl->log("start vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014229 auto stream = mImpl->stream();
14230 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014231 auto resources = mImpl->resources();
14232 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014233 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014234 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014235 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014236 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014237 local_pExternalBufferInfo = nullptr;
14238 if (pExternalBufferInfo)
14239 {
14240 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
14241 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
14242 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014243 if (local_pExternalBufferInfo)
14244 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014245 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014246 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014247 countingStream->rewind();
14248 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014249 uint64_t cgen_var_1017;
14250 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
14251 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014252 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014253 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14254 }
14255 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14256 countingStream->rewind();
14257 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
14258 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
14259 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014260 uint64_t cgen_var_1018;
14261 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
14262 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014263 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014264 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14265 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014266 if (pExternalBufferProperties)
14267 {
14268 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
14269 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014270 mImpl->log("finish vkGetPhysicalDeviceExternalBufferPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014271}
14272
14273#endif
14274#ifdef VK_KHR_external_memory
14275#endif
14276#ifdef VK_KHR_external_memory_win32
14277VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
14278 VkDevice device,
14279 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14280 HANDLE* pHandle)
14281{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014282 mImpl->log("start vkGetMemoryWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014283 auto stream = mImpl->stream();
14284 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014285 auto resources = mImpl->resources();
14286 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014287 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014288 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014289 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014290 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014291 local_pGetWin32HandleInfo = nullptr;
14292 if (pGetWin32HandleInfo)
14293 {
14294 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
14295 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14296 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014297 if (local_pGetWin32HandleInfo)
14298 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014299 transform_tohost_VkMemoryGetWin32HandleInfoKHR(mImpl->resources(), (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014300 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014301 countingStream->rewind();
14302 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014303 uint64_t cgen_var_1019;
14304 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
14305 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014306 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014307 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14308 }
14309 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14310 countingStream->rewind();
14311 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
14312 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
14313 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014314 uint64_t cgen_var_1020;
14315 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
14316 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014317 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014318 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14319 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14320 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
14321 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014322 countingStream->clearPool();
14323 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014324 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014325 mImpl->log("finish vkGetMemoryWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014326 return vkGetMemoryWin32HandleKHR_VkResult_return;
14327}
14328
14329VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
14330 VkDevice device,
14331 VkExternalMemoryHandleTypeFlagBits handleType,
14332 HANDLE handle,
14333 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
14334{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014335 mImpl->log("start vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014336 auto stream = mImpl->stream();
14337 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014338 auto resources = mImpl->resources();
14339 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014340 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014341 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014342 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014343 HANDLE local_handle;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014344 local_device = device;
14345 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014346 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014347 countingStream->rewind();
14348 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014349 uint64_t cgen_var_1021;
14350 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
14351 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014352 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14353 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014354 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14355 }
14356 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14357 countingStream->rewind();
14358 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
14359 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
14360 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014361 uint64_t cgen_var_1022;
14362 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
14363 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014364 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14365 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014366 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14367 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014368 if (pMemoryWin32HandleProperties)
14369 {
14370 transform_fromhost_VkMemoryWin32HandlePropertiesKHR(mImpl->resources(), (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14371 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014372 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
14373 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014374 countingStream->clearPool();
14375 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014376 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014377 mImpl->log("finish vkGetMemoryWin32HandlePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014378 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
14379}
14380
14381#endif
14382#ifdef VK_KHR_external_memory_fd
14383VkResult VkEncoder::vkGetMemoryFdKHR(
14384 VkDevice device,
14385 const VkMemoryGetFdInfoKHR* pGetFdInfo,
14386 int* pFd)
14387{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014388 mImpl->log("start vkGetMemoryFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014389 auto stream = mImpl->stream();
14390 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014391 auto resources = mImpl->resources();
14392 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014393 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014394 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014395 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014396 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014397 local_pGetFdInfo = nullptr;
14398 if (pGetFdInfo)
14399 {
14400 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
14401 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
14402 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014403 if (local_pGetFdInfo)
14404 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014405 transform_tohost_VkMemoryGetFdInfoKHR(mImpl->resources(), (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014406 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014407 countingStream->rewind();
14408 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014409 uint64_t cgen_var_1023;
14410 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
14411 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014412 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014413 countingStream->write((int*)pFd, sizeof(int));
14414 }
14415 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14416 countingStream->rewind();
14417 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
14418 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
14419 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014420 uint64_t cgen_var_1024;
14421 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
14422 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014423 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014424 stream->write((int*)pFd, sizeof(int));
14425 stream->read((int*)pFd, sizeof(int));
14426 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
14427 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014428 countingStream->clearPool();
14429 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014430 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014431 mImpl->log("finish vkGetMemoryFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014432 return vkGetMemoryFdKHR_VkResult_return;
14433}
14434
14435VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
14436 VkDevice device,
14437 VkExternalMemoryHandleTypeFlagBits handleType,
14438 int fd,
14439 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
14440{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014441 mImpl->log("start vkGetMemoryFdPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014442 auto stream = mImpl->stream();
14443 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014444 auto resources = mImpl->resources();
14445 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014446 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014447 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014448 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014449 int local_fd;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014450 local_device = device;
14451 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014452 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014453 countingStream->rewind();
14454 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014455 uint64_t cgen_var_1025;
14456 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
14457 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014458 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14459 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014460 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14461 }
14462 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14463 countingStream->rewind();
14464 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
14465 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
14466 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014467 uint64_t cgen_var_1026;
14468 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
14469 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014470 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14471 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014472 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14473 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014474 if (pMemoryFdProperties)
14475 {
14476 transform_fromhost_VkMemoryFdPropertiesKHR(mImpl->resources(), (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14477 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014478 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
14479 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014480 countingStream->clearPool();
14481 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014482 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014483 mImpl->log("finish vkGetMemoryFdPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014484 return vkGetMemoryFdPropertiesKHR_VkResult_return;
14485}
14486
14487#endif
14488#ifdef VK_KHR_win32_keyed_mutex
14489#endif
14490#ifdef VK_KHR_external_semaphore_capabilities
14491void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
14492 VkPhysicalDevice physicalDevice,
14493 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
14494 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
14495{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014496 mImpl->log("start vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014497 auto stream = mImpl->stream();
14498 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014499 auto resources = mImpl->resources();
14500 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014501 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014502 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014503 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014504 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014505 local_pExternalSemaphoreInfo = nullptr;
14506 if (pExternalSemaphoreInfo)
14507 {
14508 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
14509 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
14510 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014511 if (local_pExternalSemaphoreInfo)
14512 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014513 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014514 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014515 countingStream->rewind();
14516 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014517 uint64_t cgen_var_1027;
14518 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1027, 1);
14519 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014520 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014521 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14522 }
14523 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14524 countingStream->rewind();
14525 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
14526 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
14527 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014528 uint64_t cgen_var_1028;
14529 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1028, 1);
14530 stream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014531 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014532 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14533 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014534 if (pExternalSemaphoreProperties)
14535 {
14536 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14537 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014538 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014539}
14540
14541#endif
14542#ifdef VK_KHR_external_semaphore
14543#endif
14544#ifdef VK_KHR_external_semaphore_win32
14545VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
14546 VkDevice device,
14547 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
14548{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014549 mImpl->log("start vkImportSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014550 auto stream = mImpl->stream();
14551 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014552 auto resources = mImpl->resources();
14553 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014554 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014555 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014556 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014557 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014558 local_pImportSemaphoreWin32HandleInfo = nullptr;
14559 if (pImportSemaphoreWin32HandleInfo)
14560 {
14561 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
14562 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
14563 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014564 if (local_pImportSemaphoreWin32HandleInfo)
14565 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014566 transform_tohost_VkImportSemaphoreWin32HandleInfoKHR(mImpl->resources(), (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014567 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014568 countingStream->rewind();
14569 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014570 uint64_t cgen_var_1029;
14571 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1029, 1);
14572 countingStream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014573 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014574 }
14575 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14576 countingStream->rewind();
14577 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
14578 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
14579 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014580 uint64_t cgen_var_1030;
14581 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1030, 1);
14582 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014583 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014584 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
14585 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014586 countingStream->clearPool();
14587 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014588 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014589 mImpl->log("finish vkImportSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014590 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
14591}
14592
14593VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
14594 VkDevice device,
14595 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14596 HANDLE* pHandle)
14597{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014598 mImpl->log("start vkGetSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014599 auto stream = mImpl->stream();
14600 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014601 auto resources = mImpl->resources();
14602 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014603 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014604 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014605 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014606 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014607 local_pGetWin32HandleInfo = nullptr;
14608 if (pGetWin32HandleInfo)
14609 {
14610 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
14611 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14612 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014613 if (local_pGetWin32HandleInfo)
14614 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014615 transform_tohost_VkSemaphoreGetWin32HandleInfoKHR(mImpl->resources(), (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014616 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014617 countingStream->rewind();
14618 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014619 uint64_t cgen_var_1031;
14620 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1031, 1);
14621 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014622 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014623 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14624 }
14625 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14626 countingStream->rewind();
14627 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
14628 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
14629 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014630 uint64_t cgen_var_1032;
14631 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1032, 1);
14632 stream->write((uint64_t*)&cgen_var_1032, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014633 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014634 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14635 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14636 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
14637 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014638 countingStream->clearPool();
14639 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014640 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014641 mImpl->log("finish vkGetSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014642 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
14643}
14644
14645#endif
14646#ifdef VK_KHR_external_semaphore_fd
14647VkResult VkEncoder::vkImportSemaphoreFdKHR(
14648 VkDevice device,
14649 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
14650{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014651 mImpl->log("start vkImportSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014652 auto stream = mImpl->stream();
14653 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014654 auto resources = mImpl->resources();
14655 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014656 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014657 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014658 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014659 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014660 local_pImportSemaphoreFdInfo = nullptr;
14661 if (pImportSemaphoreFdInfo)
14662 {
14663 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
14664 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
14665 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014666 if (local_pImportSemaphoreFdInfo)
14667 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014668 transform_tohost_VkImportSemaphoreFdInfoKHR(mImpl->resources(), (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014669 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014670 countingStream->rewind();
14671 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014672 uint64_t cgen_var_1033;
14673 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1033, 1);
14674 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014675 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014676 }
14677 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14678 countingStream->rewind();
14679 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
14680 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
14681 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014682 uint64_t cgen_var_1034;
14683 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1034, 1);
14684 stream->write((uint64_t*)&cgen_var_1034, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014685 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014686 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
14687 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014688 countingStream->clearPool();
14689 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014690 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014691 mImpl->log("finish vkImportSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014692 return vkImportSemaphoreFdKHR_VkResult_return;
14693}
14694
14695VkResult VkEncoder::vkGetSemaphoreFdKHR(
14696 VkDevice device,
14697 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
14698 int* pFd)
14699{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014700 mImpl->log("start vkGetSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014701 auto stream = mImpl->stream();
14702 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014703 auto resources = mImpl->resources();
14704 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014705 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014706 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014707 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014708 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014709 local_pGetFdInfo = nullptr;
14710 if (pGetFdInfo)
14711 {
14712 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
14713 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
14714 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014715 if (local_pGetFdInfo)
14716 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014717 transform_tohost_VkSemaphoreGetFdInfoKHR(mImpl->resources(), (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014718 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014719 countingStream->rewind();
14720 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014721 uint64_t cgen_var_1035;
14722 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1035, 1);
14723 countingStream->write((uint64_t*)&cgen_var_1035, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014724 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014725 countingStream->write((int*)pFd, sizeof(int));
14726 }
14727 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14728 countingStream->rewind();
14729 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
14730 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
14731 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014732 uint64_t cgen_var_1036;
14733 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1036, 1);
14734 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014735 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014736 stream->write((int*)pFd, sizeof(int));
14737 stream->read((int*)pFd, sizeof(int));
14738 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
14739 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014740 countingStream->clearPool();
14741 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014742 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014743 mImpl->log("finish vkGetSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014744 return vkGetSemaphoreFdKHR_VkResult_return;
14745}
14746
14747#endif
14748#ifdef VK_KHR_push_descriptor
14749void VkEncoder::vkCmdPushDescriptorSetKHR(
14750 VkCommandBuffer commandBuffer,
14751 VkPipelineBindPoint pipelineBindPoint,
14752 VkPipelineLayout layout,
14753 uint32_t set,
14754 uint32_t descriptorWriteCount,
14755 const VkWriteDescriptorSet* pDescriptorWrites)
14756{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014757 mImpl->log("start vkCmdPushDescriptorSetKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014758 auto stream = mImpl->stream();
14759 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014760 auto resources = mImpl->resources();
14761 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014762 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014763 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014764 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014765 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014766 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014767 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014768 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014769 local_commandBuffer = commandBuffer;
14770 local_pipelineBindPoint = pipelineBindPoint;
14771 local_layout = layout;
14772 local_set = set;
14773 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014774 local_pDescriptorWrites = nullptr;
14775 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014776 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014777 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014778 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14779 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014780 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
14781 }
14782 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014783 if (local_pDescriptorWrites)
14784 {
14785 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14786 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014787 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014788 }
14789 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014790 countingStream->rewind();
14791 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014792 uint64_t cgen_var_1037;
14793 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1037, 1);
14794 countingStream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014795 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014796 uint64_t cgen_var_1038;
14797 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1038, 1);
14798 countingStream->write((uint64_t*)&cgen_var_1038, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014799 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
14800 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
14801 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14802 {
14803 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014804 }
14805 }
14806 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14807 countingStream->rewind();
14808 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
14809 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
14810 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014811 uint64_t cgen_var_1039;
14812 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1039, 1);
14813 stream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014814 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014815 uint64_t cgen_var_1040;
14816 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1040, 1);
14817 stream->write((uint64_t*)&cgen_var_1040, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014818 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
14819 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014820 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14821 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014822 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014823 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014824 mImpl->log("finish vkCmdPushDescriptorSetKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014825}
14826
14827void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
14828 VkCommandBuffer commandBuffer,
14829 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14830 VkPipelineLayout layout,
14831 uint32_t set,
14832 const void* pData)
14833{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014834 mImpl->log("start vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014835 auto stream = mImpl->stream();
14836 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014837 auto resources = mImpl->resources();
14838 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014839 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014840 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014841 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014842 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014843 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014844 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014845 local_commandBuffer = commandBuffer;
14846 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
14847 local_layout = layout;
14848 local_set = set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014849 local_pData = nullptr;
14850 if (pData)
14851 {
14852 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
14853 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014854 countingStream->rewind();
14855 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014856 uint64_t cgen_var_1041;
14857 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1041, 1);
14858 countingStream->write((uint64_t*)&cgen_var_1041, 1 * 8);
14859 uint64_t cgen_var_1042;
14860 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1042, 1);
14861 countingStream->write((uint64_t*)&cgen_var_1042, 1 * 8);
14862 uint64_t cgen_var_1043;
14863 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1043, 1);
14864 countingStream->write((uint64_t*)&cgen_var_1043, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014865 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014866 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014867 uint64_t cgen_var_1044 = (uint64_t)(uintptr_t)local_pData;
14868 countingStream->putBe64(cgen_var_1044);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014869 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014870 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014871 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014872 }
14873 }
14874 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14875 countingStream->rewind();
14876 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
14877 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
14878 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014879 uint64_t cgen_var_1045;
14880 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1045, 1);
14881 stream->write((uint64_t*)&cgen_var_1045, 1 * 8);
14882 uint64_t cgen_var_1046;
14883 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1046, 1);
14884 stream->write((uint64_t*)&cgen_var_1046, 1 * 8);
14885 uint64_t cgen_var_1047;
14886 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1047, 1);
14887 stream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014888 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014889 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014890 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pData;
14891 stream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014892 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014893 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014894 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014895 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014896 mImpl->log("finish vkCmdPushDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014897}
14898
14899#endif
14900#ifdef VK_KHR_16bit_storage
14901#endif
14902#ifdef VK_KHR_incremental_present
14903#endif
14904#ifdef VK_KHR_descriptor_update_template
14905VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
14906 VkDevice device,
14907 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
14908 const VkAllocationCallbacks* pAllocator,
14909 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
14910{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014911 mImpl->log("start vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014912 auto stream = mImpl->stream();
14913 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014914 auto resources = mImpl->resources();
14915 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014916 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014917 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014918 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014919 VkAllocationCallbacks* local_pAllocator;
14920 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014921 local_pCreateInfo = nullptr;
14922 if (pCreateInfo)
14923 {
14924 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
14925 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
14926 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014927 local_pAllocator = nullptr;
14928 if (pAllocator)
14929 {
14930 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14931 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14932 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014933 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014934 if (local_pCreateInfo)
14935 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014936 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014937 }
14938 if (local_pAllocator)
14939 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014940 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014941 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014942 countingStream->rewind();
14943 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014944 uint64_t cgen_var_1049;
14945 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
14946 countingStream->write((uint64_t*)&cgen_var_1049, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014947 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014948 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014949 uint64_t cgen_var_1050 = (uint64_t)(uintptr_t)local_pAllocator;
14950 countingStream->putBe64(cgen_var_1050);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014951 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014952 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014953 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014954 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014955 uint64_t cgen_var_1051;
14956 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1051, 1);
14957 countingStream->write((uint64_t*)&cgen_var_1051, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014958 }
14959 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14960 countingStream->rewind();
14961 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
14962 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
14963 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014964 uint64_t cgen_var_1052;
14965 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
14966 stream->write((uint64_t*)&cgen_var_1052, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014967 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014968 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014969 uint64_t cgen_var_1053 = (uint64_t)(uintptr_t)local_pAllocator;
14970 stream->putBe64(cgen_var_1053);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014971 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014972 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014973 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014974 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014975 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014976 uint64_t cgen_var_1054;
14977 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1054, 1);
14978 stream->write((uint64_t*)&cgen_var_1054, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014979 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014980 uint64_t cgen_var_1055;
14981 stream->read((uint64_t*)&cgen_var_1055, 8);
14982 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1055, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014983 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
14984 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014985 countingStream->clearPool();
14986 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014987 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014988 mImpl->log("finish vkCreateDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014989 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
14990}
14991
14992void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
14993 VkDevice device,
14994 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14995 const VkAllocationCallbacks* pAllocator)
14996{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014997 mImpl->log("start vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014998 auto stream = mImpl->stream();
14999 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015000 auto resources = mImpl->resources();
15001 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015002 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015003 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015004 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015005 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015006 local_device = device;
15007 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015008 local_pAllocator = nullptr;
15009 if (pAllocator)
15010 {
15011 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15012 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15013 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015014 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015015 if (local_pAllocator)
15016 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015017 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015018 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015019 countingStream->rewind();
15020 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015021 uint64_t cgen_var_1056;
15022 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
15023 countingStream->write((uint64_t*)&cgen_var_1056, 1 * 8);
15024 uint64_t cgen_var_1057;
15025 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1057, 1);
15026 countingStream->write((uint64_t*)&cgen_var_1057, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015027 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015028 uint64_t cgen_var_1058 = (uint64_t)(uintptr_t)local_pAllocator;
15029 countingStream->putBe64(cgen_var_1058);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015030 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015031 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015032 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015033 }
15034 }
15035 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15036 countingStream->rewind();
15037 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
15038 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
15039 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015040 uint64_t cgen_var_1059;
15041 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1059, 1);
15042 stream->write((uint64_t*)&cgen_var_1059, 1 * 8);
15043 uint64_t cgen_var_1060;
15044 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1060, 1);
15045 stream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015046 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015047 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
15048 stream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015049 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015050 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015051 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015052 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015053 mImpl->log("finish vkDestroyDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015054}
15055
15056void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
15057 VkDevice device,
15058 VkDescriptorSet descriptorSet,
15059 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15060 const void* pData)
15061{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015062 mImpl->log("start vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015063 auto stream = mImpl->stream();
15064 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015065 auto resources = mImpl->resources();
15066 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015067 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015068 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015069 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015070 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015071 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015072 local_device = device;
15073 local_descriptorSet = descriptorSet;
15074 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015075 local_pData = nullptr;
15076 if (pData)
15077 {
15078 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
15079 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015080 countingStream->rewind();
15081 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015082 uint64_t cgen_var_1062;
15083 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1062, 1);
15084 countingStream->write((uint64_t*)&cgen_var_1062, 1 * 8);
15085 uint64_t cgen_var_1063;
15086 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1063, 1);
15087 countingStream->write((uint64_t*)&cgen_var_1063, 1 * 8);
15088 uint64_t cgen_var_1064;
15089 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1064, 1);
15090 countingStream->write((uint64_t*)&cgen_var_1064, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015091 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015092 uint64_t cgen_var_1065 = (uint64_t)(uintptr_t)local_pData;
15093 countingStream->putBe64(cgen_var_1065);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015094 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015095 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015096 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015097 }
15098 }
15099 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15100 countingStream->rewind();
15101 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
15102 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
15103 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015104 uint64_t cgen_var_1066;
15105 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1066, 1);
15106 stream->write((uint64_t*)&cgen_var_1066, 1 * 8);
15107 uint64_t cgen_var_1067;
15108 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1067, 1);
15109 stream->write((uint64_t*)&cgen_var_1067, 1 * 8);
15110 uint64_t cgen_var_1068;
15111 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1068, 1);
15112 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015113 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015114 uint64_t cgen_var_1069 = (uint64_t)(uintptr_t)local_pData;
15115 stream->putBe64(cgen_var_1069);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015116 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015117 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015118 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015119 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015120 mImpl->log("finish vkUpdateDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015121}
15122
15123#endif
15124#ifdef VK_KHR_create_renderpass2
15125VkResult VkEncoder::vkCreateRenderPass2KHR(
15126 VkDevice device,
15127 const VkRenderPassCreateInfo2KHR* pCreateInfo,
15128 const VkAllocationCallbacks* pAllocator,
15129 VkRenderPass* pRenderPass)
15130{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015131 mImpl->log("start vkCreateRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015132 auto stream = mImpl->stream();
15133 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015134 auto resources = mImpl->resources();
15135 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015136 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015137 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015138 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015139 VkAllocationCallbacks* local_pAllocator;
15140 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015141 local_pCreateInfo = nullptr;
15142 if (pCreateInfo)
15143 {
15144 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
15145 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
15146 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015147 local_pAllocator = nullptr;
15148 if (pAllocator)
15149 {
15150 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15151 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15152 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015153 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015154 if (local_pCreateInfo)
15155 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015156 transform_tohost_VkRenderPassCreateInfo2KHR(mImpl->resources(), (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015157 }
15158 if (local_pAllocator)
15159 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015160 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015161 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015162 countingStream->rewind();
15163 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015164 uint64_t cgen_var_1070;
15165 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1070, 1);
15166 countingStream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015167 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015168 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015169 uint64_t cgen_var_1071 = (uint64_t)(uintptr_t)local_pAllocator;
15170 countingStream->putBe64(cgen_var_1071);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015171 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015172 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015173 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015174 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015175 uint64_t cgen_var_1072;
15176 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1072, 1);
15177 countingStream->write((uint64_t*)&cgen_var_1072, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015178 }
15179 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15180 countingStream->rewind();
15181 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
15182 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
15183 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015184 uint64_t cgen_var_1073;
15185 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
15186 stream->write((uint64_t*)&cgen_var_1073, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015187 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015188 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015189 uint64_t cgen_var_1074 = (uint64_t)(uintptr_t)local_pAllocator;
15190 stream->putBe64(cgen_var_1074);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015191 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015192 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015193 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015194 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015195 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015196 uint64_t cgen_var_1075;
15197 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1075, 1);
15198 stream->write((uint64_t*)&cgen_var_1075, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015199 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015200 uint64_t cgen_var_1076;
15201 stream->read((uint64_t*)&cgen_var_1076, 8);
15202 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1076, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015203 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
15204 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015205 countingStream->clearPool();
15206 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015207 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015208 mImpl->log("finish vkCreateRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015209 return vkCreateRenderPass2KHR_VkResult_return;
15210}
15211
15212void VkEncoder::vkCmdBeginRenderPass2KHR(
15213 VkCommandBuffer commandBuffer,
15214 const VkRenderPassBeginInfo* pRenderPassBegin,
15215 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
15216{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015217 mImpl->log("start vkCmdBeginRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015218 auto stream = mImpl->stream();
15219 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015220 auto resources = mImpl->resources();
15221 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015222 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015223 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015224 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015225 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
15226 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015227 local_pRenderPassBegin = nullptr;
15228 if (pRenderPassBegin)
15229 {
15230 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
15231 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15232 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015233 local_pSubpassBeginInfo = nullptr;
15234 if (pSubpassBeginInfo)
15235 {
15236 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15237 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15238 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015239 if (local_pRenderPassBegin)
15240 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015241 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015242 }
15243 if (local_pSubpassBeginInfo)
15244 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015245 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015246 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015247 countingStream->rewind();
15248 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015249 uint64_t cgen_var_1077;
15250 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1077, 1);
15251 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015252 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15253 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015254 }
15255 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15256 countingStream->rewind();
15257 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
15258 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
15259 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015260 uint64_t cgen_var_1078;
15261 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1078, 1);
15262 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015263 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15264 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015265 mImpl->log("finish vkCmdBeginRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015266}
15267
15268void VkEncoder::vkCmdNextSubpass2KHR(
15269 VkCommandBuffer commandBuffer,
15270 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
15271 const VkSubpassEndInfoKHR* pSubpassEndInfo)
15272{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015273 mImpl->log("start vkCmdNextSubpass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015274 auto stream = mImpl->stream();
15275 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015276 auto resources = mImpl->resources();
15277 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015278 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015279 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015280 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015281 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
15282 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015283 local_pSubpassBeginInfo = nullptr;
15284 if (pSubpassBeginInfo)
15285 {
15286 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15287 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15288 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015289 local_pSubpassEndInfo = nullptr;
15290 if (pSubpassEndInfo)
15291 {
15292 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
15293 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
15294 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015295 if (local_pSubpassBeginInfo)
15296 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015297 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015298 }
15299 if (local_pSubpassEndInfo)
15300 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015301 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015302 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015303 countingStream->rewind();
15304 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015305 uint64_t cgen_var_1079;
15306 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1079, 1);
15307 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015308 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15309 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015310 }
15311 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15312 countingStream->rewind();
15313 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
15314 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
15315 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015316 uint64_t cgen_var_1080;
15317 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1080, 1);
15318 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015319 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15320 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015321 mImpl->log("finish vkCmdNextSubpass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015322}
15323
15324void VkEncoder::vkCmdEndRenderPass2KHR(
15325 VkCommandBuffer commandBuffer,
15326 const VkSubpassEndInfoKHR* pSubpassEndInfo)
15327{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015328 mImpl->log("start vkCmdEndRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015329 auto stream = mImpl->stream();
15330 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015331 auto resources = mImpl->resources();
15332 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015333 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015334 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015335 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015336 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015337 local_pSubpassEndInfo = nullptr;
15338 if (pSubpassEndInfo)
15339 {
15340 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
15341 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
15342 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015343 if (local_pSubpassEndInfo)
15344 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015345 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015346 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015347 countingStream->rewind();
15348 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015349 uint64_t cgen_var_1081;
15350 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1081, 1);
15351 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015352 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015353 }
15354 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15355 countingStream->rewind();
15356 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
15357 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
15358 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015359 uint64_t cgen_var_1082;
15360 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1082, 1);
15361 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015362 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015363 mImpl->log("finish vkCmdEndRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015364}
15365
15366#endif
15367#ifdef VK_KHR_shared_presentable_image
15368VkResult VkEncoder::vkGetSwapchainStatusKHR(
15369 VkDevice device,
15370 VkSwapchainKHR swapchain)
15371{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015372 mImpl->log("start vkGetSwapchainStatusKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015373 auto stream = mImpl->stream();
15374 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015375 auto resources = mImpl->resources();
15376 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015377 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015378 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015379 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015380 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015381 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015382 countingStream->rewind();
15383 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015384 uint64_t cgen_var_1083;
15385 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
15386 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
15387 uint64_t cgen_var_1084;
15388 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1084, 1);
15389 countingStream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015390 }
15391 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15392 countingStream->rewind();
15393 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
15394 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
15395 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015396 uint64_t cgen_var_1085;
15397 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
15398 stream->write((uint64_t*)&cgen_var_1085, 1 * 8);
15399 uint64_t cgen_var_1086;
15400 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1086, 1);
15401 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015402 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
15403 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015404 countingStream->clearPool();
15405 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015406 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015407 mImpl->log("finish vkGetSwapchainStatusKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015408 return vkGetSwapchainStatusKHR_VkResult_return;
15409}
15410
15411#endif
15412#ifdef VK_KHR_external_fence_capabilities
15413void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
15414 VkPhysicalDevice physicalDevice,
15415 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
15416 VkExternalFenceProperties* pExternalFenceProperties)
15417{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015418 mImpl->log("start vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015419 auto stream = mImpl->stream();
15420 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015421 auto resources = mImpl->resources();
15422 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015423 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015424 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015425 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015426 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015427 local_pExternalFenceInfo = nullptr;
15428 if (pExternalFenceInfo)
15429 {
15430 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
15431 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
15432 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015433 if (local_pExternalFenceInfo)
15434 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015435 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015436 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015437 countingStream->rewind();
15438 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015439 uint64_t cgen_var_1087;
15440 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
15441 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015442 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015443 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
15444 }
15445 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15446 countingStream->rewind();
15447 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
15448 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
15449 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015450 uint64_t cgen_var_1088;
15451 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
15452 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015453 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015454 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
15455 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015456 if (pExternalFenceProperties)
15457 {
15458 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
15459 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015460 mImpl->log("finish vkGetPhysicalDeviceExternalFencePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015461}
15462
15463#endif
15464#ifdef VK_KHR_external_fence
15465#endif
15466#ifdef VK_KHR_external_fence_win32
15467VkResult VkEncoder::vkImportFenceWin32HandleKHR(
15468 VkDevice device,
15469 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
15470{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015471 mImpl->log("start vkImportFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015472 auto stream = mImpl->stream();
15473 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015474 auto resources = mImpl->resources();
15475 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015476 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015477 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015478 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015479 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015480 local_pImportFenceWin32HandleInfo = nullptr;
15481 if (pImportFenceWin32HandleInfo)
15482 {
15483 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
15484 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
15485 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015486 if (local_pImportFenceWin32HandleInfo)
15487 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015488 transform_tohost_VkImportFenceWin32HandleInfoKHR(mImpl->resources(), (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015489 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015490 countingStream->rewind();
15491 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015492 uint64_t cgen_var_1089;
15493 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1089, 1);
15494 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015495 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015496 }
15497 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15498 countingStream->rewind();
15499 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
15500 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
15501 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015502 uint64_t cgen_var_1090;
15503 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1090, 1);
15504 stream->write((uint64_t*)&cgen_var_1090, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015505 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015506 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
15507 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015508 countingStream->clearPool();
15509 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015510 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015511 mImpl->log("finish vkImportFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015512 return vkImportFenceWin32HandleKHR_VkResult_return;
15513}
15514
15515VkResult VkEncoder::vkGetFenceWin32HandleKHR(
15516 VkDevice device,
15517 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
15518 HANDLE* pHandle)
15519{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015520 mImpl->log("start vkGetFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015521 auto stream = mImpl->stream();
15522 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015523 auto resources = mImpl->resources();
15524 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015525 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015526 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015527 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015528 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015529 local_pGetWin32HandleInfo = nullptr;
15530 if (pGetWin32HandleInfo)
15531 {
15532 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
15533 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
15534 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015535 if (local_pGetWin32HandleInfo)
15536 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015537 transform_tohost_VkFenceGetWin32HandleInfoKHR(mImpl->resources(), (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015538 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015539 countingStream->rewind();
15540 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015541 uint64_t cgen_var_1091;
15542 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1091, 1);
15543 countingStream->write((uint64_t*)&cgen_var_1091, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015544 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015545 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
15546 }
15547 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15548 countingStream->rewind();
15549 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
15550 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
15551 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015552 uint64_t cgen_var_1092;
15553 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1092, 1);
15554 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015555 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015556 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
15557 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
15558 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
15559 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015560 countingStream->clearPool();
15561 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015562 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015563 mImpl->log("finish vkGetFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015564 return vkGetFenceWin32HandleKHR_VkResult_return;
15565}
15566
15567#endif
15568#ifdef VK_KHR_external_fence_fd
15569VkResult VkEncoder::vkImportFenceFdKHR(
15570 VkDevice device,
15571 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
15572{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015573 mImpl->log("start vkImportFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015574 auto stream = mImpl->stream();
15575 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015576 auto resources = mImpl->resources();
15577 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015578 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015579 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015580 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015581 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015582 local_pImportFenceFdInfo = nullptr;
15583 if (pImportFenceFdInfo)
15584 {
15585 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
15586 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
15587 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015588 if (local_pImportFenceFdInfo)
15589 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015590 transform_tohost_VkImportFenceFdInfoKHR(mImpl->resources(), (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015591 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015592 countingStream->rewind();
15593 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015594 uint64_t cgen_var_1093;
15595 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1093, 1);
15596 countingStream->write((uint64_t*)&cgen_var_1093, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015597 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015598 }
15599 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15600 countingStream->rewind();
15601 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
15602 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
15603 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015604 uint64_t cgen_var_1094;
15605 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1094, 1);
15606 stream->write((uint64_t*)&cgen_var_1094, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015607 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015608 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
15609 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015610 countingStream->clearPool();
15611 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015612 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015613 mImpl->log("finish vkImportFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015614 return vkImportFenceFdKHR_VkResult_return;
15615}
15616
15617VkResult VkEncoder::vkGetFenceFdKHR(
15618 VkDevice device,
15619 const VkFenceGetFdInfoKHR* pGetFdInfo,
15620 int* pFd)
15621{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015622 mImpl->log("start vkGetFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015623 auto stream = mImpl->stream();
15624 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015625 auto resources = mImpl->resources();
15626 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015627 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015628 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015629 VkFenceGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015630 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015631 local_pGetFdInfo = nullptr;
15632 if (pGetFdInfo)
15633 {
15634 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
15635 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
15636 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015637 if (local_pGetFdInfo)
15638 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015639 transform_tohost_VkFenceGetFdInfoKHR(mImpl->resources(), (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015640 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015641 countingStream->rewind();
15642 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015643 uint64_t cgen_var_1095;
15644 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1095, 1);
15645 countingStream->write((uint64_t*)&cgen_var_1095, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015646 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015647 countingStream->write((int*)pFd, sizeof(int));
15648 }
15649 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15650 countingStream->rewind();
15651 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
15652 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
15653 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015654 uint64_t cgen_var_1096;
15655 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1096, 1);
15656 stream->write((uint64_t*)&cgen_var_1096, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015657 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015658 stream->write((int*)pFd, sizeof(int));
15659 stream->read((int*)pFd, sizeof(int));
15660 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
15661 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015662 countingStream->clearPool();
15663 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015664 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015665 mImpl->log("finish vkGetFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015666 return vkGetFenceFdKHR_VkResult_return;
15667}
15668
15669#endif
15670#ifdef VK_KHR_maintenance2
15671#endif
15672#ifdef VK_KHR_get_surface_capabilities2
15673VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
15674 VkPhysicalDevice physicalDevice,
15675 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
15676 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
15677{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015678 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015679 auto stream = mImpl->stream();
15680 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015681 auto resources = mImpl->resources();
15682 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015683 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015684 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015685 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015686 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015687 local_pSurfaceInfo = nullptr;
15688 if (pSurfaceInfo)
15689 {
15690 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
15691 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
15692 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015693 if (local_pSurfaceInfo)
15694 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015695 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015696 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015697 countingStream->rewind();
15698 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015699 uint64_t cgen_var_1097;
15700 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
15701 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015702 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015703 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15704 }
15705 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15706 countingStream->rewind();
15707 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
15708 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
15709 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015710 uint64_t cgen_var_1098;
15711 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1098, 1);
15712 stream->write((uint64_t*)&cgen_var_1098, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015713 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015714 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15715 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015716 if (pSurfaceCapabilities)
15717 {
15718 transform_fromhost_VkSurfaceCapabilities2KHR(mImpl->resources(), (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15719 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015720 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
15721 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015722 countingStream->clearPool();
15723 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015724 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015725 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015726 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
15727}
15728
15729VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
15730 VkPhysicalDevice physicalDevice,
15731 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
15732 uint32_t* pSurfaceFormatCount,
15733 VkSurfaceFormat2KHR* pSurfaceFormats)
15734{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015735 mImpl->log("start vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015736 auto stream = mImpl->stream();
15737 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015738 auto resources = mImpl->resources();
15739 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015740 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015741 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015742 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015743 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015744 local_pSurfaceInfo = nullptr;
15745 if (pSurfaceInfo)
15746 {
15747 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
15748 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
15749 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015750 if (local_pSurfaceInfo)
15751 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015752 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015753 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015754 countingStream->rewind();
15755 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015756 uint64_t cgen_var_1099;
15757 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1099, 1);
15758 countingStream->write((uint64_t*)&cgen_var_1099, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015759 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015760 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015761 uint64_t cgen_var_1100 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
15762 countingStream->putBe64(cgen_var_1100);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015763 if (pSurfaceFormatCount)
15764 {
15765 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15766 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015767 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015768 uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pSurfaceFormats;
15769 countingStream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015770 if (pSurfaceFormats)
15771 {
15772 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15773 {
15774 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15775 }
15776 }
15777 }
15778 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15779 countingStream->rewind();
15780 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
15781 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
15782 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015783 uint64_t cgen_var_1102;
15784 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1102, 1);
15785 stream->write((uint64_t*)&cgen_var_1102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015786 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015787 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015788 uint64_t cgen_var_1103 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
15789 stream->putBe64(cgen_var_1103);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015790 if (pSurfaceFormatCount)
15791 {
15792 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15793 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015794 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015795 uint64_t cgen_var_1104 = (uint64_t)(uintptr_t)pSurfaceFormats;
15796 stream->putBe64(cgen_var_1104);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015797 if (pSurfaceFormats)
15798 {
15799 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15800 {
15801 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15802 }
15803 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015804 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015805 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015806 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015807 if (pSurfaceFormatCount)
15808 {
15809 if (!(check_pSurfaceFormatCount))
15810 {
15811 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
15812 }
15813 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15814 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015815 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015816 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015817 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015818 if (pSurfaceFormats)
15819 {
15820 if (!(check_pSurfaceFormats))
15821 {
15822 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
15823 }
15824 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15825 {
15826 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15827 }
15828 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015829 if (pSurfaceFormats)
15830 {
15831 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15832 {
15833 transform_fromhost_VkSurfaceFormat2KHR(mImpl->resources(), (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15834 }
15835 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015836 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
15837 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015838 countingStream->clearPool();
15839 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015840 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015841 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormats2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015842 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
15843}
15844
15845#endif
15846#ifdef VK_KHR_variable_pointers
15847#endif
15848#ifdef VK_KHR_get_display_properties2
15849VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
15850 VkPhysicalDevice physicalDevice,
15851 uint32_t* pPropertyCount,
15852 VkDisplayProperties2KHR* pProperties)
15853{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015854 mImpl->log("start vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015855 auto stream = mImpl->stream();
15856 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015857 auto resources = mImpl->resources();
15858 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015859 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015860 VkPhysicalDevice local_physicalDevice;
15861 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015862 countingStream->rewind();
15863 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015864 uint64_t cgen_var_1107;
15865 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1107, 1);
15866 countingStream->write((uint64_t*)&cgen_var_1107, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015867 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015868 uint64_t cgen_var_1108 = (uint64_t)(uintptr_t)pPropertyCount;
15869 countingStream->putBe64(cgen_var_1108);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015870 if (pPropertyCount)
15871 {
15872 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15873 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015874 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015875 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pProperties;
15876 countingStream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015877 if (pProperties)
15878 {
15879 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15880 {
15881 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
15882 }
15883 }
15884 }
15885 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15886 countingStream->rewind();
15887 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
15888 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
15889 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015890 uint64_t cgen_var_1110;
15891 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1110, 1);
15892 stream->write((uint64_t*)&cgen_var_1110, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015893 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015894 uint64_t cgen_var_1111 = (uint64_t)(uintptr_t)pPropertyCount;
15895 stream->putBe64(cgen_var_1111);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015896 if (pPropertyCount)
15897 {
15898 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15899 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015900 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015901 uint64_t cgen_var_1112 = (uint64_t)(uintptr_t)pProperties;
15902 stream->putBe64(cgen_var_1112);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015903 if (pProperties)
15904 {
15905 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15906 {
15907 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15908 }
15909 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015910 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015911 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015912 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015913 if (pPropertyCount)
15914 {
15915 if (!(check_pPropertyCount))
15916 {
15917 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
15918 }
15919 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
15920 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015921 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015922 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015923 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015924 if (pProperties)
15925 {
15926 if (!(check_pProperties))
15927 {
15928 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
15929 }
15930 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15931 {
15932 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15933 }
15934 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015935 if (pProperties)
15936 {
15937 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15938 {
15939 transform_fromhost_VkDisplayProperties2KHR(mImpl->resources(), (VkDisplayProperties2KHR*)(pProperties + i));
15940 }
15941 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015942 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
15943 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015944 countingStream->clearPool();
15945 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015946 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015947 mImpl->log("finish vkGetPhysicalDeviceDisplayProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015948 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
15949}
15950
15951VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
15952 VkPhysicalDevice physicalDevice,
15953 uint32_t* pPropertyCount,
15954 VkDisplayPlaneProperties2KHR* pProperties)
15955{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015956 mImpl->log("start vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015957 auto stream = mImpl->stream();
15958 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015959 auto resources = mImpl->resources();
15960 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015961 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015962 VkPhysicalDevice local_physicalDevice;
15963 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015964 countingStream->rewind();
15965 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015966 uint64_t cgen_var_1115;
15967 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1115, 1);
15968 countingStream->write((uint64_t*)&cgen_var_1115, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015969 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015970 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pPropertyCount;
15971 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015972 if (pPropertyCount)
15973 {
15974 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15975 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015976 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015977 uint64_t cgen_var_1117 = (uint64_t)(uintptr_t)pProperties;
15978 countingStream->putBe64(cgen_var_1117);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015979 if (pProperties)
15980 {
15981 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15982 {
15983 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15984 }
15985 }
15986 }
15987 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15988 countingStream->rewind();
15989 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
15990 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
15991 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015992 uint64_t cgen_var_1118;
15993 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1118, 1);
15994 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015995 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015996 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
15997 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015998 if (pPropertyCount)
15999 {
16000 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16001 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016002 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016003 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
16004 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016005 if (pProperties)
16006 {
16007 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16008 {
16009 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16010 }
16011 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016012 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016013 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016014 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016015 if (pPropertyCount)
16016 {
16017 if (!(check_pPropertyCount))
16018 {
16019 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16020 }
16021 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16022 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016023 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016024 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016025 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016026 if (pProperties)
16027 {
16028 if (!(check_pProperties))
16029 {
16030 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16031 }
16032 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16033 {
16034 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16035 }
16036 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016037 if (pProperties)
16038 {
16039 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16040 {
16041 transform_fromhost_VkDisplayPlaneProperties2KHR(mImpl->resources(), (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16042 }
16043 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016044 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
16045 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016046 countingStream->clearPool();
16047 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016048 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016049 mImpl->log("finish vkGetPhysicalDeviceDisplayPlaneProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016050 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
16051}
16052
16053VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
16054 VkPhysicalDevice physicalDevice,
16055 VkDisplayKHR display,
16056 uint32_t* pPropertyCount,
16057 VkDisplayModeProperties2KHR* pProperties)
16058{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016059 mImpl->log("start vkGetDisplayModeProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016060 auto stream = mImpl->stream();
16061 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016062 auto resources = mImpl->resources();
16063 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016064 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016065 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016066 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016067 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016068 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016069 countingStream->rewind();
16070 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016071 uint64_t cgen_var_1123;
16072 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
16073 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
16074 uint64_t cgen_var_1124;
16075 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1124, 1);
16076 countingStream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016077 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016078 uint64_t cgen_var_1125 = (uint64_t)(uintptr_t)pPropertyCount;
16079 countingStream->putBe64(cgen_var_1125);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016080 if (pPropertyCount)
16081 {
16082 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16083 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016084 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016085 uint64_t cgen_var_1126 = (uint64_t)(uintptr_t)pProperties;
16086 countingStream->putBe64(cgen_var_1126);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016087 if (pProperties)
16088 {
16089 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16090 {
16091 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16092 }
16093 }
16094 }
16095 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16096 countingStream->rewind();
16097 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
16098 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
16099 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016100 uint64_t cgen_var_1127;
16101 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1127, 1);
16102 stream->write((uint64_t*)&cgen_var_1127, 1 * 8);
16103 uint64_t cgen_var_1128;
16104 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1128, 1);
16105 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016106 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016107 uint64_t cgen_var_1129 = (uint64_t)(uintptr_t)pPropertyCount;
16108 stream->putBe64(cgen_var_1129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016109 if (pPropertyCount)
16110 {
16111 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16112 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016113 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016114 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pProperties;
16115 stream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016116 if (pProperties)
16117 {
16118 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16119 {
16120 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16121 }
16122 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016123 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016124 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016125 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016126 if (pPropertyCount)
16127 {
16128 if (!(check_pPropertyCount))
16129 {
16130 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16131 }
16132 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16133 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016134 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016135 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016136 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016137 if (pProperties)
16138 {
16139 if (!(check_pProperties))
16140 {
16141 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16142 }
16143 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16144 {
16145 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16146 }
16147 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016148 if (pProperties)
16149 {
16150 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16151 {
16152 transform_fromhost_VkDisplayModeProperties2KHR(mImpl->resources(), (VkDisplayModeProperties2KHR*)(pProperties + i));
16153 }
16154 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016155 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
16156 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016157 countingStream->clearPool();
16158 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016159 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016160 mImpl->log("finish vkGetDisplayModeProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016161 return vkGetDisplayModeProperties2KHR_VkResult_return;
16162}
16163
16164VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
16165 VkPhysicalDevice physicalDevice,
16166 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
16167 VkDisplayPlaneCapabilities2KHR* pCapabilities)
16168{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016169 mImpl->log("start vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016170 auto stream = mImpl->stream();
16171 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016172 auto resources = mImpl->resources();
16173 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016174 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016175 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016176 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016177 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016178 local_pDisplayPlaneInfo = nullptr;
16179 if (pDisplayPlaneInfo)
16180 {
16181 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
16182 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
16183 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016184 if (local_pDisplayPlaneInfo)
16185 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016186 transform_tohost_VkDisplayPlaneInfo2KHR(mImpl->resources(), (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016187 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016188 countingStream->rewind();
16189 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016190 uint64_t cgen_var_1133;
16191 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1133, 1);
16192 countingStream->write((uint64_t*)&cgen_var_1133, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016193 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016194 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16195 }
16196 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16197 countingStream->rewind();
16198 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
16199 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
16200 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016201 uint64_t cgen_var_1134;
16202 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1134, 1);
16203 stream->write((uint64_t*)&cgen_var_1134, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016204 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016205 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16206 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016207 if (pCapabilities)
16208 {
16209 transform_fromhost_VkDisplayPlaneCapabilities2KHR(mImpl->resources(), (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16210 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016211 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
16212 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016213 countingStream->clearPool();
16214 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016215 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016216 mImpl->log("finish vkGetDisplayPlaneCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016217 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
16218}
16219
16220#endif
16221#ifdef VK_KHR_dedicated_allocation
16222#endif
16223#ifdef VK_KHR_storage_buffer_storage_class
16224#endif
16225#ifdef VK_KHR_relaxed_block_layout
16226#endif
16227#ifdef VK_KHR_get_memory_requirements2
16228void VkEncoder::vkGetImageMemoryRequirements2KHR(
16229 VkDevice device,
16230 const VkImageMemoryRequirementsInfo2* pInfo,
16231 VkMemoryRequirements2* pMemoryRequirements)
16232{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016233 mImpl->log("start vkGetImageMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016234 auto stream = mImpl->stream();
16235 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016236 auto resources = mImpl->resources();
16237 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016238 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016239 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016240 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016241 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016242 local_pInfo = nullptr;
16243 if (pInfo)
16244 {
16245 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
16246 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
16247 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016248 if (local_pInfo)
16249 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016250 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016251 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016252 countingStream->rewind();
16253 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016254 uint64_t cgen_var_1135;
16255 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1135, 1);
16256 countingStream->write((uint64_t*)&cgen_var_1135, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016257 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016258 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
16259 }
16260 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16261 countingStream->rewind();
16262 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
16263 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
16264 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016265 uint64_t cgen_var_1136;
16266 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1136, 1);
16267 stream->write((uint64_t*)&cgen_var_1136, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016268 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016269 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
16270 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016271 if (pMemoryRequirements)
16272 {
16273 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
16274 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016275 mImpl->log("finish vkGetImageMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016276}
16277
16278void VkEncoder::vkGetBufferMemoryRequirements2KHR(
16279 VkDevice device,
16280 const VkBufferMemoryRequirementsInfo2* pInfo,
16281 VkMemoryRequirements2* pMemoryRequirements)
16282{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016283 mImpl->log("start vkGetBufferMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016284 auto stream = mImpl->stream();
16285 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016286 auto resources = mImpl->resources();
16287 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016288 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016289 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016290 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016291 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016292 local_pInfo = nullptr;
16293 if (pInfo)
16294 {
16295 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
16296 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
16297 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016298 if (local_pInfo)
16299 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016300 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016301 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016302 countingStream->rewind();
16303 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016304 uint64_t cgen_var_1137;
16305 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
16306 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016307 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016308 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
16309 }
16310 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16311 countingStream->rewind();
16312 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
16313 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
16314 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016315 uint64_t cgen_var_1138;
16316 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1138, 1);
16317 stream->write((uint64_t*)&cgen_var_1138, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016318 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016319 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
16320 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016321 if (pMemoryRequirements)
16322 {
16323 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
16324 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016325 mImpl->log("finish vkGetBufferMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016326}
16327
16328void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
16329 VkDevice device,
16330 const VkImageSparseMemoryRequirementsInfo2* pInfo,
16331 uint32_t* pSparseMemoryRequirementCount,
16332 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
16333{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016334 mImpl->log("start vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016335 auto stream = mImpl->stream();
16336 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016337 auto resources = mImpl->resources();
16338 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016339 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016340 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016341 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016342 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016343 local_pInfo = nullptr;
16344 if (pInfo)
16345 {
16346 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
16347 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
16348 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016349 if (local_pInfo)
16350 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016351 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016352 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016353 countingStream->rewind();
16354 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016355 uint64_t cgen_var_1139;
16356 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1139, 1);
16357 countingStream->write((uint64_t*)&cgen_var_1139, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016358 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016359 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016360 uint64_t cgen_var_1140 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
16361 countingStream->putBe64(cgen_var_1140);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016362 if (pSparseMemoryRequirementCount)
16363 {
16364 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16365 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016366 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016367 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
16368 countingStream->putBe64(cgen_var_1141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016369 if (pSparseMemoryRequirements)
16370 {
16371 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16372 {
16373 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16374 }
16375 }
16376 }
16377 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16378 countingStream->rewind();
16379 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
16380 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
16381 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016382 uint64_t cgen_var_1142;
16383 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1142, 1);
16384 stream->write((uint64_t*)&cgen_var_1142, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016385 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016386 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016387 uint64_t cgen_var_1143 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
16388 stream->putBe64(cgen_var_1143);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016389 if (pSparseMemoryRequirementCount)
16390 {
16391 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16392 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016393 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016394 uint64_t cgen_var_1144 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
16395 stream->putBe64(cgen_var_1144);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016396 if (pSparseMemoryRequirements)
16397 {
16398 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16399 {
16400 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16401 }
16402 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016403 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016404 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016405 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016406 if (pSparseMemoryRequirementCount)
16407 {
16408 if (!(check_pSparseMemoryRequirementCount))
16409 {
16410 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
16411 }
16412 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16413 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016414 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016415 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016416 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016417 if (pSparseMemoryRequirements)
16418 {
16419 if (!(check_pSparseMemoryRequirements))
16420 {
16421 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
16422 }
16423 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16424 {
16425 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16426 }
16427 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016428 if (pSparseMemoryRequirements)
16429 {
16430 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16431 {
16432 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16433 }
16434 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016435 mImpl->log("finish vkGetImageSparseMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016436}
16437
16438#endif
16439#ifdef VK_KHR_image_format_list
16440#endif
16441#ifdef VK_KHR_sampler_ycbcr_conversion
16442VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
16443 VkDevice device,
16444 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
16445 const VkAllocationCallbacks* pAllocator,
16446 VkSamplerYcbcrConversion* pYcbcrConversion)
16447{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016448 mImpl->log("start vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016449 auto stream = mImpl->stream();
16450 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016451 auto resources = mImpl->resources();
16452 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016453 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016454 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016455 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016456 VkAllocationCallbacks* local_pAllocator;
16457 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016458 local_pCreateInfo = nullptr;
16459 if (pCreateInfo)
16460 {
16461 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
16462 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
16463 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016464 local_pAllocator = nullptr;
16465 if (pAllocator)
16466 {
16467 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16468 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16469 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016470 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016471 if (local_pCreateInfo)
16472 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016473 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016474 }
16475 if (local_pAllocator)
16476 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016477 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016478 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016479 countingStream->rewind();
16480 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016481 uint64_t cgen_var_1147;
16482 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
16483 countingStream->write((uint64_t*)&cgen_var_1147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016484 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016485 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016486 uint64_t cgen_var_1148 = (uint64_t)(uintptr_t)local_pAllocator;
16487 countingStream->putBe64(cgen_var_1148);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016488 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016489 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016490 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016491 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016492 uint64_t cgen_var_1149;
16493 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1149, 1);
16494 countingStream->write((uint64_t*)&cgen_var_1149, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016495 }
16496 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16497 countingStream->rewind();
16498 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
16499 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
16500 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016501 uint64_t cgen_var_1150;
16502 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
16503 stream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016504 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016505 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016506 uint64_t cgen_var_1151 = (uint64_t)(uintptr_t)local_pAllocator;
16507 stream->putBe64(cgen_var_1151);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016508 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016509 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016510 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016511 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016512 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016513 uint64_t cgen_var_1152;
16514 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1152, 1);
16515 stream->write((uint64_t*)&cgen_var_1152, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016516 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016517 uint64_t cgen_var_1153;
16518 stream->read((uint64_t*)&cgen_var_1153, 8);
16519 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1153, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016520 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
16521 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016522 countingStream->clearPool();
16523 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016524 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016525 mImpl->log("finish vkCreateSamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016526 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
16527}
16528
16529void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
16530 VkDevice device,
16531 VkSamplerYcbcrConversion ycbcrConversion,
16532 const VkAllocationCallbacks* pAllocator)
16533{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016534 mImpl->log("start vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016535 auto stream = mImpl->stream();
16536 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016537 auto resources = mImpl->resources();
16538 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016539 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016540 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016541 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016542 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016543 local_device = device;
16544 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016545 local_pAllocator = nullptr;
16546 if (pAllocator)
16547 {
16548 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16549 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16550 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016551 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016552 if (local_pAllocator)
16553 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016554 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016555 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016556 countingStream->rewind();
16557 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016558 uint64_t cgen_var_1154;
16559 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
16560 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
16561 uint64_t cgen_var_1155;
16562 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1155, 1);
16563 countingStream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016564 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016565 uint64_t cgen_var_1156 = (uint64_t)(uintptr_t)local_pAllocator;
16566 countingStream->putBe64(cgen_var_1156);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016567 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016568 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016569 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016570 }
16571 }
16572 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16573 countingStream->rewind();
16574 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
16575 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
16576 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016577 uint64_t cgen_var_1157;
16578 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1157, 1);
16579 stream->write((uint64_t*)&cgen_var_1157, 1 * 8);
16580 uint64_t cgen_var_1158;
16581 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1158, 1);
16582 stream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016583 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016584 uint64_t cgen_var_1159 = (uint64_t)(uintptr_t)local_pAllocator;
16585 stream->putBe64(cgen_var_1159);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016586 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016587 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016588 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016589 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016590 mImpl->log("finish vkDestroySamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016591}
16592
16593#endif
16594#ifdef VK_KHR_bind_memory2
16595VkResult VkEncoder::vkBindBufferMemory2KHR(
16596 VkDevice device,
16597 uint32_t bindInfoCount,
16598 const VkBindBufferMemoryInfo* pBindInfos)
16599{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016600 mImpl->log("start vkBindBufferMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016601 auto stream = mImpl->stream();
16602 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016603 auto resources = mImpl->resources();
16604 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016605 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016606 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016607 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016608 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016609 local_device = device;
16610 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016611 local_pBindInfos = nullptr;
16612 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016613 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016614 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016615 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16616 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016617 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
16618 }
16619 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016620 if (local_pBindInfos)
16621 {
16622 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16623 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016624 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016625 }
16626 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016627 countingStream->rewind();
16628 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016629 uint64_t cgen_var_1160;
16630 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1160, 1);
16631 countingStream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016632 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
16633 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16634 {
16635 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016636 }
16637 }
16638 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16639 countingStream->rewind();
16640 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
16641 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
16642 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016643 uint64_t cgen_var_1161;
16644 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1161, 1);
16645 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016646 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016647 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16648 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016649 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016650 }
16651 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
16652 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016653 countingStream->clearPool();
16654 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016655 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016656 mImpl->log("finish vkBindBufferMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016657 return vkBindBufferMemory2KHR_VkResult_return;
16658}
16659
16660VkResult VkEncoder::vkBindImageMemory2KHR(
16661 VkDevice device,
16662 uint32_t bindInfoCount,
16663 const VkBindImageMemoryInfo* pBindInfos)
16664{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016665 mImpl->log("start vkBindImageMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016666 auto stream = mImpl->stream();
16667 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016668 auto resources = mImpl->resources();
16669 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016670 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016671 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016672 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016673 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016674 local_device = device;
16675 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016676 local_pBindInfos = nullptr;
16677 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016678 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016679 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016680 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16681 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016682 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
16683 }
16684 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016685 if (local_pBindInfos)
16686 {
16687 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16688 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016689 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016690 }
16691 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016692 countingStream->rewind();
16693 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016694 uint64_t cgen_var_1162;
16695 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1162, 1);
16696 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016697 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
16698 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16699 {
16700 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016701 }
16702 }
16703 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16704 countingStream->rewind();
16705 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
16706 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
16707 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016708 uint64_t cgen_var_1163;
16709 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1163, 1);
16710 stream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016711 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016712 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16713 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016714 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016715 }
16716 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
16717 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016718 countingStream->clearPool();
16719 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016720 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016721 mImpl->log("finish vkBindImageMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016722 return vkBindImageMemory2KHR_VkResult_return;
16723}
16724
16725#endif
16726#ifdef VK_KHR_maintenance3
16727void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
16728 VkDevice device,
16729 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
16730 VkDescriptorSetLayoutSupport* pSupport)
16731{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016732 mImpl->log("start vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016733 auto stream = mImpl->stream();
16734 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016735 auto resources = mImpl->resources();
16736 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016737 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016738 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016739 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016740 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016741 local_pCreateInfo = nullptr;
16742 if (pCreateInfo)
16743 {
16744 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
16745 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
16746 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016747 if (local_pCreateInfo)
16748 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016749 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016750 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016751 countingStream->rewind();
16752 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016753 uint64_t cgen_var_1164;
16754 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1164, 1);
16755 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016756 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016757 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
16758 }
16759 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16760 countingStream->rewind();
16761 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
16762 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
16763 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016764 uint64_t cgen_var_1165;
16765 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1165, 1);
16766 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016767 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016768 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
16769 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016770 if (pSupport)
16771 {
16772 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
16773 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016774 mImpl->log("finish vkGetDescriptorSetLayoutSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016775}
16776
16777#endif
16778#ifdef VK_KHR_draw_indirect_count
16779void VkEncoder::vkCmdDrawIndirectCountKHR(
16780 VkCommandBuffer commandBuffer,
16781 VkBuffer buffer,
16782 VkDeviceSize offset,
16783 VkBuffer countBuffer,
16784 VkDeviceSize countBufferOffset,
16785 uint32_t maxDrawCount,
16786 uint32_t stride)
16787{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016788 mImpl->log("start vkCmdDrawIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016789 auto stream = mImpl->stream();
16790 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016791 auto resources = mImpl->resources();
16792 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016793 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016794 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016795 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016796 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016797 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016798 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016799 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016800 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016801 local_commandBuffer = commandBuffer;
16802 local_buffer = buffer;
16803 local_offset = offset;
16804 local_countBuffer = countBuffer;
16805 local_countBufferOffset = countBufferOffset;
16806 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016807 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016808 countingStream->rewind();
16809 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016810 uint64_t cgen_var_1166;
16811 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1166, 1);
16812 countingStream->write((uint64_t*)&cgen_var_1166, 1 * 8);
16813 uint64_t cgen_var_1167;
16814 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1167, 1);
16815 countingStream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016816 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016817 uint64_t cgen_var_1168;
16818 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1168, 1);
16819 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016820 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16821 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16822 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016823 }
16824 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16825 countingStream->rewind();
16826 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
16827 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
16828 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016829 uint64_t cgen_var_1169;
16830 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1169, 1);
16831 stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
16832 uint64_t cgen_var_1170;
16833 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1170, 1);
16834 stream->write((uint64_t*)&cgen_var_1170, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016835 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016836 uint64_t cgen_var_1171;
16837 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1171, 1);
16838 stream->write((uint64_t*)&cgen_var_1171, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016839 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16840 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16841 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016842 mImpl->log("finish vkCmdDrawIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016843}
16844
16845void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
16846 VkCommandBuffer commandBuffer,
16847 VkBuffer buffer,
16848 VkDeviceSize offset,
16849 VkBuffer countBuffer,
16850 VkDeviceSize countBufferOffset,
16851 uint32_t maxDrawCount,
16852 uint32_t stride)
16853{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016854 mImpl->log("start vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016855 auto stream = mImpl->stream();
16856 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016857 auto resources = mImpl->resources();
16858 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016859 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016860 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016861 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016862 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016863 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016864 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016865 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016866 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016867 local_commandBuffer = commandBuffer;
16868 local_buffer = buffer;
16869 local_offset = offset;
16870 local_countBuffer = countBuffer;
16871 local_countBufferOffset = countBufferOffset;
16872 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016873 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016874 countingStream->rewind();
16875 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016876 uint64_t cgen_var_1172;
16877 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1172, 1);
16878 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
16879 uint64_t cgen_var_1173;
16880 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1173, 1);
16881 countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016882 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016883 uint64_t cgen_var_1174;
16884 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1174, 1);
16885 countingStream->write((uint64_t*)&cgen_var_1174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016886 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16887 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16888 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016889 }
16890 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16891 countingStream->rewind();
16892 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
16893 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
16894 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016895 uint64_t cgen_var_1175;
16896 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1175, 1);
16897 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
16898 uint64_t cgen_var_1176;
16899 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1176, 1);
16900 stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016901 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016902 uint64_t cgen_var_1177;
16903 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1177, 1);
16904 stream->write((uint64_t*)&cgen_var_1177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016905 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16906 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16907 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016908 mImpl->log("finish vkCmdDrawIndexedIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016909}
16910
16911#endif
16912#ifdef VK_KHR_8bit_storage
16913#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080016914#ifdef VK_ANDROID_native_buffer
16915VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
16916 VkDevice device,
16917 VkFormat format,
16918 VkImageUsageFlags imageUsage,
16919 int* grallocUsage)
16920{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016921 mImpl->log("start vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080016922 auto stream = mImpl->stream();
16923 auto countingStream = mImpl->countingStream();
16924 auto resources = mImpl->resources();
16925 auto pool = mImpl->pool();
16926 stream->setHandleMapping(resources->unwrapMapping());
16927 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016928 VkFormat local_format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016929 VkImageUsageFlags local_imageUsage;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016930 local_device = device;
16931 local_format = format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016932 local_imageUsage = imageUsage;
16933 countingStream->rewind();
16934 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016935 uint64_t cgen_var_1178;
16936 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1178, 1);
16937 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016938 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
16939 countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
16940 countingStream->write((int*)grallocUsage, sizeof(int));
16941 }
16942 uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16943 countingStream->rewind();
16944 uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
16945 stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
16946 stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016947 uint64_t cgen_var_1179;
16948 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1179, 1);
16949 stream->write((uint64_t*)&cgen_var_1179, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016950 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
16951 stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
16952 stream->write((int*)grallocUsage, sizeof(int));
16953 stream->read((int*)grallocUsage, sizeof(int));
16954 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
16955 stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
16956 countingStream->clearPool();
16957 stream->clearPool();
16958 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016959 mImpl->log("finish vkGetSwapchainGrallocUsageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016960 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
16961}
16962
16963VkResult VkEncoder::vkAcquireImageANDROID(
16964 VkDevice device,
16965 VkImage image,
16966 int nativeFenceFd,
16967 VkSemaphore semaphore,
16968 VkFence fence)
16969{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016970 mImpl->log("start vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080016971 auto stream = mImpl->stream();
16972 auto countingStream = mImpl->countingStream();
16973 auto resources = mImpl->resources();
16974 auto pool = mImpl->pool();
16975 stream->setHandleMapping(resources->unwrapMapping());
16976 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016977 VkImage local_image;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016978 int local_nativeFenceFd;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016979 VkSemaphore local_semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016980 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016981 local_device = device;
16982 local_image = image;
16983 local_nativeFenceFd = nativeFenceFd;
16984 local_semaphore = semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016985 local_fence = fence;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -080016986 mImpl->resources()->unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016987 countingStream->rewind();
16988 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016989 uint64_t cgen_var_1180;
16990 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1180, 1);
16991 countingStream->write((uint64_t*)&cgen_var_1180, 1 * 8);
16992 uint64_t cgen_var_1181;
16993 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1181, 1);
16994 countingStream->write((uint64_t*)&cgen_var_1181, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016995 countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016996 uint64_t cgen_var_1182;
16997 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1182, 1);
16998 countingStream->write((uint64_t*)&cgen_var_1182, 1 * 8);
16999 uint64_t cgen_var_1183;
17000 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1183, 1);
17001 countingStream->write((uint64_t*)&cgen_var_1183, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017002 }
17003 uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17004 countingStream->rewind();
17005 uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
17006 stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
17007 stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017008 uint64_t cgen_var_1184;
17009 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1184, 1);
17010 stream->write((uint64_t*)&cgen_var_1184, 1 * 8);
17011 uint64_t cgen_var_1185;
17012 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1185, 1);
17013 stream->write((uint64_t*)&cgen_var_1185, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017014 stream->write((int*)&local_nativeFenceFd, sizeof(int));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017015 uint64_t cgen_var_1186;
17016 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1186, 1);
17017 stream->write((uint64_t*)&cgen_var_1186, 1 * 8);
17018 uint64_t cgen_var_1187;
17019 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1187, 1);
17020 stream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017021 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
17022 stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
17023 countingStream->clearPool();
17024 stream->clearPool();
17025 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017026 mImpl->log("finish vkAcquireImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017027 return vkAcquireImageANDROID_VkResult_return;
17028}
17029
17030VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
17031 VkQueue queue,
17032 uint32_t waitSemaphoreCount,
17033 const VkSemaphore* pWaitSemaphores,
17034 VkImage image,
17035 int* pNativeFenceFd)
17036{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017037 mImpl->log("start vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017038 auto stream = mImpl->stream();
17039 auto countingStream = mImpl->countingStream();
17040 auto resources = mImpl->resources();
17041 auto pool = mImpl->pool();
17042 stream->setHandleMapping(resources->unwrapMapping());
17043 VkQueue local_queue;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017044 uint32_t local_waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017045 VkSemaphore* local_pWaitSemaphores;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017046 VkImage local_image;
17047 local_queue = queue;
17048 local_waitSemaphoreCount = waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017049 local_pWaitSemaphores = nullptr;
17050 if (pWaitSemaphores)
17051 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017052 local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, ((waitSemaphoreCount)) * sizeof(const VkSemaphore));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017053 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017054 local_image = image;
17055 countingStream->rewind();
17056 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017057 uint64_t cgen_var_1188;
17058 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1188, 1);
17059 countingStream->write((uint64_t*)&cgen_var_1188, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017060 countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017061 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017062 uint64_t cgen_var_1189 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17063 countingStream->putBe64(cgen_var_1189);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017064 if (local_pWaitSemaphores)
17065 {
17066 if (((waitSemaphoreCount)))
17067 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017068 uint64_t* cgen_var_1190;
17069 countingStream->alloc((void**)&cgen_var_1190, ((waitSemaphoreCount)) * 8);
17070 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1190, ((waitSemaphoreCount)));
17071 countingStream->write((uint64_t*)cgen_var_1190, ((waitSemaphoreCount)) * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017072 }
17073 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017074 uint64_t cgen_var_1191;
17075 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1191, 1);
17076 countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017077 countingStream->write((int*)pNativeFenceFd, sizeof(int));
17078 }
17079 uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17080 countingStream->rewind();
17081 uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
17082 stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
17083 stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017084 uint64_t cgen_var_1192;
17085 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1192, 1);
17086 stream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017087 stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
17088 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017089 uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17090 stream->putBe64(cgen_var_1193);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017091 if (local_pWaitSemaphores)
17092 {
17093 if (((waitSemaphoreCount)))
17094 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017095 uint64_t* cgen_var_1194;
17096 stream->alloc((void**)&cgen_var_1194, ((waitSemaphoreCount)) * 8);
17097 stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1194, ((waitSemaphoreCount)));
17098 stream->write((uint64_t*)cgen_var_1194, ((waitSemaphoreCount)) * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017099 }
17100 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017101 uint64_t cgen_var_1195;
17102 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1195, 1);
17103 stream->write((uint64_t*)&cgen_var_1195, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017104 stream->write((int*)pNativeFenceFd, sizeof(int));
17105 stream->read((int*)pNativeFenceFd, sizeof(int));
17106 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
17107 stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
17108 countingStream->clearPool();
17109 stream->clearPool();
17110 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017111 mImpl->log("finish vkQueueSignalReleaseImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017112 return vkQueueSignalReleaseImageANDROID_VkResult_return;
17113}
17114
17115#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017116#ifdef VK_EXT_debug_report
17117VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
17118 VkInstance instance,
17119 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
17120 const VkAllocationCallbacks* pAllocator,
17121 VkDebugReportCallbackEXT* pCallback)
17122{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017123 mImpl->log("start vkCreateDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017124 auto stream = mImpl->stream();
17125 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017126 auto resources = mImpl->resources();
17127 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017128 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017129 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017130 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017131 VkAllocationCallbacks* local_pAllocator;
17132 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017133 local_pCreateInfo = nullptr;
17134 if (pCreateInfo)
17135 {
17136 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
17137 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
17138 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017139 local_pAllocator = nullptr;
17140 if (pAllocator)
17141 {
17142 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17143 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17144 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017145 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017146 if (local_pCreateInfo)
17147 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017148 transform_tohost_VkDebugReportCallbackCreateInfoEXT(mImpl->resources(), (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017149 }
17150 if (local_pAllocator)
17151 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017152 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017153 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017154 countingStream->rewind();
17155 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017156 uint64_t cgen_var_1196;
17157 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1196, 1);
17158 countingStream->write((uint64_t*)&cgen_var_1196, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017159 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017160 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017161 uint64_t cgen_var_1197 = (uint64_t)(uintptr_t)local_pAllocator;
17162 countingStream->putBe64(cgen_var_1197);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017163 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017164 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017165 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017166 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017167 uint64_t cgen_var_1198;
17168 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1198, 1);
17169 countingStream->write((uint64_t*)&cgen_var_1198, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017170 }
17171 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17172 countingStream->rewind();
17173 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
17174 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
17175 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017176 uint64_t cgen_var_1199;
17177 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1199, 1);
17178 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017179 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017180 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017181 uint64_t cgen_var_1200 = (uint64_t)(uintptr_t)local_pAllocator;
17182 stream->putBe64(cgen_var_1200);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017183 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017184 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017185 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017186 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017187 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017188 uint64_t cgen_var_1201;
17189 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1201, 1);
17190 stream->write((uint64_t*)&cgen_var_1201, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017191 stream->setHandleMapping(resources->unwrapMapping());
17192 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017193 uint64_t cgen_var_1202;
17194 stream->read((uint64_t*)&cgen_var_1202, 8);
17195 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1202, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017196 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017197 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
17198 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017199 countingStream->clearPool();
17200 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017201 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017202 mImpl->log("finish vkCreateDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017203 return vkCreateDebugReportCallbackEXT_VkResult_return;
17204}
17205
17206void VkEncoder::vkDestroyDebugReportCallbackEXT(
17207 VkInstance instance,
17208 VkDebugReportCallbackEXT callback,
17209 const VkAllocationCallbacks* pAllocator)
17210{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017211 mImpl->log("start vkDestroyDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017212 auto stream = mImpl->stream();
17213 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017214 auto resources = mImpl->resources();
17215 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017216 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017217 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017218 VkDebugReportCallbackEXT local_callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017219 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017220 local_instance = instance;
17221 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017222 local_pAllocator = nullptr;
17223 if (pAllocator)
17224 {
17225 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17226 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17227 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017228 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017229 if (local_pAllocator)
17230 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017231 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017232 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017233 countingStream->rewind();
17234 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017235 uint64_t cgen_var_1203;
17236 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1203, 1);
17237 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
17238 uint64_t cgen_var_1204;
17239 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1204, 1);
17240 countingStream->write((uint64_t*)&cgen_var_1204, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017241 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017242 uint64_t cgen_var_1205 = (uint64_t)(uintptr_t)local_pAllocator;
17243 countingStream->putBe64(cgen_var_1205);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017244 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017245 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017246 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017247 }
17248 }
17249 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17250 countingStream->rewind();
17251 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
17252 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
17253 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017254 uint64_t cgen_var_1206;
17255 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1206, 1);
17256 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
17257 uint64_t cgen_var_1207;
17258 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1207, 1);
17259 stream->write((uint64_t*)&cgen_var_1207, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017260 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017261 uint64_t cgen_var_1208 = (uint64_t)(uintptr_t)local_pAllocator;
17262 stream->putBe64(cgen_var_1208);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017263 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017264 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017265 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017266 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017267 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017268 mImpl->log("finish vkDestroyDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017269}
17270
17271void VkEncoder::vkDebugReportMessageEXT(
17272 VkInstance instance,
17273 VkDebugReportFlagsEXT flags,
17274 VkDebugReportObjectTypeEXT objectType,
17275 uint64_t object,
17276 size_t location,
17277 int32_t messageCode,
17278 const char* pLayerPrefix,
17279 const char* pMessage)
17280{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017281 mImpl->log("start vkDebugReportMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017282 auto stream = mImpl->stream();
17283 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017284 auto resources = mImpl->resources();
17285 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017286 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017287 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017288 VkDebugReportFlagsEXT local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017289 VkDebugReportObjectTypeEXT local_objectType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017290 uint64_t local_object;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017291 size_t local_location;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017292 int32_t local_messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017293 char* local_pLayerPrefix;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017294 char* local_pMessage;
17295 local_instance = instance;
17296 local_flags = flags;
17297 local_objectType = objectType;
17298 local_object = object;
17299 local_location = location;
17300 local_messageCode = messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017301 local_pLayerPrefix = nullptr;
17302 if (pLayerPrefix)
17303 {
17304 local_pLayerPrefix = pool->strDup(pLayerPrefix);
17305 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017306 local_pMessage = nullptr;
17307 if (pMessage)
17308 {
17309 local_pMessage = pool->strDup(pMessage);
17310 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017311 countingStream->rewind();
17312 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017313 uint64_t cgen_var_1209;
17314 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1209, 1);
17315 countingStream->write((uint64_t*)&cgen_var_1209, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017316 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
17317 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
17318 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017319 uint64_t cgen_var_1210 = (uint64_t)local_location;
17320 countingStream->putBe64(cgen_var_1210);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017321 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
17322 countingStream->putString(local_pLayerPrefix);
17323 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017324 }
17325 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17326 countingStream->rewind();
17327 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
17328 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
17329 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017330 uint64_t cgen_var_1211;
17331 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1211, 1);
17332 stream->write((uint64_t*)&cgen_var_1211, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017333 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
17334 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
17335 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017336 uint64_t cgen_var_1212 = (uint64_t)local_location;
17337 stream->putBe64(cgen_var_1212);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017338 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
17339 stream->putString(local_pLayerPrefix);
17340 stream->putString(local_pMessage);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017341 mImpl->log("finish vkDebugReportMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017342}
17343
17344#endif
17345#ifdef VK_NV_glsl_shader
17346#endif
17347#ifdef VK_EXT_depth_range_unrestricted
17348#endif
17349#ifdef VK_IMG_filter_cubic
17350#endif
17351#ifdef VK_AMD_rasterization_order
17352#endif
17353#ifdef VK_AMD_shader_trinary_minmax
17354#endif
17355#ifdef VK_AMD_shader_explicit_vertex_parameter
17356#endif
17357#ifdef VK_EXT_debug_marker
17358VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
17359 VkDevice device,
17360 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
17361{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017362 mImpl->log("start vkDebugMarkerSetObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017363 auto stream = mImpl->stream();
17364 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017365 auto resources = mImpl->resources();
17366 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017367 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017368 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017369 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017370 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017371 local_pTagInfo = nullptr;
17372 if (pTagInfo)
17373 {
17374 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
17375 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
17376 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017377 if (local_pTagInfo)
17378 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017379 transform_tohost_VkDebugMarkerObjectTagInfoEXT(mImpl->resources(), (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017380 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017381 countingStream->rewind();
17382 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017383 uint64_t cgen_var_1213;
17384 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1213, 1);
17385 countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017386 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017387 }
17388 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17389 countingStream->rewind();
17390 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
17391 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
17392 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017393 uint64_t cgen_var_1214;
17394 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1214, 1);
17395 stream->write((uint64_t*)&cgen_var_1214, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017396 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017397 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
17398 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017399 countingStream->clearPool();
17400 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017401 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017402 mImpl->log("finish vkDebugMarkerSetObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017403 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
17404}
17405
17406VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
17407 VkDevice device,
17408 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
17409{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017410 mImpl->log("start vkDebugMarkerSetObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017411 auto stream = mImpl->stream();
17412 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017413 auto resources = mImpl->resources();
17414 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017415 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017416 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017417 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017418 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017419 local_pNameInfo = nullptr;
17420 if (pNameInfo)
17421 {
17422 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
17423 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
17424 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017425 if (local_pNameInfo)
17426 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017427 transform_tohost_VkDebugMarkerObjectNameInfoEXT(mImpl->resources(), (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017428 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017429 countingStream->rewind();
17430 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017431 uint64_t cgen_var_1215;
17432 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1215, 1);
17433 countingStream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017434 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017435 }
17436 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17437 countingStream->rewind();
17438 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
17439 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
17440 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017441 uint64_t cgen_var_1216;
17442 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1216, 1);
17443 stream->write((uint64_t*)&cgen_var_1216, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017444 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017445 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
17446 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017447 countingStream->clearPool();
17448 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017449 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017450 mImpl->log("finish vkDebugMarkerSetObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017451 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
17452}
17453
17454void VkEncoder::vkCmdDebugMarkerBeginEXT(
17455 VkCommandBuffer commandBuffer,
17456 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
17457{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017458 mImpl->log("start vkCmdDebugMarkerBeginEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017459 auto stream = mImpl->stream();
17460 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017461 auto resources = mImpl->resources();
17462 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017463 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017464 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017465 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017466 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017467 local_pMarkerInfo = nullptr;
17468 if (pMarkerInfo)
17469 {
17470 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
17471 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
17472 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017473 if (local_pMarkerInfo)
17474 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017475 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017476 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017477 countingStream->rewind();
17478 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017479 uint64_t cgen_var_1217;
17480 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1217, 1);
17481 countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017482 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017483 }
17484 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17485 countingStream->rewind();
17486 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
17487 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
17488 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017489 uint64_t cgen_var_1218;
17490 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1218, 1);
17491 stream->write((uint64_t*)&cgen_var_1218, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017492 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017493 mImpl->log("finish vkCmdDebugMarkerBeginEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017494}
17495
17496void VkEncoder::vkCmdDebugMarkerEndEXT(
17497 VkCommandBuffer commandBuffer)
17498{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017499 mImpl->log("start vkCmdDebugMarkerEndEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017500 auto stream = mImpl->stream();
17501 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017502 auto resources = mImpl->resources();
17503 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017504 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017505 VkCommandBuffer local_commandBuffer;
17506 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017507 countingStream->rewind();
17508 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017509 uint64_t cgen_var_1219;
17510 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1219, 1);
17511 countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017512 }
17513 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17514 countingStream->rewind();
17515 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
17516 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
17517 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017518 uint64_t cgen_var_1220;
17519 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1220, 1);
17520 stream->write((uint64_t*)&cgen_var_1220, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017521 mImpl->log("finish vkCmdDebugMarkerEndEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017522}
17523
17524void VkEncoder::vkCmdDebugMarkerInsertEXT(
17525 VkCommandBuffer commandBuffer,
17526 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
17527{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017528 mImpl->log("start vkCmdDebugMarkerInsertEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017529 auto stream = mImpl->stream();
17530 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017531 auto resources = mImpl->resources();
17532 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017533 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017534 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017535 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017536 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017537 local_pMarkerInfo = nullptr;
17538 if (pMarkerInfo)
17539 {
17540 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
17541 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
17542 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017543 if (local_pMarkerInfo)
17544 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017545 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017546 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017547 countingStream->rewind();
17548 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017549 uint64_t cgen_var_1221;
17550 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1221, 1);
17551 countingStream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017552 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017553 }
17554 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17555 countingStream->rewind();
17556 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
17557 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
17558 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017559 uint64_t cgen_var_1222;
17560 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1222, 1);
17561 stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017562 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017563 mImpl->log("finish vkCmdDebugMarkerInsertEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017564}
17565
17566#endif
17567#ifdef VK_AMD_gcn_shader
17568#endif
17569#ifdef VK_NV_dedicated_allocation
17570#endif
17571#ifdef VK_AMD_draw_indirect_count
17572void VkEncoder::vkCmdDrawIndirectCountAMD(
17573 VkCommandBuffer commandBuffer,
17574 VkBuffer buffer,
17575 VkDeviceSize offset,
17576 VkBuffer countBuffer,
17577 VkDeviceSize countBufferOffset,
17578 uint32_t maxDrawCount,
17579 uint32_t stride)
17580{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017581 mImpl->log("start vkCmdDrawIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017582 auto stream = mImpl->stream();
17583 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017584 auto resources = mImpl->resources();
17585 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017586 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017587 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017588 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017589 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017590 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017591 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017592 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017593 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017594 local_commandBuffer = commandBuffer;
17595 local_buffer = buffer;
17596 local_offset = offset;
17597 local_countBuffer = countBuffer;
17598 local_countBufferOffset = countBufferOffset;
17599 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017600 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017601 countingStream->rewind();
17602 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017603 uint64_t cgen_var_1223;
17604 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1223, 1);
17605 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
17606 uint64_t cgen_var_1224;
17607 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1224, 1);
17608 countingStream->write((uint64_t*)&cgen_var_1224, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017609 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017610 uint64_t cgen_var_1225;
17611 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1225, 1);
17612 countingStream->write((uint64_t*)&cgen_var_1225, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017613 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17614 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17615 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017616 }
17617 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17618 countingStream->rewind();
17619 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
17620 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
17621 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017622 uint64_t cgen_var_1226;
17623 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1226, 1);
17624 stream->write((uint64_t*)&cgen_var_1226, 1 * 8);
17625 uint64_t cgen_var_1227;
17626 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1227, 1);
17627 stream->write((uint64_t*)&cgen_var_1227, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017628 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017629 uint64_t cgen_var_1228;
17630 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1228, 1);
17631 stream->write((uint64_t*)&cgen_var_1228, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017632 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17633 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17634 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017635 mImpl->log("finish vkCmdDrawIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017636}
17637
17638void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
17639 VkCommandBuffer commandBuffer,
17640 VkBuffer buffer,
17641 VkDeviceSize offset,
17642 VkBuffer countBuffer,
17643 VkDeviceSize countBufferOffset,
17644 uint32_t maxDrawCount,
17645 uint32_t stride)
17646{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017647 mImpl->log("start vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017648 auto stream = mImpl->stream();
17649 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017650 auto resources = mImpl->resources();
17651 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017652 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017653 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017654 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017655 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017656 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017657 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017658 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017659 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017660 local_commandBuffer = commandBuffer;
17661 local_buffer = buffer;
17662 local_offset = offset;
17663 local_countBuffer = countBuffer;
17664 local_countBufferOffset = countBufferOffset;
17665 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017666 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017667 countingStream->rewind();
17668 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017669 uint64_t cgen_var_1229;
17670 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1229, 1);
17671 countingStream->write((uint64_t*)&cgen_var_1229, 1 * 8);
17672 uint64_t cgen_var_1230;
17673 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1230, 1);
17674 countingStream->write((uint64_t*)&cgen_var_1230, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017675 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017676 uint64_t cgen_var_1231;
17677 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1231, 1);
17678 countingStream->write((uint64_t*)&cgen_var_1231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017679 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17680 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17681 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017682 }
17683 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17684 countingStream->rewind();
17685 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
17686 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
17687 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017688 uint64_t cgen_var_1232;
17689 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1232, 1);
17690 stream->write((uint64_t*)&cgen_var_1232, 1 * 8);
17691 uint64_t cgen_var_1233;
17692 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1233, 1);
17693 stream->write((uint64_t*)&cgen_var_1233, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017694 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017695 uint64_t cgen_var_1234;
17696 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1234, 1);
17697 stream->write((uint64_t*)&cgen_var_1234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017698 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17699 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17700 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017701 mImpl->log("finish vkCmdDrawIndexedIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017702}
17703
17704#endif
17705#ifdef VK_AMD_negative_viewport_height
17706#endif
17707#ifdef VK_AMD_gpu_shader_half_float
17708#endif
17709#ifdef VK_AMD_shader_ballot
17710#endif
17711#ifdef VK_AMD_texture_gather_bias_lod
17712#endif
17713#ifdef VK_AMD_shader_info
17714VkResult VkEncoder::vkGetShaderInfoAMD(
17715 VkDevice device,
17716 VkPipeline pipeline,
17717 VkShaderStageFlagBits shaderStage,
17718 VkShaderInfoTypeAMD infoType,
17719 size_t* pInfoSize,
17720 void* pInfo)
17721{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017722 mImpl->log("start vkGetShaderInfoAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017723 auto stream = mImpl->stream();
17724 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017725 auto resources = mImpl->resources();
17726 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017727 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017728 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017729 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017730 VkShaderStageFlagBits local_shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017731 VkShaderInfoTypeAMD local_infoType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017732 local_device = device;
17733 local_pipeline = pipeline;
17734 local_shaderStage = shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017735 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017736 countingStream->rewind();
17737 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017738 uint64_t cgen_var_1235;
17739 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1235, 1);
17740 countingStream->write((uint64_t*)&cgen_var_1235, 1 * 8);
17741 uint64_t cgen_var_1236;
17742 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1236, 1);
17743 countingStream->write((uint64_t*)&cgen_var_1236, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017744 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
17745 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017746 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017747 uint64_t cgen_var_1237 = (uint64_t)(uintptr_t)pInfoSize;
17748 countingStream->putBe64(cgen_var_1237);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017749 if (pInfoSize)
17750 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017751 uint64_t cgen_var_1238 = (uint64_t)(*pInfoSize);
17752 countingStream->putBe64(cgen_var_1238);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017753 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017754 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017755 uint64_t cgen_var_1239 = (uint64_t)(uintptr_t)pInfo;
17756 countingStream->putBe64(cgen_var_1239);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017757 if (pInfo)
17758 {
17759 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17760 }
17761 }
17762 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17763 countingStream->rewind();
17764 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
17765 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
17766 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017767 uint64_t cgen_var_1240;
17768 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1240, 1);
17769 stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
17770 uint64_t cgen_var_1241;
17771 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1241, 1);
17772 stream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017773 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
17774 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017775 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017776 uint64_t cgen_var_1242 = (uint64_t)(uintptr_t)pInfoSize;
17777 stream->putBe64(cgen_var_1242);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017778 if (pInfoSize)
17779 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017780 uint64_t cgen_var_1243 = (uint64_t)(*pInfoSize);
17781 stream->putBe64(cgen_var_1243);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017782 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017783 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017784 uint64_t cgen_var_1244 = (uint64_t)(uintptr_t)pInfo;
17785 stream->putBe64(cgen_var_1244);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017786 if (pInfo)
17787 {
17788 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17789 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017790 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017791 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017792 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017793 if (pInfoSize)
17794 {
17795 if (!(check_pInfoSize))
17796 {
17797 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
17798 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017799 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017800 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017801 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017802 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017803 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017804 if (pInfo)
17805 {
17806 if (!(check_pInfo))
17807 {
17808 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
17809 }
17810 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17811 }
17812 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
17813 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017814 countingStream->clearPool();
17815 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017816 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017817 mImpl->log("finish vkGetShaderInfoAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017818 return vkGetShaderInfoAMD_VkResult_return;
17819}
17820
17821#endif
17822#ifdef VK_AMD_shader_image_load_store_lod
17823#endif
17824#ifdef VK_IMG_format_pvrtc
17825#endif
17826#ifdef VK_NV_external_memory_capabilities
17827VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
17828 VkPhysicalDevice physicalDevice,
17829 VkFormat format,
17830 VkImageType type,
17831 VkImageTiling tiling,
17832 VkImageUsageFlags usage,
17833 VkImageCreateFlags flags,
17834 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
17835 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
17836{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017837 mImpl->log("start vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017838 auto stream = mImpl->stream();
17839 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017840 auto resources = mImpl->resources();
17841 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017842 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017843 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017844 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017845 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017846 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017847 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017848 VkImageCreateFlags local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017849 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017850 local_physicalDevice = physicalDevice;
17851 local_format = format;
17852 local_type = type;
17853 local_tiling = tiling;
17854 local_usage = usage;
17855 local_flags = flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017856 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017857 countingStream->rewind();
17858 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017859 uint64_t cgen_var_1248;
17860 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1248, 1);
17861 countingStream->write((uint64_t*)&cgen_var_1248, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017862 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
17863 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
17864 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
17865 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
17866 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
17867 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017868 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17869 }
17870 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17871 countingStream->rewind();
17872 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
17873 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
17874 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017875 uint64_t cgen_var_1249;
17876 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1249, 1);
17877 stream->write((uint64_t*)&cgen_var_1249, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017878 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
17879 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
17880 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
17881 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
17882 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
17883 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017884 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17885 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017886 if (pExternalImageFormatProperties)
17887 {
17888 transform_fromhost_VkExternalImageFormatPropertiesNV(mImpl->resources(), (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17889 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017890 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
17891 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017892 countingStream->clearPool();
17893 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017894 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017895 mImpl->log("finish vkGetPhysicalDeviceExternalImageFormatPropertiesNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017896 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
17897}
17898
17899#endif
17900#ifdef VK_NV_external_memory
17901#endif
17902#ifdef VK_NV_external_memory_win32
17903VkResult VkEncoder::vkGetMemoryWin32HandleNV(
17904 VkDevice device,
17905 VkDeviceMemory memory,
17906 VkExternalMemoryHandleTypeFlagsNV handleType,
17907 HANDLE* pHandle)
17908{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017909 mImpl->log("start vkGetMemoryWin32HandleNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017910 auto stream = mImpl->stream();
17911 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017912 auto resources = mImpl->resources();
17913 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017914 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017915 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017916 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017917 VkExternalMemoryHandleTypeFlagsNV local_handleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017918 local_device = device;
17919 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017920 local_handleType = handleType;
Lingfeng Yangafe29d32018-12-25 13:01:52 -080017921 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017922 countingStream->rewind();
17923 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017924 uint64_t cgen_var_1250;
17925 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1250, 1);
17926 countingStream->write((uint64_t*)&cgen_var_1250, 1 * 8);
17927 uint64_t cgen_var_1251;
17928 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1251, 1);
17929 countingStream->write((uint64_t*)&cgen_var_1251, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017930 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017931 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
17932 }
17933 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17934 countingStream->rewind();
17935 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
17936 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
17937 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017938 uint64_t cgen_var_1252;
17939 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1252, 1);
17940 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
17941 uint64_t cgen_var_1253;
17942 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1253, 1);
17943 stream->write((uint64_t*)&cgen_var_1253, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017944 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017945 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
17946 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
17947 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
17948 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017949 countingStream->clearPool();
17950 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017951 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017952 mImpl->log("finish vkGetMemoryWin32HandleNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017953 return vkGetMemoryWin32HandleNV_VkResult_return;
17954}
17955
17956#endif
17957#ifdef VK_NV_win32_keyed_mutex
17958#endif
17959#ifdef VK_EXT_validation_flags
17960#endif
17961#ifdef VK_NN_vi_surface
17962VkResult VkEncoder::vkCreateViSurfaceNN(
17963 VkInstance instance,
17964 const VkViSurfaceCreateInfoNN* pCreateInfo,
17965 const VkAllocationCallbacks* pAllocator,
17966 VkSurfaceKHR* pSurface)
17967{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017968 mImpl->log("start vkCreateViSurfaceNN");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017969 auto stream = mImpl->stream();
17970 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017971 auto resources = mImpl->resources();
17972 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017973 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017974 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017975 VkViSurfaceCreateInfoNN* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017976 VkAllocationCallbacks* local_pAllocator;
17977 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017978 local_pCreateInfo = nullptr;
17979 if (pCreateInfo)
17980 {
17981 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
17982 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
17983 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017984 local_pAllocator = nullptr;
17985 if (pAllocator)
17986 {
17987 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17988 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17989 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017990 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017991 if (local_pCreateInfo)
17992 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017993 transform_tohost_VkViSurfaceCreateInfoNN(mImpl->resources(), (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017994 }
17995 if (local_pAllocator)
17996 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017997 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017998 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017999 countingStream->rewind();
18000 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018001 uint64_t cgen_var_1254;
18002 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1254, 1);
18003 countingStream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018004 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018005 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018006 uint64_t cgen_var_1255 = (uint64_t)(uintptr_t)local_pAllocator;
18007 countingStream->putBe64(cgen_var_1255);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018008 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018009 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018010 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018011 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018012 uint64_t cgen_var_1256;
18013 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1256, 1);
18014 countingStream->write((uint64_t*)&cgen_var_1256, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018015 }
18016 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18017 countingStream->rewind();
18018 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
18019 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
18020 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018021 uint64_t cgen_var_1257;
18022 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1257, 1);
18023 stream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018024 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018025 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018026 uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
18027 stream->putBe64(cgen_var_1258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018028 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018029 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018030 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018031 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018032 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018033 uint64_t cgen_var_1259;
18034 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1259, 1);
18035 stream->write((uint64_t*)&cgen_var_1259, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018036 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018037 uint64_t cgen_var_1260;
18038 stream->read((uint64_t*)&cgen_var_1260, 8);
18039 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1260, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018040 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
18041 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018042 countingStream->clearPool();
18043 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018044 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018045 mImpl->log("finish vkCreateViSurfaceNN");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018046 return vkCreateViSurfaceNN_VkResult_return;
18047}
18048
18049#endif
18050#ifdef VK_EXT_shader_subgroup_ballot
18051#endif
18052#ifdef VK_EXT_shader_subgroup_vote
18053#endif
18054#ifdef VK_EXT_conditional_rendering
18055void VkEncoder::vkCmdBeginConditionalRenderingEXT(
18056 VkCommandBuffer commandBuffer,
18057 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
18058{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018059 mImpl->log("start vkCmdBeginConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018060 auto stream = mImpl->stream();
18061 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018062 auto resources = mImpl->resources();
18063 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018064 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018065 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018066 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018067 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018068 local_pConditionalRenderingBegin = nullptr;
18069 if (pConditionalRenderingBegin)
18070 {
18071 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
18072 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
18073 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018074 if (local_pConditionalRenderingBegin)
18075 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018076 transform_tohost_VkConditionalRenderingBeginInfoEXT(mImpl->resources(), (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018077 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018078 countingStream->rewind();
18079 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018080 uint64_t cgen_var_1261;
18081 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1261, 1);
18082 countingStream->write((uint64_t*)&cgen_var_1261, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018083 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018084 }
18085 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18086 countingStream->rewind();
18087 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
18088 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
18089 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018090 uint64_t cgen_var_1262;
18091 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1262, 1);
18092 stream->write((uint64_t*)&cgen_var_1262, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018093 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018094 mImpl->log("finish vkCmdBeginConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018095}
18096
18097void VkEncoder::vkCmdEndConditionalRenderingEXT(
18098 VkCommandBuffer commandBuffer)
18099{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018100 mImpl->log("start vkCmdEndConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018101 auto stream = mImpl->stream();
18102 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018103 auto resources = mImpl->resources();
18104 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018105 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018106 VkCommandBuffer local_commandBuffer;
18107 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018108 countingStream->rewind();
18109 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018110 uint64_t cgen_var_1263;
18111 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1263, 1);
18112 countingStream->write((uint64_t*)&cgen_var_1263, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018113 }
18114 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18115 countingStream->rewind();
18116 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
18117 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
18118 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018119 uint64_t cgen_var_1264;
18120 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1264, 1);
18121 stream->write((uint64_t*)&cgen_var_1264, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018122 mImpl->log("finish vkCmdEndConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018123}
18124
18125#endif
18126#ifdef VK_NVX_device_generated_commands
18127void VkEncoder::vkCmdProcessCommandsNVX(
18128 VkCommandBuffer commandBuffer,
18129 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
18130{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018131 mImpl->log("start vkCmdProcessCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018132 auto stream = mImpl->stream();
18133 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018134 auto resources = mImpl->resources();
18135 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018136 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018137 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018138 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018139 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018140 local_pProcessCommandsInfo = nullptr;
18141 if (pProcessCommandsInfo)
18142 {
18143 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
18144 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
18145 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018146 if (local_pProcessCommandsInfo)
18147 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018148 transform_tohost_VkCmdProcessCommandsInfoNVX(mImpl->resources(), (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018149 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018150 countingStream->rewind();
18151 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018152 uint64_t cgen_var_1265;
18153 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1265, 1);
18154 countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018155 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018156 }
18157 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18158 countingStream->rewind();
18159 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
18160 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
18161 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018162 uint64_t cgen_var_1266;
18163 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1266, 1);
18164 stream->write((uint64_t*)&cgen_var_1266, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018165 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018166 mImpl->log("finish vkCmdProcessCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018167}
18168
18169void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
18170 VkCommandBuffer commandBuffer,
18171 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
18172{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018173 mImpl->log("start vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018174 auto stream = mImpl->stream();
18175 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018176 auto resources = mImpl->resources();
18177 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018178 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018179 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018180 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018181 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018182 local_pReserveSpaceInfo = nullptr;
18183 if (pReserveSpaceInfo)
18184 {
18185 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
18186 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
18187 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018188 if (local_pReserveSpaceInfo)
18189 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018190 transform_tohost_VkCmdReserveSpaceForCommandsInfoNVX(mImpl->resources(), (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018191 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018192 countingStream->rewind();
18193 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018194 uint64_t cgen_var_1267;
18195 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1267, 1);
18196 countingStream->write((uint64_t*)&cgen_var_1267, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018197 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018198 }
18199 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18200 countingStream->rewind();
18201 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
18202 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
18203 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018204 uint64_t cgen_var_1268;
18205 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1268, 1);
18206 stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018207 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018208 mImpl->log("finish vkCmdReserveSpaceForCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018209}
18210
18211VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
18212 VkDevice device,
18213 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
18214 const VkAllocationCallbacks* pAllocator,
18215 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
18216{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018217 mImpl->log("start vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018218 auto stream = mImpl->stream();
18219 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018220 auto resources = mImpl->resources();
18221 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018222 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018223 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018224 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018225 VkAllocationCallbacks* local_pAllocator;
18226 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018227 local_pCreateInfo = nullptr;
18228 if (pCreateInfo)
18229 {
18230 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
18231 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
18232 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018233 local_pAllocator = nullptr;
18234 if (pAllocator)
18235 {
18236 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18237 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18238 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018239 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018240 if (local_pCreateInfo)
18241 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018242 transform_tohost_VkIndirectCommandsLayoutCreateInfoNVX(mImpl->resources(), (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018243 }
18244 if (local_pAllocator)
18245 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018246 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018247 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018248 countingStream->rewind();
18249 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018250 uint64_t cgen_var_1269;
18251 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1269, 1);
18252 countingStream->write((uint64_t*)&cgen_var_1269, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018253 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018254 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018255 uint64_t cgen_var_1270 = (uint64_t)(uintptr_t)local_pAllocator;
18256 countingStream->putBe64(cgen_var_1270);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018257 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018258 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018259 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018260 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018261 uint64_t cgen_var_1271;
18262 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1271, 1);
18263 countingStream->write((uint64_t*)&cgen_var_1271, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018264 }
18265 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18266 countingStream->rewind();
18267 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
18268 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
18269 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018270 uint64_t cgen_var_1272;
18271 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1272, 1);
18272 stream->write((uint64_t*)&cgen_var_1272, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018273 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018274 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018275 uint64_t cgen_var_1273 = (uint64_t)(uintptr_t)local_pAllocator;
18276 stream->putBe64(cgen_var_1273);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018277 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018278 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018279 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018280 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018281 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018282 uint64_t cgen_var_1274;
18283 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1274, 1);
18284 stream->write((uint64_t*)&cgen_var_1274, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018285 stream->setHandleMapping(resources->unwrapMapping());
18286 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018287 uint64_t cgen_var_1275;
18288 stream->read((uint64_t*)&cgen_var_1275, 8);
18289 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1275, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018290 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018291 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
18292 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018293 countingStream->clearPool();
18294 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018295 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018296 mImpl->log("finish vkCreateIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018297 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
18298}
18299
18300void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
18301 VkDevice device,
18302 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
18303 const VkAllocationCallbacks* pAllocator)
18304{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018305 mImpl->log("start vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018306 auto stream = mImpl->stream();
18307 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018308 auto resources = mImpl->resources();
18309 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018310 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018311 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018312 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018313 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018314 local_device = device;
18315 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018316 local_pAllocator = nullptr;
18317 if (pAllocator)
18318 {
18319 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18320 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18321 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018322 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018323 if (local_pAllocator)
18324 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018325 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018326 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018327 countingStream->rewind();
18328 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018329 uint64_t cgen_var_1276;
18330 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1276, 1);
18331 countingStream->write((uint64_t*)&cgen_var_1276, 1 * 8);
18332 uint64_t cgen_var_1277;
18333 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1277, 1);
18334 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018335 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018336 uint64_t cgen_var_1278 = (uint64_t)(uintptr_t)local_pAllocator;
18337 countingStream->putBe64(cgen_var_1278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018338 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018339 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018340 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018341 }
18342 }
18343 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18344 countingStream->rewind();
18345 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
18346 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
18347 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018348 uint64_t cgen_var_1279;
18349 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1279, 1);
18350 stream->write((uint64_t*)&cgen_var_1279, 1 * 8);
18351 uint64_t cgen_var_1280;
18352 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1280, 1);
18353 stream->write((uint64_t*)&cgen_var_1280, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018354 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018355 uint64_t cgen_var_1281 = (uint64_t)(uintptr_t)local_pAllocator;
18356 stream->putBe64(cgen_var_1281);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018357 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018358 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018359 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018360 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018361 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018362 mImpl->log("finish vkDestroyIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018363}
18364
18365VkResult VkEncoder::vkCreateObjectTableNVX(
18366 VkDevice device,
18367 const VkObjectTableCreateInfoNVX* pCreateInfo,
18368 const VkAllocationCallbacks* pAllocator,
18369 VkObjectTableNVX* pObjectTable)
18370{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018371 mImpl->log("start vkCreateObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018372 auto stream = mImpl->stream();
18373 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018374 auto resources = mImpl->resources();
18375 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018376 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018377 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018378 VkObjectTableCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018379 VkAllocationCallbacks* local_pAllocator;
18380 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018381 local_pCreateInfo = nullptr;
18382 if (pCreateInfo)
18383 {
18384 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
18385 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
18386 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018387 local_pAllocator = nullptr;
18388 if (pAllocator)
18389 {
18390 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18391 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18392 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018393 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018394 if (local_pCreateInfo)
18395 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018396 transform_tohost_VkObjectTableCreateInfoNVX(mImpl->resources(), (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018397 }
18398 if (local_pAllocator)
18399 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018400 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018401 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018402 countingStream->rewind();
18403 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018404 uint64_t cgen_var_1282;
18405 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1282, 1);
18406 countingStream->write((uint64_t*)&cgen_var_1282, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018407 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018408 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018409 uint64_t cgen_var_1283 = (uint64_t)(uintptr_t)local_pAllocator;
18410 countingStream->putBe64(cgen_var_1283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018411 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018412 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018413 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018414 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018415 uint64_t cgen_var_1284;
18416 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1284, 1);
18417 countingStream->write((uint64_t*)&cgen_var_1284, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018418 }
18419 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18420 countingStream->rewind();
18421 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
18422 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
18423 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018424 uint64_t cgen_var_1285;
18425 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1285, 1);
18426 stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018427 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018428 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018429 uint64_t cgen_var_1286 = (uint64_t)(uintptr_t)local_pAllocator;
18430 stream->putBe64(cgen_var_1286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018431 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018432 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018433 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018434 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018435 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018436 uint64_t cgen_var_1287;
18437 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1287, 1);
18438 stream->write((uint64_t*)&cgen_var_1287, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018439 stream->setHandleMapping(resources->unwrapMapping());
18440 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018441 uint64_t cgen_var_1288;
18442 stream->read((uint64_t*)&cgen_var_1288, 8);
18443 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1288, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018444 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018445 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
18446 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018447 countingStream->clearPool();
18448 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018449 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018450 mImpl->log("finish vkCreateObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018451 return vkCreateObjectTableNVX_VkResult_return;
18452}
18453
18454void VkEncoder::vkDestroyObjectTableNVX(
18455 VkDevice device,
18456 VkObjectTableNVX objectTable,
18457 const VkAllocationCallbacks* pAllocator)
18458{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018459 mImpl->log("start vkDestroyObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018460 auto stream = mImpl->stream();
18461 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018462 auto resources = mImpl->resources();
18463 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018464 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018465 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018466 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018467 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018468 local_device = device;
18469 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018470 local_pAllocator = nullptr;
18471 if (pAllocator)
18472 {
18473 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18474 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18475 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018476 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018477 if (local_pAllocator)
18478 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018479 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018480 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018481 countingStream->rewind();
18482 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018483 uint64_t cgen_var_1289;
18484 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
18485 countingStream->write((uint64_t*)&cgen_var_1289, 1 * 8);
18486 uint64_t cgen_var_1290;
18487 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1290, 1);
18488 countingStream->write((uint64_t*)&cgen_var_1290, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018489 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018490 uint64_t cgen_var_1291 = (uint64_t)(uintptr_t)local_pAllocator;
18491 countingStream->putBe64(cgen_var_1291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018492 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018493 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018494 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018495 }
18496 }
18497 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18498 countingStream->rewind();
18499 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
18500 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
18501 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018502 uint64_t cgen_var_1292;
18503 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1292, 1);
18504 stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
18505 uint64_t cgen_var_1293;
18506 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1293, 1);
18507 stream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018508 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018509 uint64_t cgen_var_1294 = (uint64_t)(uintptr_t)local_pAllocator;
18510 stream->putBe64(cgen_var_1294);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018511 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018512 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018513 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018514 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018515 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018516 mImpl->log("finish vkDestroyObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018517}
18518
18519VkResult VkEncoder::vkRegisterObjectsNVX(
18520 VkDevice device,
18521 VkObjectTableNVX objectTable,
18522 uint32_t objectCount,
18523 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
18524 const uint32_t* pObjectIndices)
18525{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018526 mImpl->log("start vkRegisterObjectsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018527 auto stream = mImpl->stream();
18528 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018529 auto resources = mImpl->resources();
18530 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018531 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018532 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018533 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018534 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018535 VkObjectTableEntryNVX** local_ppObjectTableEntries;
18536 uint32_t* local_pObjectIndices;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018537 local_device = device;
18538 local_objectTable = objectTable;
18539 local_objectCount = objectCount;
18540 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018541 local_pObjectIndices = nullptr;
18542 if (pObjectIndices)
18543 {
18544 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
18545 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018546 (void)local_ppObjectTableEntries;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018547 countingStream->rewind();
18548 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018549 uint64_t cgen_var_1295;
18550 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1295, 1);
18551 countingStream->write((uint64_t*)&cgen_var_1295, 1 * 8);
18552 uint64_t cgen_var_1296;
18553 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1296, 1);
18554 countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018555 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080018556 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018557 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018558 }
18559 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18560 countingStream->rewind();
18561 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
18562 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
18563 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018564 uint64_t cgen_var_1297;
18565 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1297, 1);
18566 stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
18567 uint64_t cgen_var_1298;
18568 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1298, 1);
18569 stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018570 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080018571 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018572 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018573 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
18574 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018575 countingStream->clearPool();
18576 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018577 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018578 mImpl->log("finish vkRegisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018579 return vkRegisterObjectsNVX_VkResult_return;
18580}
18581
18582VkResult VkEncoder::vkUnregisterObjectsNVX(
18583 VkDevice device,
18584 VkObjectTableNVX objectTable,
18585 uint32_t objectCount,
18586 const VkObjectEntryTypeNVX* pObjectEntryTypes,
18587 const uint32_t* pObjectIndices)
18588{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018589 mImpl->log("start vkUnregisterObjectsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018590 auto stream = mImpl->stream();
18591 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018592 auto resources = mImpl->resources();
18593 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018594 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018595 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018596 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018597 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018598 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018599 uint32_t* local_pObjectIndices;
18600 local_device = device;
18601 local_objectTable = objectTable;
18602 local_objectCount = objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018603 local_pObjectEntryTypes = nullptr;
18604 if (pObjectEntryTypes)
18605 {
18606 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
18607 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018608 local_pObjectIndices = nullptr;
18609 if (pObjectIndices)
18610 {
18611 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
18612 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018613 countingStream->rewind();
18614 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018615 uint64_t cgen_var_1299;
18616 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1299, 1);
18617 countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8);
18618 uint64_t cgen_var_1300;
18619 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1300, 1);
18620 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018621 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
18622 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
18623 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018624 }
18625 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18626 countingStream->rewind();
18627 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
18628 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
18629 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018630 uint64_t cgen_var_1301;
18631 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1301, 1);
18632 stream->write((uint64_t*)&cgen_var_1301, 1 * 8);
18633 uint64_t cgen_var_1302;
18634 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1302, 1);
18635 stream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018636 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
18637 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
18638 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018639 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
18640 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018641 countingStream->clearPool();
18642 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018643 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018644 mImpl->log("finish vkUnregisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018645 return vkUnregisterObjectsNVX_VkResult_return;
18646}
18647
18648void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
18649 VkPhysicalDevice physicalDevice,
18650 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
18651 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
18652{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018653 mImpl->log("start vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018654 auto stream = mImpl->stream();
18655 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018656 auto resources = mImpl->resources();
18657 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018658 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018659 VkPhysicalDevice local_physicalDevice;
18660 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018661 countingStream->rewind();
18662 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018663 uint64_t cgen_var_1303;
18664 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1303, 1);
18665 countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018666 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18667 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18668 }
18669 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18670 countingStream->rewind();
18671 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
18672 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
18673 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018674 uint64_t cgen_var_1304;
18675 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1304, 1);
18676 stream->write((uint64_t*)&cgen_var_1304, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018677 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18678 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18679 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018680 if (pFeatures)
18681 {
18682 transform_fromhost_VkDeviceGeneratedCommandsFeaturesNVX(mImpl->resources(), (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18683 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018684 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018685 if (pLimits)
18686 {
18687 transform_fromhost_VkDeviceGeneratedCommandsLimitsNVX(mImpl->resources(), (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18688 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018689 mImpl->log("finish vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018690}
18691
18692#endif
18693#ifdef VK_NV_clip_space_w_scaling
18694void VkEncoder::vkCmdSetViewportWScalingNV(
18695 VkCommandBuffer commandBuffer,
18696 uint32_t firstViewport,
18697 uint32_t viewportCount,
18698 const VkViewportWScalingNV* pViewportWScalings)
18699{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018700 mImpl->log("start vkCmdSetViewportWScalingNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018701 auto stream = mImpl->stream();
18702 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018703 auto resources = mImpl->resources();
18704 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018705 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018706 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018707 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018708 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018709 VkViewportWScalingNV* local_pViewportWScalings;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018710 local_commandBuffer = commandBuffer;
18711 local_firstViewport = firstViewport;
18712 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018713 local_pViewportWScalings = nullptr;
18714 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018715 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018716 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018717 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18718 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018719 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
18720 }
18721 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018722 if (local_pViewportWScalings)
18723 {
18724 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18725 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018726 transform_tohost_VkViewportWScalingNV(mImpl->resources(), (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018727 }
18728 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018729 countingStream->rewind();
18730 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018731 uint64_t cgen_var_1305;
18732 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1305, 1);
18733 countingStream->write((uint64_t*)&cgen_var_1305, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018734 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
18735 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
18736 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18737 {
18738 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018739 }
18740 }
18741 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18742 countingStream->rewind();
18743 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
18744 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
18745 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018746 uint64_t cgen_var_1306;
18747 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1306, 1);
18748 stream->write((uint64_t*)&cgen_var_1306, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018749 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
18750 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018751 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18752 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018753 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018754 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018755 mImpl->log("finish vkCmdSetViewportWScalingNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018756}
18757
18758#endif
18759#ifdef VK_EXT_direct_mode_display
18760VkResult VkEncoder::vkReleaseDisplayEXT(
18761 VkPhysicalDevice physicalDevice,
18762 VkDisplayKHR display)
18763{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018764 mImpl->log("start vkReleaseDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018765 auto stream = mImpl->stream();
18766 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018767 auto resources = mImpl->resources();
18768 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018769 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018770 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018771 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018772 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018773 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018774 countingStream->rewind();
18775 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018776 uint64_t cgen_var_1307;
18777 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1307, 1);
18778 countingStream->write((uint64_t*)&cgen_var_1307, 1 * 8);
18779 uint64_t cgen_var_1308;
18780 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1308, 1);
18781 countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018782 }
18783 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18784 countingStream->rewind();
18785 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
18786 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
18787 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018788 uint64_t cgen_var_1309;
18789 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1309, 1);
18790 stream->write((uint64_t*)&cgen_var_1309, 1 * 8);
18791 uint64_t cgen_var_1310;
18792 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1310, 1);
18793 stream->write((uint64_t*)&cgen_var_1310, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018794 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
18795 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018796 countingStream->clearPool();
18797 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018798 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018799 mImpl->log("finish vkReleaseDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018800 return vkReleaseDisplayEXT_VkResult_return;
18801}
18802
18803#endif
18804#ifdef VK_EXT_acquire_xlib_display
18805VkResult VkEncoder::vkAcquireXlibDisplayEXT(
18806 VkPhysicalDevice physicalDevice,
18807 Display* dpy,
18808 VkDisplayKHR display)
18809{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018810 mImpl->log("start vkAcquireXlibDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018811 auto stream = mImpl->stream();
18812 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018813 auto resources = mImpl->resources();
18814 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018815 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018816 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018817 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018818 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018819 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018820 countingStream->rewind();
18821 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018822 uint64_t cgen_var_1311;
18823 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1311, 1);
18824 countingStream->write((uint64_t*)&cgen_var_1311, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018825 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018826 uint64_t cgen_var_1312;
18827 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1312, 1);
18828 countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018829 }
18830 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18831 countingStream->rewind();
18832 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
18833 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
18834 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018835 uint64_t cgen_var_1313;
18836 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1313, 1);
18837 stream->write((uint64_t*)&cgen_var_1313, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018838 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018839 uint64_t cgen_var_1314;
18840 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1314, 1);
18841 stream->write((uint64_t*)&cgen_var_1314, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018842 stream->read((Display*)dpy, sizeof(Display));
18843 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
18844 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018845 countingStream->clearPool();
18846 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018847 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018848 mImpl->log("finish vkAcquireXlibDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018849 return vkAcquireXlibDisplayEXT_VkResult_return;
18850}
18851
18852VkResult VkEncoder::vkGetRandROutputDisplayEXT(
18853 VkPhysicalDevice physicalDevice,
18854 Display* dpy,
18855 RROutput rrOutput,
18856 VkDisplayKHR* pDisplay)
18857{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018858 mImpl->log("start vkGetRandROutputDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018859 auto stream = mImpl->stream();
18860 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018861 auto resources = mImpl->resources();
18862 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018863 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018864 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018865 RROutput local_rrOutput;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018866 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018867 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018868 countingStream->rewind();
18869 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018870 uint64_t cgen_var_1315;
18871 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1315, 1);
18872 countingStream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018873 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018874 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018875 uint64_t cgen_var_1316;
18876 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1316, 1);
18877 countingStream->write((uint64_t*)&cgen_var_1316, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018878 }
18879 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18880 countingStream->rewind();
18881 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
18882 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
18883 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018884 uint64_t cgen_var_1317;
18885 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1317, 1);
18886 stream->write((uint64_t*)&cgen_var_1317, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018887 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018888 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080018889 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018890 uint64_t cgen_var_1318;
18891 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1318, 1);
18892 stream->write((uint64_t*)&cgen_var_1318, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018893 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018894 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018895 uint64_t cgen_var_1319;
18896 stream->read((uint64_t*)&cgen_var_1319, 8);
18897 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1319, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018898 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
18899 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018900 countingStream->clearPool();
18901 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018902 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018903 mImpl->log("finish vkGetRandROutputDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018904 return vkGetRandROutputDisplayEXT_VkResult_return;
18905}
18906
18907#endif
18908#ifdef VK_EXT_display_surface_counter
18909VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
18910 VkPhysicalDevice physicalDevice,
18911 VkSurfaceKHR surface,
18912 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
18913{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018914 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018915 auto stream = mImpl->stream();
18916 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018917 auto resources = mImpl->resources();
18918 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018919 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018920 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018921 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018922 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018923 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018924 countingStream->rewind();
18925 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018926 uint64_t cgen_var_1320;
18927 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1320, 1);
18928 countingStream->write((uint64_t*)&cgen_var_1320, 1 * 8);
18929 uint64_t cgen_var_1321;
18930 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1321, 1);
18931 countingStream->write((uint64_t*)&cgen_var_1321, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018932 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18933 }
18934 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18935 countingStream->rewind();
18936 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
18937 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
18938 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018939 uint64_t cgen_var_1322;
18940 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1322, 1);
18941 stream->write((uint64_t*)&cgen_var_1322, 1 * 8);
18942 uint64_t cgen_var_1323;
18943 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1323, 1);
18944 stream->write((uint64_t*)&cgen_var_1323, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018945 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18946 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018947 if (pSurfaceCapabilities)
18948 {
18949 transform_fromhost_VkSurfaceCapabilities2EXT(mImpl->resources(), (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18950 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018951 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
18952 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018953 countingStream->clearPool();
18954 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018955 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018956 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2EXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018957 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
18958}
18959
18960#endif
18961#ifdef VK_EXT_display_control
18962VkResult VkEncoder::vkDisplayPowerControlEXT(
18963 VkDevice device,
18964 VkDisplayKHR display,
18965 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
18966{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018967 mImpl->log("start vkDisplayPowerControlEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018968 auto stream = mImpl->stream();
18969 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018970 auto resources = mImpl->resources();
18971 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018972 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018973 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018974 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018975 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018976 local_device = device;
18977 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018978 local_pDisplayPowerInfo = nullptr;
18979 if (pDisplayPowerInfo)
18980 {
18981 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
18982 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
18983 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018984 if (local_pDisplayPowerInfo)
18985 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018986 transform_tohost_VkDisplayPowerInfoEXT(mImpl->resources(), (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018987 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018988 countingStream->rewind();
18989 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018990 uint64_t cgen_var_1324;
18991 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1324, 1);
18992 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
18993 uint64_t cgen_var_1325;
18994 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1325, 1);
18995 countingStream->write((uint64_t*)&cgen_var_1325, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018996 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018997 }
18998 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18999 countingStream->rewind();
19000 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
19001 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
19002 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019003 uint64_t cgen_var_1326;
19004 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1326, 1);
19005 stream->write((uint64_t*)&cgen_var_1326, 1 * 8);
19006 uint64_t cgen_var_1327;
19007 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1327, 1);
19008 stream->write((uint64_t*)&cgen_var_1327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019009 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019010 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
19011 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019012 countingStream->clearPool();
19013 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019014 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019015 mImpl->log("finish vkDisplayPowerControlEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019016 return vkDisplayPowerControlEXT_VkResult_return;
19017}
19018
19019VkResult VkEncoder::vkRegisterDeviceEventEXT(
19020 VkDevice device,
19021 const VkDeviceEventInfoEXT* pDeviceEventInfo,
19022 const VkAllocationCallbacks* pAllocator,
19023 VkFence* pFence)
19024{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019025 mImpl->log("start vkRegisterDeviceEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019026 auto stream = mImpl->stream();
19027 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019028 auto resources = mImpl->resources();
19029 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019030 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019031 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019032 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019033 VkAllocationCallbacks* local_pAllocator;
19034 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019035 local_pDeviceEventInfo = nullptr;
19036 if (pDeviceEventInfo)
19037 {
19038 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
19039 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
19040 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019041 local_pAllocator = nullptr;
19042 if (pAllocator)
19043 {
19044 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19045 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19046 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019047 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019048 if (local_pDeviceEventInfo)
19049 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019050 transform_tohost_VkDeviceEventInfoEXT(mImpl->resources(), (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019051 }
19052 if (local_pAllocator)
19053 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019054 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019055 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019056 countingStream->rewind();
19057 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019058 uint64_t cgen_var_1328;
19059 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1328, 1);
19060 countingStream->write((uint64_t*)&cgen_var_1328, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019061 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019062 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019063 uint64_t cgen_var_1329 = (uint64_t)(uintptr_t)local_pAllocator;
19064 countingStream->putBe64(cgen_var_1329);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019065 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019066 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019067 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019068 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019069 uint64_t cgen_var_1330;
19070 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1330, 1);
19071 countingStream->write((uint64_t*)&cgen_var_1330, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019072 }
19073 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19074 countingStream->rewind();
19075 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
19076 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
19077 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019078 uint64_t cgen_var_1331;
19079 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1331, 1);
19080 stream->write((uint64_t*)&cgen_var_1331, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019081 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019082 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019083 uint64_t cgen_var_1332 = (uint64_t)(uintptr_t)local_pAllocator;
19084 stream->putBe64(cgen_var_1332);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019085 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019086 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019087 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019088 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019089 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019090 uint64_t cgen_var_1333;
19091 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1333, 1);
19092 stream->write((uint64_t*)&cgen_var_1333, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019093 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019094 uint64_t cgen_var_1334;
19095 stream->read((uint64_t*)&cgen_var_1334, 8);
19096 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1334, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019097 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
19098 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019099 countingStream->clearPool();
19100 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019101 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019102 mImpl->log("finish vkRegisterDeviceEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019103 return vkRegisterDeviceEventEXT_VkResult_return;
19104}
19105
19106VkResult VkEncoder::vkRegisterDisplayEventEXT(
19107 VkDevice device,
19108 VkDisplayKHR display,
19109 const VkDisplayEventInfoEXT* pDisplayEventInfo,
19110 const VkAllocationCallbacks* pAllocator,
19111 VkFence* pFence)
19112{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019113 mImpl->log("start vkRegisterDisplayEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019114 auto stream = mImpl->stream();
19115 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019116 auto resources = mImpl->resources();
19117 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019118 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019119 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019120 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019121 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019122 VkAllocationCallbacks* local_pAllocator;
19123 local_device = device;
19124 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019125 local_pDisplayEventInfo = nullptr;
19126 if (pDisplayEventInfo)
19127 {
19128 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
19129 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
19130 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019131 local_pAllocator = nullptr;
19132 if (pAllocator)
19133 {
19134 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19135 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19136 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019137 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019138 if (local_pDisplayEventInfo)
19139 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019140 transform_tohost_VkDisplayEventInfoEXT(mImpl->resources(), (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019141 }
19142 if (local_pAllocator)
19143 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019144 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019145 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019146 countingStream->rewind();
19147 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019148 uint64_t cgen_var_1335;
19149 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1335, 1);
19150 countingStream->write((uint64_t*)&cgen_var_1335, 1 * 8);
19151 uint64_t cgen_var_1336;
19152 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1336, 1);
19153 countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019154 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019155 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019156 uint64_t cgen_var_1337 = (uint64_t)(uintptr_t)local_pAllocator;
19157 countingStream->putBe64(cgen_var_1337);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019158 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019159 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019160 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019161 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019162 uint64_t cgen_var_1338;
19163 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1338, 1);
19164 countingStream->write((uint64_t*)&cgen_var_1338, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019165 }
19166 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19167 countingStream->rewind();
19168 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
19169 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
19170 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019171 uint64_t cgen_var_1339;
19172 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1339, 1);
19173 stream->write((uint64_t*)&cgen_var_1339, 1 * 8);
19174 uint64_t cgen_var_1340;
19175 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1340, 1);
19176 stream->write((uint64_t*)&cgen_var_1340, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019177 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019178 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019179 uint64_t cgen_var_1341 = (uint64_t)(uintptr_t)local_pAllocator;
19180 stream->putBe64(cgen_var_1341);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019181 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019182 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019183 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019184 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019185 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019186 uint64_t cgen_var_1342;
19187 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1342, 1);
19188 stream->write((uint64_t*)&cgen_var_1342, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019189 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019190 uint64_t cgen_var_1343;
19191 stream->read((uint64_t*)&cgen_var_1343, 8);
19192 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1343, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019193 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
19194 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019195 countingStream->clearPool();
19196 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019197 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019198 mImpl->log("finish vkRegisterDisplayEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019199 return vkRegisterDisplayEventEXT_VkResult_return;
19200}
19201
19202VkResult VkEncoder::vkGetSwapchainCounterEXT(
19203 VkDevice device,
19204 VkSwapchainKHR swapchain,
19205 VkSurfaceCounterFlagBitsEXT counter,
19206 uint64_t* pCounterValue)
19207{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019208 mImpl->log("start vkGetSwapchainCounterEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019209 auto stream = mImpl->stream();
19210 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019211 auto resources = mImpl->resources();
19212 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019213 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019214 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019215 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019216 VkSurfaceCounterFlagBitsEXT local_counter;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019217 local_device = device;
19218 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019219 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019220 countingStream->rewind();
19221 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019222 uint64_t cgen_var_1344;
19223 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1344, 1);
19224 countingStream->write((uint64_t*)&cgen_var_1344, 1 * 8);
19225 uint64_t cgen_var_1345;
19226 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1345, 1);
19227 countingStream->write((uint64_t*)&cgen_var_1345, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019228 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019229 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
19230 }
19231 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19232 countingStream->rewind();
19233 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
19234 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
19235 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019236 uint64_t cgen_var_1346;
19237 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1346, 1);
19238 stream->write((uint64_t*)&cgen_var_1346, 1 * 8);
19239 uint64_t cgen_var_1347;
19240 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1347, 1);
19241 stream->write((uint64_t*)&cgen_var_1347, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019242 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019243 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
19244 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
19245 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
19246 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019247 countingStream->clearPool();
19248 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019249 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019250 mImpl->log("finish vkGetSwapchainCounterEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019251 return vkGetSwapchainCounterEXT_VkResult_return;
19252}
19253
19254#endif
19255#ifdef VK_GOOGLE_display_timing
19256VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
19257 VkDevice device,
19258 VkSwapchainKHR swapchain,
19259 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
19260{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019261 mImpl->log("start vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019262 auto stream = mImpl->stream();
19263 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019264 auto resources = mImpl->resources();
19265 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019266 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019267 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019268 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019269 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019270 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019271 countingStream->rewind();
19272 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019273 uint64_t cgen_var_1348;
19274 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1348, 1);
19275 countingStream->write((uint64_t*)&cgen_var_1348, 1 * 8);
19276 uint64_t cgen_var_1349;
19277 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1349, 1);
19278 countingStream->write((uint64_t*)&cgen_var_1349, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019279 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19280 }
19281 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19282 countingStream->rewind();
19283 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
19284 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
19285 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019286 uint64_t cgen_var_1350;
19287 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1350, 1);
19288 stream->write((uint64_t*)&cgen_var_1350, 1 * 8);
19289 uint64_t cgen_var_1351;
19290 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1351, 1);
19291 stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019292 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19293 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019294 if (pDisplayTimingProperties)
19295 {
19296 transform_fromhost_VkRefreshCycleDurationGOOGLE(mImpl->resources(), (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19297 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019298 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
19299 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019300 countingStream->clearPool();
19301 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019302 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019303 mImpl->log("finish vkGetRefreshCycleDurationGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019304 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
19305}
19306
19307VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
19308 VkDevice device,
19309 VkSwapchainKHR swapchain,
19310 uint32_t* pPresentationTimingCount,
19311 VkPastPresentationTimingGOOGLE* pPresentationTimings)
19312{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019313 mImpl->log("start vkGetPastPresentationTimingGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019314 auto stream = mImpl->stream();
19315 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019316 auto resources = mImpl->resources();
19317 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019318 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019319 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019320 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019321 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019322 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019323 countingStream->rewind();
19324 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019325 uint64_t cgen_var_1352;
19326 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1);
19327 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
19328 uint64_t cgen_var_1353;
19329 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1353, 1);
19330 countingStream->write((uint64_t*)&cgen_var_1353, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019331 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019332 uint64_t cgen_var_1354 = (uint64_t)(uintptr_t)pPresentationTimingCount;
19333 countingStream->putBe64(cgen_var_1354);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019334 if (pPresentationTimingCount)
19335 {
19336 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19337 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019338 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019339 uint64_t cgen_var_1355 = (uint64_t)(uintptr_t)pPresentationTimings;
19340 countingStream->putBe64(cgen_var_1355);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019341 if (pPresentationTimings)
19342 {
19343 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19344 {
19345 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19346 }
19347 }
19348 }
19349 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19350 countingStream->rewind();
19351 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
19352 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
19353 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019354 uint64_t cgen_var_1356;
19355 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1356, 1);
19356 stream->write((uint64_t*)&cgen_var_1356, 1 * 8);
19357 uint64_t cgen_var_1357;
19358 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1357, 1);
19359 stream->write((uint64_t*)&cgen_var_1357, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019360 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019361 uint64_t cgen_var_1358 = (uint64_t)(uintptr_t)pPresentationTimingCount;
19362 stream->putBe64(cgen_var_1358);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019363 if (pPresentationTimingCount)
19364 {
19365 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19366 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019367 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019368 uint64_t cgen_var_1359 = (uint64_t)(uintptr_t)pPresentationTimings;
19369 stream->putBe64(cgen_var_1359);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019370 if (pPresentationTimings)
19371 {
19372 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19373 {
19374 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19375 }
19376 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019377 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019378 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019379 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019380 if (pPresentationTimingCount)
19381 {
19382 if (!(check_pPresentationTimingCount))
19383 {
19384 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
19385 }
19386 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19387 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019388 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019389 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019390 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019391 if (pPresentationTimings)
19392 {
19393 if (!(check_pPresentationTimings))
19394 {
19395 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
19396 }
19397 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19398 {
19399 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19400 }
19401 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080019402 if (pPresentationTimings)
19403 {
19404 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19405 {
19406 transform_fromhost_VkPastPresentationTimingGOOGLE(mImpl->resources(), (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19407 }
19408 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019409 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
19410 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019411 countingStream->clearPool();
19412 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019413 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019414 mImpl->log("finish vkGetPastPresentationTimingGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019415 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
19416}
19417
19418#endif
19419#ifdef VK_NV_sample_mask_override_coverage
19420#endif
19421#ifdef VK_NV_geometry_shader_passthrough
19422#endif
19423#ifdef VK_NV_viewport_array2
19424#endif
19425#ifdef VK_NVX_multiview_per_view_attributes
19426#endif
19427#ifdef VK_NV_viewport_swizzle
19428#endif
19429#ifdef VK_EXT_discard_rectangles
19430void VkEncoder::vkCmdSetDiscardRectangleEXT(
19431 VkCommandBuffer commandBuffer,
19432 uint32_t firstDiscardRectangle,
19433 uint32_t discardRectangleCount,
19434 const VkRect2D* pDiscardRectangles)
19435{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019436 mImpl->log("start vkCmdSetDiscardRectangleEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019437 auto stream = mImpl->stream();
19438 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019439 auto resources = mImpl->resources();
19440 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019441 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019442 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019443 uint32_t local_firstDiscardRectangle;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019444 uint32_t local_discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019445 VkRect2D* local_pDiscardRectangles;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019446 local_commandBuffer = commandBuffer;
19447 local_firstDiscardRectangle = firstDiscardRectangle;
19448 local_discardRectangleCount = discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019449 local_pDiscardRectangles = nullptr;
19450 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019451 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019452 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019453 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19454 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019455 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
19456 }
19457 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019458 if (local_pDiscardRectangles)
19459 {
19460 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19461 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019462 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019463 }
19464 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019465 countingStream->rewind();
19466 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019467 uint64_t cgen_var_1362;
19468 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1362, 1);
19469 countingStream->write((uint64_t*)&cgen_var_1362, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019470 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
19471 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
19472 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19473 {
19474 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019475 }
19476 }
19477 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19478 countingStream->rewind();
19479 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
19480 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
19481 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019482 uint64_t cgen_var_1363;
19483 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1363, 1);
19484 stream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019485 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
19486 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019487 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19488 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019489 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019490 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019491 mImpl->log("finish vkCmdSetDiscardRectangleEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019492}
19493
19494#endif
19495#ifdef VK_EXT_conservative_rasterization
19496#endif
19497#ifdef VK_EXT_swapchain_colorspace
19498#endif
19499#ifdef VK_EXT_hdr_metadata
19500void VkEncoder::vkSetHdrMetadataEXT(
19501 VkDevice device,
19502 uint32_t swapchainCount,
19503 const VkSwapchainKHR* pSwapchains,
19504 const VkHdrMetadataEXT* pMetadata)
19505{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019506 mImpl->log("start vkSetHdrMetadataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019507 auto stream = mImpl->stream();
19508 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019509 auto resources = mImpl->resources();
19510 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019511 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019512 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019513 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019514 VkSwapchainKHR* local_pSwapchains;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019515 VkHdrMetadataEXT* local_pMetadata;
19516 local_device = device;
19517 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019518 local_pSwapchains = nullptr;
19519 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019520 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019521 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
19522 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019523 local_pMetadata = nullptr;
19524 if (pMetadata)
19525 {
19526 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019527 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19528 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019529 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
19530 }
19531 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019532 if (local_pMetadata)
19533 {
19534 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19535 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019536 transform_tohost_VkHdrMetadataEXT(mImpl->resources(), (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019537 }
19538 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019539 countingStream->rewind();
19540 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019541 uint64_t cgen_var_1364;
19542 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1364, 1);
19543 countingStream->write((uint64_t*)&cgen_var_1364, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019544 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019545 if (((swapchainCount)))
19546 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019547 uint64_t* cgen_var_1365;
19548 countingStream->alloc((void**)&cgen_var_1365, ((swapchainCount)) * 8);
19549 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1365, ((swapchainCount)));
19550 countingStream->write((uint64_t*)cgen_var_1365, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019551 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019552 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19553 {
19554 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019555 }
19556 }
19557 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19558 countingStream->rewind();
19559 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
19560 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
19561 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019562 uint64_t cgen_var_1366;
19563 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1366, 1);
19564 stream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019565 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019566 if (((swapchainCount)))
19567 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019568 uint64_t* cgen_var_1367;
19569 stream->alloc((void**)&cgen_var_1367, ((swapchainCount)) * 8);
19570 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1367, ((swapchainCount)));
19571 stream->write((uint64_t*)cgen_var_1367, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019572 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019573 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19574 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019575 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019576 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019577 mImpl->log("finish vkSetHdrMetadataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019578}
19579
19580#endif
19581#ifdef VK_MVK_ios_surface
19582VkResult VkEncoder::vkCreateIOSSurfaceMVK(
19583 VkInstance instance,
19584 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
19585 const VkAllocationCallbacks* pAllocator,
19586 VkSurfaceKHR* pSurface)
19587{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019588 mImpl->log("start vkCreateIOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019589 auto stream = mImpl->stream();
19590 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019591 auto resources = mImpl->resources();
19592 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019593 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019594 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019595 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019596 VkAllocationCallbacks* local_pAllocator;
19597 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019598 local_pCreateInfo = nullptr;
19599 if (pCreateInfo)
19600 {
19601 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
19602 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
19603 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019604 local_pAllocator = nullptr;
19605 if (pAllocator)
19606 {
19607 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19608 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19609 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019610 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019611 if (local_pCreateInfo)
19612 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019613 transform_tohost_VkIOSSurfaceCreateInfoMVK(mImpl->resources(), (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019614 }
19615 if (local_pAllocator)
19616 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019617 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019618 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019619 countingStream->rewind();
19620 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019621 uint64_t cgen_var_1368;
19622 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1368, 1);
19623 countingStream->write((uint64_t*)&cgen_var_1368, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019624 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019625 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019626 uint64_t cgen_var_1369 = (uint64_t)(uintptr_t)local_pAllocator;
19627 countingStream->putBe64(cgen_var_1369);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019628 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019629 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019630 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019631 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019632 uint64_t cgen_var_1370;
19633 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1370, 1);
19634 countingStream->write((uint64_t*)&cgen_var_1370, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019635 }
19636 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19637 countingStream->rewind();
19638 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
19639 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
19640 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019641 uint64_t cgen_var_1371;
19642 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1371, 1);
19643 stream->write((uint64_t*)&cgen_var_1371, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019644 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019645 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019646 uint64_t cgen_var_1372 = (uint64_t)(uintptr_t)local_pAllocator;
19647 stream->putBe64(cgen_var_1372);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019648 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019649 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019650 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019651 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019652 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019653 uint64_t cgen_var_1373;
19654 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1373, 1);
19655 stream->write((uint64_t*)&cgen_var_1373, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019656 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019657 uint64_t cgen_var_1374;
19658 stream->read((uint64_t*)&cgen_var_1374, 8);
19659 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1374, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019660 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
19661 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019662 countingStream->clearPool();
19663 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019664 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019665 mImpl->log("finish vkCreateIOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019666 return vkCreateIOSSurfaceMVK_VkResult_return;
19667}
19668
19669#endif
19670#ifdef VK_MVK_macos_surface
19671VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
19672 VkInstance instance,
19673 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
19674 const VkAllocationCallbacks* pAllocator,
19675 VkSurfaceKHR* pSurface)
19676{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019677 mImpl->log("start vkCreateMacOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019678 auto stream = mImpl->stream();
19679 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019680 auto resources = mImpl->resources();
19681 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019682 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019683 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019684 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019685 VkAllocationCallbacks* local_pAllocator;
19686 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019687 local_pCreateInfo = nullptr;
19688 if (pCreateInfo)
19689 {
19690 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
19691 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
19692 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019693 local_pAllocator = nullptr;
19694 if (pAllocator)
19695 {
19696 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19697 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19698 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019699 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019700 if (local_pCreateInfo)
19701 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019702 transform_tohost_VkMacOSSurfaceCreateInfoMVK(mImpl->resources(), (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019703 }
19704 if (local_pAllocator)
19705 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019706 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019707 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019708 countingStream->rewind();
19709 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019710 uint64_t cgen_var_1375;
19711 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1375, 1);
19712 countingStream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019713 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019714 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019715 uint64_t cgen_var_1376 = (uint64_t)(uintptr_t)local_pAllocator;
19716 countingStream->putBe64(cgen_var_1376);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019717 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019718 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019719 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019720 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019721 uint64_t cgen_var_1377;
19722 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1377, 1);
19723 countingStream->write((uint64_t*)&cgen_var_1377, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019724 }
19725 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19726 countingStream->rewind();
19727 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
19728 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
19729 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019730 uint64_t cgen_var_1378;
19731 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1378, 1);
19732 stream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019733 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019734 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019735 uint64_t cgen_var_1379 = (uint64_t)(uintptr_t)local_pAllocator;
19736 stream->putBe64(cgen_var_1379);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019737 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019738 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019739 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019740 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019741 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019742 uint64_t cgen_var_1380;
19743 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1380, 1);
19744 stream->write((uint64_t*)&cgen_var_1380, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019745 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019746 uint64_t cgen_var_1381;
19747 stream->read((uint64_t*)&cgen_var_1381, 8);
19748 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1381, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019749 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
19750 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019751 countingStream->clearPool();
19752 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019753 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019754 mImpl->log("finish vkCreateMacOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019755 return vkCreateMacOSSurfaceMVK_VkResult_return;
19756}
19757
19758#endif
19759#ifdef VK_EXT_external_memory_dma_buf
19760#endif
19761#ifdef VK_EXT_queue_family_foreign
19762#endif
19763#ifdef VK_EXT_debug_utils
19764VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
19765 VkDevice device,
19766 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
19767{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019768 mImpl->log("start vkSetDebugUtilsObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019769 auto stream = mImpl->stream();
19770 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019771 auto resources = mImpl->resources();
19772 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019773 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019774 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019775 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019776 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019777 local_pNameInfo = nullptr;
19778 if (pNameInfo)
19779 {
19780 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
19781 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
19782 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019783 if (local_pNameInfo)
19784 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019785 transform_tohost_VkDebugUtilsObjectNameInfoEXT(mImpl->resources(), (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019786 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019787 countingStream->rewind();
19788 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019789 uint64_t cgen_var_1382;
19790 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1382, 1);
19791 countingStream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019792 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019793 }
19794 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19795 countingStream->rewind();
19796 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
19797 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
19798 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019799 uint64_t cgen_var_1383;
19800 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1383, 1);
19801 stream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019802 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019803 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
19804 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019805 countingStream->clearPool();
19806 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019807 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019808 mImpl->log("finish vkSetDebugUtilsObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019809 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
19810}
19811
19812VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
19813 VkDevice device,
19814 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
19815{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019816 mImpl->log("start vkSetDebugUtilsObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019817 auto stream = mImpl->stream();
19818 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019819 auto resources = mImpl->resources();
19820 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019821 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019822 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019823 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019824 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019825 local_pTagInfo = nullptr;
19826 if (pTagInfo)
19827 {
19828 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
19829 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
19830 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019831 if (local_pTagInfo)
19832 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019833 transform_tohost_VkDebugUtilsObjectTagInfoEXT(mImpl->resources(), (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019834 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019835 countingStream->rewind();
19836 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019837 uint64_t cgen_var_1384;
19838 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1384, 1);
19839 countingStream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019840 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019841 }
19842 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19843 countingStream->rewind();
19844 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
19845 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
19846 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019847 uint64_t cgen_var_1385;
19848 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1385, 1);
19849 stream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019850 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019851 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
19852 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019853 countingStream->clearPool();
19854 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019855 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019856 mImpl->log("finish vkSetDebugUtilsObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019857 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
19858}
19859
19860void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
19861 VkQueue queue,
19862 const VkDebugUtilsLabelEXT* pLabelInfo)
19863{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019864 mImpl->log("start vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019865 auto stream = mImpl->stream();
19866 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019867 auto resources = mImpl->resources();
19868 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019869 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019870 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019871 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019872 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019873 local_pLabelInfo = nullptr;
19874 if (pLabelInfo)
19875 {
19876 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19877 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19878 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019879 if (local_pLabelInfo)
19880 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019881 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019882 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019883 countingStream->rewind();
19884 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019885 uint64_t cgen_var_1386;
19886 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1386, 1);
19887 countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019888 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019889 }
19890 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19891 countingStream->rewind();
19892 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
19893 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
19894 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019895 uint64_t cgen_var_1387;
19896 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1387, 1);
19897 stream->write((uint64_t*)&cgen_var_1387, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019898 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019899 mImpl->log("finish vkQueueBeginDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019900}
19901
19902void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
19903 VkQueue queue)
19904{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019905 mImpl->log("start vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019906 auto stream = mImpl->stream();
19907 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019908 auto resources = mImpl->resources();
19909 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019910 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019911 VkQueue local_queue;
19912 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019913 countingStream->rewind();
19914 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019915 uint64_t cgen_var_1388;
19916 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1388, 1);
19917 countingStream->write((uint64_t*)&cgen_var_1388, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019918 }
19919 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19920 countingStream->rewind();
19921 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
19922 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
19923 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019924 uint64_t cgen_var_1389;
19925 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1389, 1);
19926 stream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019927 mImpl->log("finish vkQueueEndDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019928}
19929
19930void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
19931 VkQueue queue,
19932 const VkDebugUtilsLabelEXT* pLabelInfo)
19933{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019934 mImpl->log("start vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019935 auto stream = mImpl->stream();
19936 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019937 auto resources = mImpl->resources();
19938 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019939 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019940 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019941 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019942 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019943 local_pLabelInfo = nullptr;
19944 if (pLabelInfo)
19945 {
19946 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19947 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19948 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019949 if (local_pLabelInfo)
19950 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019951 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019952 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019953 countingStream->rewind();
19954 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019955 uint64_t cgen_var_1390;
19956 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1390, 1);
19957 countingStream->write((uint64_t*)&cgen_var_1390, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019958 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019959 }
19960 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19961 countingStream->rewind();
19962 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
19963 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
19964 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019965 uint64_t cgen_var_1391;
19966 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1391, 1);
19967 stream->write((uint64_t*)&cgen_var_1391, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019968 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019969 mImpl->log("finish vkQueueInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019970}
19971
19972void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
19973 VkCommandBuffer commandBuffer,
19974 const VkDebugUtilsLabelEXT* pLabelInfo)
19975{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019976 mImpl->log("start vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019977 auto stream = mImpl->stream();
19978 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019979 auto resources = mImpl->resources();
19980 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019981 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019982 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019983 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019984 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019985 local_pLabelInfo = nullptr;
19986 if (pLabelInfo)
19987 {
19988 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19989 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19990 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019991 if (local_pLabelInfo)
19992 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019993 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019994 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019995 countingStream->rewind();
19996 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019997 uint64_t cgen_var_1392;
19998 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1392, 1);
19999 countingStream->write((uint64_t*)&cgen_var_1392, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020000 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020001 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020002 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20003 countingStream->rewind();
20004 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
20005 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
20006 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020007 uint64_t cgen_var_1393;
20008 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1393, 1);
20009 stream->write((uint64_t*)&cgen_var_1393, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020010 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020011 mImpl->log("finish vkCmdBeginDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020012}
20013
20014void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
20015 VkCommandBuffer commandBuffer)
20016{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020017 mImpl->log("start vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020018 auto stream = mImpl->stream();
20019 auto countingStream = mImpl->countingStream();
20020 auto resources = mImpl->resources();
20021 auto pool = mImpl->pool();
20022 stream->setHandleMapping(resources->unwrapMapping());
20023 VkCommandBuffer local_commandBuffer;
20024 local_commandBuffer = commandBuffer;
20025 countingStream->rewind();
20026 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020027 uint64_t cgen_var_1394;
20028 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1394, 1);
20029 countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020030 }
20031 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20032 countingStream->rewind();
20033 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
20034 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
20035 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020036 uint64_t cgen_var_1395;
20037 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1395, 1);
20038 stream->write((uint64_t*)&cgen_var_1395, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020039 mImpl->log("finish vkCmdEndDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020040}
20041
20042void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
20043 VkCommandBuffer commandBuffer,
20044 const VkDebugUtilsLabelEXT* pLabelInfo)
20045{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020046 mImpl->log("start vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020047 auto stream = mImpl->stream();
20048 auto countingStream = mImpl->countingStream();
20049 auto resources = mImpl->resources();
20050 auto pool = mImpl->pool();
20051 stream->setHandleMapping(resources->unwrapMapping());
20052 VkCommandBuffer local_commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020053 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020054 local_commandBuffer = commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020055 local_pLabelInfo = nullptr;
20056 if (pLabelInfo)
20057 {
20058 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20059 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20060 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020061 if (local_pLabelInfo)
20062 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020063 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020064 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020065 countingStream->rewind();
20066 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020067 uint64_t cgen_var_1396;
20068 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1396, 1);
20069 countingStream->write((uint64_t*)&cgen_var_1396, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020070 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20071 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020072 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20073 countingStream->rewind();
20074 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
20075 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
20076 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020077 uint64_t cgen_var_1397;
20078 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1397, 1);
20079 stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020080 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020081 mImpl->log("finish vkCmdInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020082}
20083
20084VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
20085 VkInstance instance,
20086 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
20087 const VkAllocationCallbacks* pAllocator,
20088 VkDebugUtilsMessengerEXT* pMessenger)
20089{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020090 mImpl->log("start vkCreateDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020091 auto stream = mImpl->stream();
20092 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020093 auto resources = mImpl->resources();
20094 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020095 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020096 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020097 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020098 VkAllocationCallbacks* local_pAllocator;
20099 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020100 local_pCreateInfo = nullptr;
20101 if (pCreateInfo)
20102 {
20103 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
20104 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
20105 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020106 local_pAllocator = nullptr;
20107 if (pAllocator)
20108 {
20109 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20110 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20111 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020112 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020113 if (local_pCreateInfo)
20114 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020115 transform_tohost_VkDebugUtilsMessengerCreateInfoEXT(mImpl->resources(), (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020116 }
20117 if (local_pAllocator)
20118 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020119 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020120 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020121 countingStream->rewind();
20122 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020123 uint64_t cgen_var_1398;
20124 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1398, 1);
20125 countingStream->write((uint64_t*)&cgen_var_1398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020126 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020127 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020128 uint64_t cgen_var_1399 = (uint64_t)(uintptr_t)local_pAllocator;
20129 countingStream->putBe64(cgen_var_1399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020130 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020131 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020132 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020133 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020134 uint64_t cgen_var_1400;
20135 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1400, 1);
20136 countingStream->write((uint64_t*)&cgen_var_1400, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020137 }
20138 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20139 countingStream->rewind();
20140 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
20141 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
20142 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020143 uint64_t cgen_var_1401;
20144 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1401, 1);
20145 stream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020146 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020147 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020148 uint64_t cgen_var_1402 = (uint64_t)(uintptr_t)local_pAllocator;
20149 stream->putBe64(cgen_var_1402);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020150 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020151 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020152 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020153 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020154 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020155 uint64_t cgen_var_1403;
20156 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1403, 1);
20157 stream->write((uint64_t*)&cgen_var_1403, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020158 stream->setHandleMapping(resources->unwrapMapping());
20159 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020160 uint64_t cgen_var_1404;
20161 stream->read((uint64_t*)&cgen_var_1404, 8);
20162 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1404, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020163 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020164 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
20165 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020166 countingStream->clearPool();
20167 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020168 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020169 mImpl->log("finish vkCreateDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020170 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
20171}
20172
20173void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
20174 VkInstance instance,
20175 VkDebugUtilsMessengerEXT messenger,
20176 const VkAllocationCallbacks* pAllocator)
20177{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020178 mImpl->log("start vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020179 auto stream = mImpl->stream();
20180 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020181 auto resources = mImpl->resources();
20182 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020183 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020184 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020185 VkDebugUtilsMessengerEXT local_messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020186 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020187 local_instance = instance;
20188 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020189 local_pAllocator = nullptr;
20190 if (pAllocator)
20191 {
20192 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20193 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20194 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020195 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020196 if (local_pAllocator)
20197 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020198 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020199 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020200 countingStream->rewind();
20201 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020202 uint64_t cgen_var_1405;
20203 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1405, 1);
20204 countingStream->write((uint64_t*)&cgen_var_1405, 1 * 8);
20205 uint64_t cgen_var_1406;
20206 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1406, 1);
20207 countingStream->write((uint64_t*)&cgen_var_1406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020208 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020209 uint64_t cgen_var_1407 = (uint64_t)(uintptr_t)local_pAllocator;
20210 countingStream->putBe64(cgen_var_1407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020211 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020212 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020213 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020214 }
20215 }
20216 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20217 countingStream->rewind();
20218 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
20219 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
20220 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020221 uint64_t cgen_var_1408;
20222 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1408, 1);
20223 stream->write((uint64_t*)&cgen_var_1408, 1 * 8);
20224 uint64_t cgen_var_1409;
20225 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1409, 1);
20226 stream->write((uint64_t*)&cgen_var_1409, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020227 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020228 uint64_t cgen_var_1410 = (uint64_t)(uintptr_t)local_pAllocator;
20229 stream->putBe64(cgen_var_1410);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020230 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020231 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020232 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020233 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020234 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020235 mImpl->log("finish vkDestroyDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020236}
20237
20238void VkEncoder::vkSubmitDebugUtilsMessageEXT(
20239 VkInstance instance,
20240 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
20241 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
20242 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
20243{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020244 mImpl->log("start vkSubmitDebugUtilsMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020245 auto stream = mImpl->stream();
20246 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020247 auto resources = mImpl->resources();
20248 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020249 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020250 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020251 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020252 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020253 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020254 local_instance = instance;
20255 local_messageSeverity = messageSeverity;
20256 local_messageTypes = messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020257 local_pCallbackData = nullptr;
20258 if (pCallbackData)
20259 {
20260 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
20261 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
20262 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020263 if (local_pCallbackData)
20264 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020265 transform_tohost_VkDebugUtilsMessengerCallbackDataEXT(mImpl->resources(), (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020266 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020267 countingStream->rewind();
20268 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020269 uint64_t cgen_var_1411;
20270 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1411, 1);
20271 countingStream->write((uint64_t*)&cgen_var_1411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020272 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
20273 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
20274 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020275 }
20276 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20277 countingStream->rewind();
20278 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
20279 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
20280 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020281 uint64_t cgen_var_1412;
20282 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1412, 1);
20283 stream->write((uint64_t*)&cgen_var_1412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020284 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
20285 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
20286 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020287 mImpl->log("finish vkSubmitDebugUtilsMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020288}
20289
20290#endif
20291#ifdef VK_ANDROID_external_memory_android_hardware_buffer
20292VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
20293 VkDevice device,
20294 const AHardwareBuffer* buffer,
20295 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
20296{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020297 mImpl->log("start vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020298 auto stream = mImpl->stream();
20299 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020300 auto resources = mImpl->resources();
20301 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020302 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020303 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020304 AHardwareBuffer* local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020305 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020306 local_buffer = nullptr;
20307 if (buffer)
20308 {
20309 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
20310 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020311 countingStream->rewind();
20312 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020313 uint64_t cgen_var_1413;
20314 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1413, 1);
20315 countingStream->write((uint64_t*)&cgen_var_1413, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020316 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020317 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20318 }
20319 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20320 countingStream->rewind();
20321 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
20322 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
20323 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020324 uint64_t cgen_var_1414;
20325 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1414, 1);
20326 stream->write((uint64_t*)&cgen_var_1414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020327 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020328 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20329 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020330 if (pProperties)
20331 {
20332 transform_fromhost_VkAndroidHardwareBufferPropertiesANDROID(mImpl->resources(), (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20333 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020334 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
20335 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020336 countingStream->clearPool();
20337 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020338 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020339 mImpl->log("finish vkGetAndroidHardwareBufferPropertiesANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020340 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
20341}
20342
20343VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
20344 VkDevice device,
20345 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
20346 AHardwareBuffer** pBuffer)
20347{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020348 mImpl->log("start vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020349 auto stream = mImpl->stream();
20350 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020351 auto resources = mImpl->resources();
20352 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020353 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020354 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020355 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020356 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020357 local_pInfo = nullptr;
20358 if (pInfo)
20359 {
20360 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
20361 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
20362 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020363 if (local_pInfo)
20364 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020365 transform_tohost_VkMemoryGetAndroidHardwareBufferInfoANDROID(mImpl->resources(), (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020366 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020367 countingStream->rewind();
20368 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020369 uint64_t cgen_var_1415;
20370 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1415, 1);
20371 countingStream->write((uint64_t*)&cgen_var_1415, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020372 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020373 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20374 }
20375 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20376 countingStream->rewind();
20377 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
20378 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
20379 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020380 uint64_t cgen_var_1416;
20381 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1416, 1);
20382 stream->write((uint64_t*)&cgen_var_1416, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020383 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020384 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20385 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20386 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
20387 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020388 countingStream->clearPool();
20389 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020390 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020391 mImpl->log("finish vkGetMemoryAndroidHardwareBufferANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020392 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
20393}
20394
20395#endif
20396#ifdef VK_EXT_sampler_filter_minmax
20397#endif
20398#ifdef VK_AMD_gpu_shader_int16
20399#endif
20400#ifdef VK_AMD_mixed_attachment_samples
20401#endif
20402#ifdef VK_AMD_shader_fragment_mask
20403#endif
20404#ifdef VK_EXT_shader_stencil_export
20405#endif
20406#ifdef VK_EXT_sample_locations
20407void VkEncoder::vkCmdSetSampleLocationsEXT(
20408 VkCommandBuffer commandBuffer,
20409 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
20410{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020411 mImpl->log("start vkCmdSetSampleLocationsEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020412 auto stream = mImpl->stream();
20413 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020414 auto resources = mImpl->resources();
20415 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020416 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020417 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020418 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020419 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020420 local_pSampleLocationsInfo = nullptr;
20421 if (pSampleLocationsInfo)
20422 {
20423 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
20424 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
20425 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020426 if (local_pSampleLocationsInfo)
20427 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020428 transform_tohost_VkSampleLocationsInfoEXT(mImpl->resources(), (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020429 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020430 countingStream->rewind();
20431 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020432 uint64_t cgen_var_1417;
20433 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1417, 1);
20434 countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020435 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020436 }
20437 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20438 countingStream->rewind();
20439 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
20440 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
20441 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020442 uint64_t cgen_var_1418;
20443 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1418, 1);
20444 stream->write((uint64_t*)&cgen_var_1418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020445 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020446 mImpl->log("finish vkCmdSetSampleLocationsEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020447}
20448
20449void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
20450 VkPhysicalDevice physicalDevice,
20451 VkSampleCountFlagBits samples,
20452 VkMultisamplePropertiesEXT* pMultisampleProperties)
20453{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020454 mImpl->log("start vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020455 auto stream = mImpl->stream();
20456 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020457 auto resources = mImpl->resources();
20458 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020459 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020460 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020461 VkSampleCountFlagBits local_samples;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020462 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020463 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020464 countingStream->rewind();
20465 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020466 uint64_t cgen_var_1419;
20467 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1419, 1);
20468 countingStream->write((uint64_t*)&cgen_var_1419, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020469 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020470 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20471 }
20472 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20473 countingStream->rewind();
20474 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
20475 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
20476 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020477 uint64_t cgen_var_1420;
20478 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1420, 1);
20479 stream->write((uint64_t*)&cgen_var_1420, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020480 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020481 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20482 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020483 if (pMultisampleProperties)
20484 {
20485 transform_fromhost_VkMultisamplePropertiesEXT(mImpl->resources(), (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20486 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020487 mImpl->log("finish vkGetPhysicalDeviceMultisamplePropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020488}
20489
20490#endif
20491#ifdef VK_EXT_blend_operation_advanced
20492#endif
20493#ifdef VK_NV_fragment_coverage_to_color
20494#endif
20495#ifdef VK_NV_framebuffer_mixed_samples
20496#endif
20497#ifdef VK_NV_fill_rectangle
20498#endif
20499#ifdef VK_EXT_post_depth_coverage
20500#endif
20501#ifdef VK_EXT_validation_cache
20502VkResult VkEncoder::vkCreateValidationCacheEXT(
20503 VkDevice device,
20504 const VkValidationCacheCreateInfoEXT* pCreateInfo,
20505 const VkAllocationCallbacks* pAllocator,
20506 VkValidationCacheEXT* pValidationCache)
20507{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020508 mImpl->log("start vkCreateValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020509 auto stream = mImpl->stream();
20510 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020511 auto resources = mImpl->resources();
20512 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020513 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020514 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020515 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020516 VkAllocationCallbacks* local_pAllocator;
20517 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020518 local_pCreateInfo = nullptr;
20519 if (pCreateInfo)
20520 {
20521 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
20522 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
20523 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020524 local_pAllocator = nullptr;
20525 if (pAllocator)
20526 {
20527 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20528 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20529 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020530 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020531 if (local_pCreateInfo)
20532 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020533 transform_tohost_VkValidationCacheCreateInfoEXT(mImpl->resources(), (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020534 }
20535 if (local_pAllocator)
20536 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020537 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020538 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020539 countingStream->rewind();
20540 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020541 uint64_t cgen_var_1421;
20542 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1421, 1);
20543 countingStream->write((uint64_t*)&cgen_var_1421, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020544 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020545 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020546 uint64_t cgen_var_1422 = (uint64_t)(uintptr_t)local_pAllocator;
20547 countingStream->putBe64(cgen_var_1422);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020548 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020549 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020550 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020551 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020552 uint64_t cgen_var_1423;
20553 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1423, 1);
20554 countingStream->write((uint64_t*)&cgen_var_1423, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020555 }
20556 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20557 countingStream->rewind();
20558 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
20559 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
20560 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020561 uint64_t cgen_var_1424;
20562 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1424, 1);
20563 stream->write((uint64_t*)&cgen_var_1424, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020564 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020565 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020566 uint64_t cgen_var_1425 = (uint64_t)(uintptr_t)local_pAllocator;
20567 stream->putBe64(cgen_var_1425);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020568 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020569 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020570 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020571 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020572 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020573 uint64_t cgen_var_1426;
20574 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1426, 1);
20575 stream->write((uint64_t*)&cgen_var_1426, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020576 stream->setHandleMapping(resources->unwrapMapping());
20577 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020578 uint64_t cgen_var_1427;
20579 stream->read((uint64_t*)&cgen_var_1427, 8);
20580 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1427, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020581 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020582 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
20583 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020584 countingStream->clearPool();
20585 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020586 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020587 mImpl->log("finish vkCreateValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020588 return vkCreateValidationCacheEXT_VkResult_return;
20589}
20590
20591void VkEncoder::vkDestroyValidationCacheEXT(
20592 VkDevice device,
20593 VkValidationCacheEXT validationCache,
20594 const VkAllocationCallbacks* pAllocator)
20595{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020596 mImpl->log("start vkDestroyValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020597 auto stream = mImpl->stream();
20598 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020599 auto resources = mImpl->resources();
20600 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020601 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020602 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020603 VkValidationCacheEXT local_validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020604 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020605 local_device = device;
20606 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020607 local_pAllocator = nullptr;
20608 if (pAllocator)
20609 {
20610 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20611 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20612 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020613 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020614 if (local_pAllocator)
20615 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020616 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020617 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020618 countingStream->rewind();
20619 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020620 uint64_t cgen_var_1428;
20621 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1);
20622 countingStream->write((uint64_t*)&cgen_var_1428, 1 * 8);
20623 uint64_t cgen_var_1429;
20624 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1429, 1);
20625 countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020626 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020627 uint64_t cgen_var_1430 = (uint64_t)(uintptr_t)local_pAllocator;
20628 countingStream->putBe64(cgen_var_1430);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020629 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020630 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020631 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020632 }
20633 }
20634 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20635 countingStream->rewind();
20636 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
20637 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
20638 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020639 uint64_t cgen_var_1431;
20640 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1431, 1);
20641 stream->write((uint64_t*)&cgen_var_1431, 1 * 8);
20642 uint64_t cgen_var_1432;
20643 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1432, 1);
20644 stream->write((uint64_t*)&cgen_var_1432, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020645 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020646 uint64_t cgen_var_1433 = (uint64_t)(uintptr_t)local_pAllocator;
20647 stream->putBe64(cgen_var_1433);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020648 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020649 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020650 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020651 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020652 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020653 mImpl->log("finish vkDestroyValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020654}
20655
20656VkResult VkEncoder::vkMergeValidationCachesEXT(
20657 VkDevice device,
20658 VkValidationCacheEXT dstCache,
20659 uint32_t srcCacheCount,
20660 const VkValidationCacheEXT* pSrcCaches)
20661{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020662 mImpl->log("start vkMergeValidationCachesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020663 auto stream = mImpl->stream();
20664 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020665 auto resources = mImpl->resources();
20666 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020667 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020668 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020669 VkValidationCacheEXT local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020670 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020671 VkValidationCacheEXT* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020672 local_device = device;
20673 local_dstCache = dstCache;
20674 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020675 local_pSrcCaches = nullptr;
20676 if (pSrcCaches)
20677 {
20678 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
20679 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020680 countingStream->rewind();
20681 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020682 uint64_t cgen_var_1434;
20683 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1434, 1);
20684 countingStream->write((uint64_t*)&cgen_var_1434, 1 * 8);
20685 uint64_t cgen_var_1435;
20686 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1435, 1);
20687 countingStream->write((uint64_t*)&cgen_var_1435, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020688 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020689 if (((srcCacheCount)))
20690 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020691 uint64_t* cgen_var_1436;
20692 countingStream->alloc((void**)&cgen_var_1436, ((srcCacheCount)) * 8);
20693 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1436, ((srcCacheCount)));
20694 countingStream->write((uint64_t*)cgen_var_1436, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020695 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020696 }
20697 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20698 countingStream->rewind();
20699 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
20700 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
20701 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020702 uint64_t cgen_var_1437;
20703 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1437, 1);
20704 stream->write((uint64_t*)&cgen_var_1437, 1 * 8);
20705 uint64_t cgen_var_1438;
20706 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1438, 1);
20707 stream->write((uint64_t*)&cgen_var_1438, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020708 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020709 if (((srcCacheCount)))
20710 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020711 uint64_t* cgen_var_1439;
20712 stream->alloc((void**)&cgen_var_1439, ((srcCacheCount)) * 8);
20713 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1439, ((srcCacheCount)));
20714 stream->write((uint64_t*)cgen_var_1439, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020715 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020716 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
20717 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020718 countingStream->clearPool();
20719 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020720 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020721 mImpl->log("finish vkMergeValidationCachesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020722 return vkMergeValidationCachesEXT_VkResult_return;
20723}
20724
20725VkResult VkEncoder::vkGetValidationCacheDataEXT(
20726 VkDevice device,
20727 VkValidationCacheEXT validationCache,
20728 size_t* pDataSize,
20729 void* pData)
20730{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020731 mImpl->log("start vkGetValidationCacheDataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020732 auto stream = mImpl->stream();
20733 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020734 auto resources = mImpl->resources();
20735 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020736 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020737 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020738 VkValidationCacheEXT local_validationCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020739 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020740 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020741 countingStream->rewind();
20742 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020743 uint64_t cgen_var_1440;
20744 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1440, 1);
20745 countingStream->write((uint64_t*)&cgen_var_1440, 1 * 8);
20746 uint64_t cgen_var_1441;
20747 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1441, 1);
20748 countingStream->write((uint64_t*)&cgen_var_1441, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020749 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020750 uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)pDataSize;
20751 countingStream->putBe64(cgen_var_1442);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020752 if (pDataSize)
20753 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020754 uint64_t cgen_var_1443 = (uint64_t)(*pDataSize);
20755 countingStream->putBe64(cgen_var_1443);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020756 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020757 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020758 uint64_t cgen_var_1444 = (uint64_t)(uintptr_t)pData;
20759 countingStream->putBe64(cgen_var_1444);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020760 if (pData)
20761 {
20762 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20763 }
20764 }
20765 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20766 countingStream->rewind();
20767 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
20768 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
20769 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020770 uint64_t cgen_var_1445;
20771 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1445, 1);
20772 stream->write((uint64_t*)&cgen_var_1445, 1 * 8);
20773 uint64_t cgen_var_1446;
20774 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1446, 1);
20775 stream->write((uint64_t*)&cgen_var_1446, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020776 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020777 uint64_t cgen_var_1447 = (uint64_t)(uintptr_t)pDataSize;
20778 stream->putBe64(cgen_var_1447);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020779 if (pDataSize)
20780 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020781 uint64_t cgen_var_1448 = (uint64_t)(*pDataSize);
20782 stream->putBe64(cgen_var_1448);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020783 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020784 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020785 uint64_t cgen_var_1449 = (uint64_t)(uintptr_t)pData;
20786 stream->putBe64(cgen_var_1449);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020787 if (pData)
20788 {
20789 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20790 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020791 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020792 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020793 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020794 if (pDataSize)
20795 {
20796 if (!(check_pDataSize))
20797 {
20798 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
20799 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080020800 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020801 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020802 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020803 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020804 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020805 if (pData)
20806 {
20807 if (!(check_pData))
20808 {
20809 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
20810 }
20811 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20812 }
20813 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
20814 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020815 countingStream->clearPool();
20816 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020817 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020818 mImpl->log("finish vkGetValidationCacheDataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020819 return vkGetValidationCacheDataEXT_VkResult_return;
20820}
20821
20822#endif
20823#ifdef VK_EXT_descriptor_indexing
20824#endif
20825#ifdef VK_EXT_shader_viewport_index_layer
20826#endif
20827#ifdef VK_EXT_global_priority
20828#endif
20829#ifdef VK_EXT_external_memory_host
20830VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
20831 VkDevice device,
20832 VkExternalMemoryHandleTypeFlagBits handleType,
20833 const void* pHostPointer,
20834 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
20835{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020836 mImpl->log("start vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020837 auto stream = mImpl->stream();
20838 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020839 auto resources = mImpl->resources();
20840 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020841 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020842 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020843 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020844 void* local_pHostPointer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020845 local_device = device;
20846 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020847 local_pHostPointer = nullptr;
20848 if (pHostPointer)
20849 {
20850 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
20851 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020852 countingStream->rewind();
20853 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020854 uint64_t cgen_var_1453;
20855 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1453, 1);
20856 countingStream->write((uint64_t*)&cgen_var_1453, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020857 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020858 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020859 uint64_t cgen_var_1454 = (uint64_t)(uintptr_t)local_pHostPointer;
20860 countingStream->putBe64(cgen_var_1454);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020861 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020862 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020863 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020864 }
20865 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20866 }
20867 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20868 countingStream->rewind();
20869 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
20870 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
20871 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020872 uint64_t cgen_var_1455;
20873 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1455, 1);
20874 stream->write((uint64_t*)&cgen_var_1455, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020875 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020876 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020877 uint64_t cgen_var_1456 = (uint64_t)(uintptr_t)local_pHostPointer;
20878 stream->putBe64(cgen_var_1456);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020879 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020880 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020881 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020882 }
20883 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20884 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020885 if (pMemoryHostPointerProperties)
20886 {
20887 transform_fromhost_VkMemoryHostPointerPropertiesEXT(mImpl->resources(), (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20888 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020889 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
20890 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020891 countingStream->clearPool();
20892 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020893 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020894 mImpl->log("finish vkGetMemoryHostPointerPropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020895 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
20896}
20897
20898#endif
20899#ifdef VK_AMD_buffer_marker
20900void VkEncoder::vkCmdWriteBufferMarkerAMD(
20901 VkCommandBuffer commandBuffer,
20902 VkPipelineStageFlagBits pipelineStage,
20903 VkBuffer dstBuffer,
20904 VkDeviceSize dstOffset,
20905 uint32_t marker)
20906{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020907 mImpl->log("start vkCmdWriteBufferMarkerAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020908 auto stream = mImpl->stream();
20909 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020910 auto resources = mImpl->resources();
20911 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020912 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020913 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020914 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020915 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020916 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020917 uint32_t local_marker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020918 local_commandBuffer = commandBuffer;
20919 local_pipelineStage = pipelineStage;
20920 local_dstBuffer = dstBuffer;
20921 local_dstOffset = dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020922 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020923 countingStream->rewind();
20924 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020925 uint64_t cgen_var_1457;
20926 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1457, 1);
20927 countingStream->write((uint64_t*)&cgen_var_1457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020928 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020929 uint64_t cgen_var_1458;
20930 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1458, 1);
20931 countingStream->write((uint64_t*)&cgen_var_1458, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020932 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
20933 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020934 }
20935 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20936 countingStream->rewind();
20937 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
20938 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
20939 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020940 uint64_t cgen_var_1459;
20941 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1459, 1);
20942 stream->write((uint64_t*)&cgen_var_1459, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020943 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020944 uint64_t cgen_var_1460;
20945 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1460, 1);
20946 stream->write((uint64_t*)&cgen_var_1460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020947 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
20948 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020949 mImpl->log("finish vkCmdWriteBufferMarkerAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020950}
20951
20952#endif
20953#ifdef VK_AMD_shader_core_properties
20954#endif
20955#ifdef VK_EXT_vertex_attribute_divisor
20956#endif
20957#ifdef VK_NV_shader_subgroup_partitioned
20958#endif
20959#ifdef VK_NV_device_diagnostic_checkpoints
20960void VkEncoder::vkCmdSetCheckpointNV(
20961 VkCommandBuffer commandBuffer,
20962 const void* pCheckpointMarker)
20963{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020964 mImpl->log("start vkCmdSetCheckpointNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020965 auto stream = mImpl->stream();
20966 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020967 auto resources = mImpl->resources();
20968 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020969 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020970 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020971 void* local_pCheckpointMarker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020972 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020973 local_pCheckpointMarker = nullptr;
20974 if (pCheckpointMarker)
20975 {
20976 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
20977 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020978 countingStream->rewind();
20979 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020980 uint64_t cgen_var_1461;
20981 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1461, 1);
20982 countingStream->write((uint64_t*)&cgen_var_1461, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020983 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020984 uint64_t cgen_var_1462 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
20985 countingStream->putBe64(cgen_var_1462);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020986 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020987 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020988 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020989 }
20990 }
20991 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20992 countingStream->rewind();
20993 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
20994 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
20995 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020996 uint64_t cgen_var_1463;
20997 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1463, 1);
20998 stream->write((uint64_t*)&cgen_var_1463, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020999 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021000 uint64_t cgen_var_1464 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
21001 stream->putBe64(cgen_var_1464);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021002 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021003 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021004 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021005 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021006 mImpl->log("finish vkCmdSetCheckpointNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021007}
21008
21009void VkEncoder::vkGetQueueCheckpointDataNV(
21010 VkQueue queue,
21011 uint32_t* pCheckpointDataCount,
21012 VkCheckpointDataNV* pCheckpointData)
21013{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021014 mImpl->log("start vkGetQueueCheckpointDataNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021015 auto stream = mImpl->stream();
21016 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021017 auto resources = mImpl->resources();
21018 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021019 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021020 VkQueue local_queue;
21021 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021022 countingStream->rewind();
21023 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021024 uint64_t cgen_var_1465;
21025 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1465, 1);
21026 countingStream->write((uint64_t*)&cgen_var_1465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021027 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021028 uint64_t cgen_var_1466 = (uint64_t)(uintptr_t)pCheckpointDataCount;
21029 countingStream->putBe64(cgen_var_1466);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021030 if (pCheckpointDataCount)
21031 {
21032 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
21033 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021034 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021035 uint64_t cgen_var_1467 = (uint64_t)(uintptr_t)pCheckpointData;
21036 countingStream->putBe64(cgen_var_1467);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021037 if (pCheckpointData)
21038 {
21039 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21040 {
21041 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
21042 }
21043 }
21044 }
21045 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21046 countingStream->rewind();
21047 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
21048 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
21049 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021050 uint64_t cgen_var_1468;
21051 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1468, 1);
21052 stream->write((uint64_t*)&cgen_var_1468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021053 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021054 uint64_t cgen_var_1469 = (uint64_t)(uintptr_t)pCheckpointDataCount;
21055 stream->putBe64(cgen_var_1469);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021056 if (pCheckpointDataCount)
21057 {
21058 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
21059 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021060 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021061 uint64_t cgen_var_1470 = (uint64_t)(uintptr_t)pCheckpointData;
21062 stream->putBe64(cgen_var_1470);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021063 if (pCheckpointData)
21064 {
21065 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21066 {
21067 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
21068 }
21069 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021070 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021071 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021072 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021073 if (pCheckpointDataCount)
21074 {
21075 if (!(check_pCheckpointDataCount))
21076 {
21077 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
21078 }
21079 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
21080 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021081 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021082 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021083 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021084 if (pCheckpointData)
21085 {
21086 if (!(check_pCheckpointData))
21087 {
21088 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
21089 }
21090 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21091 {
21092 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
21093 }
21094 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080021095 if (pCheckpointData)
21096 {
21097 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21098 {
21099 transform_fromhost_VkCheckpointDataNV(mImpl->resources(), (VkCheckpointDataNV*)(pCheckpointData + i));
21100 }
21101 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021102 mImpl->log("finish vkGetQueueCheckpointDataNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021103}
21104
21105#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021106#ifdef VK_GOOGLE_address_space
21107VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE(
21108 VkDevice device,
21109 VkDeviceMemory memory,
21110 uint64_t* pAddress)
21111{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021112 mImpl->log("start vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021113 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress);
21114 auto stream = mImpl->stream();
21115 auto countingStream = mImpl->countingStream();
21116 auto resources = mImpl->resources();
21117 auto pool = mImpl->pool();
21118 stream->setHandleMapping(resources->unwrapMapping());
21119 VkDevice local_device;
21120 VkDeviceMemory local_memory;
21121 local_device = device;
21122 local_memory = memory;
Lingfeng Yangafe29d32018-12-25 13:01:52 -080021123 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021124 countingStream->rewind();
21125 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021126 uint64_t cgen_var_1473;
21127 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1473, 1);
21128 countingStream->write((uint64_t*)&cgen_var_1473, 1 * 8);
21129 uint64_t cgen_var_1474;
21130 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1474, 1);
21131 countingStream->write((uint64_t*)&cgen_var_1474, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021132 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021133 uint64_t cgen_var_1475 = (uint64_t)(uintptr_t)pAddress;
21134 countingStream->putBe64(cgen_var_1475);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021135 if (pAddress)
21136 {
21137 countingStream->write((uint64_t*)pAddress, sizeof(uint64_t));
21138 }
21139 }
21140 uint32_t packetSize_vkMapMemoryIntoAddressSpaceGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21141 countingStream->rewind();
21142 uint32_t opcode_vkMapMemoryIntoAddressSpaceGOOGLE = OP_vkMapMemoryIntoAddressSpaceGOOGLE;
21143 stream->write(&opcode_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
21144 stream->write(&packetSize_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021145 uint64_t cgen_var_1476;
21146 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1476, 1);
21147 stream->write((uint64_t*)&cgen_var_1476, 1 * 8);
21148 uint64_t cgen_var_1477;
21149 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1477, 1);
21150 stream->write((uint64_t*)&cgen_var_1477, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021151 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021152 uint64_t cgen_var_1478 = (uint64_t)(uintptr_t)pAddress;
21153 stream->putBe64(cgen_var_1478);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021154 if (pAddress)
21155 {
21156 stream->write((uint64_t*)pAddress, sizeof(uint64_t));
21157 }
21158 // WARNING PTR CHECK
21159 uint64_t* check_pAddress;
21160 check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64();
21161 if (pAddress)
21162 {
21163 if (!(check_pAddress))
21164 {
21165 fprintf(stderr, "fatal: pAddress inconsistent between guest and host\n");
21166 }
21167 stream->read((uint64_t*)pAddress, sizeof(uint64_t));
21168 }
21169 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
21170 stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult));
21171 countingStream->clearPool();
21172 stream->clearPool();
21173 pool->freeAll();
21174 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021175 mImpl->log("finish vkMapMemoryIntoAddressSpaceGOOGLE");;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021176 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
21177}
21178
21179#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021180
Lingfeng Yangb1d90102018-11-29 16:10:36 -080021181} // namespace goldfish_vk