blob: d42d9be92444ccdea5c92048c87a3dce1cd1474c [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 Yang858ebe22019-01-22 15:53:52 -0800172 mImpl->log("finish vkCreateInstance");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700173 return vkCreateInstance_VkResult_return;
174}
175
176void VkEncoder::vkDestroyInstance(
177 VkInstance instance,
178 const VkAllocationCallbacks* pAllocator)
179{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800180 mImpl->log("start vkDestroyInstance");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700181 auto stream = mImpl->stream();
182 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800183 auto resources = mImpl->resources();
184 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800185 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800186 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800187 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800188 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800189 local_pAllocator = nullptr;
190 if (pAllocator)
191 {
192 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
193 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
194 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800195 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800196 if (local_pAllocator)
197 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800198 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800199 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700200 countingStream->rewind();
201 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800202 uint64_t cgen_var_5;
203 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800204 countingStream->write((uint64_t*)&cgen_var_5, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800205 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800206 uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
207 countingStream->putBe64(cgen_var_6);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800208 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700209 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800210 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700211 }
212 }
213 uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
214 countingStream->rewind();
215 uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
216 stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
217 stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800218 uint64_t cgen_var_7;
219 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800220 stream->write((uint64_t*)&cgen_var_7, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800221 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800222 uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
223 stream->putBe64(cgen_var_8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800224 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700225 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800226 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700227 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800228 resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800229 mImpl->log("finish vkDestroyInstance");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700230}
231
232VkResult VkEncoder::vkEnumeratePhysicalDevices(
233 VkInstance instance,
234 uint32_t* pPhysicalDeviceCount,
235 VkPhysicalDevice* pPhysicalDevices)
236{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800237 mImpl->log("start vkEnumeratePhysicalDevices");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700238 auto stream = mImpl->stream();
239 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800240 auto resources = mImpl->resources();
241 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800242 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800243 VkInstance local_instance;
244 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700245 countingStream->rewind();
246 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800247 uint64_t cgen_var_9;
248 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800249 countingStream->write((uint64_t*)&cgen_var_9, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800250 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800251 uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
252 countingStream->putBe64(cgen_var_10);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700253 if (pPhysicalDeviceCount)
254 {
255 countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
256 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800257 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800258 uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
259 countingStream->putBe64(cgen_var_11);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700260 if (pPhysicalDevices)
261 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800262 if ((*(pPhysicalDeviceCount)))
263 {
264 uint64_t* cgen_var_12;
265 countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
266 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800267 countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800268 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700269 }
270 }
271 uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
272 countingStream->rewind();
273 uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
274 stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
275 stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800276 uint64_t cgen_var_13;
277 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800278 stream->write((uint64_t*)&cgen_var_13, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800279 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800280 uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
281 stream->putBe64(cgen_var_14);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700282 if (pPhysicalDeviceCount)
283 {
284 stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
285 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800286 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800287 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800288 uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
289 stream->putBe64(cgen_var_15);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700290 if (pPhysicalDevices)
291 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800292 if ((*(pPhysicalDeviceCount)))
293 {
294 uint64_t* cgen_var_16;
295 stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
296 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800297 stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800298 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700299 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800300 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800301 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700302 uint32_t* check_pPhysicalDeviceCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800303 check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700304 if (pPhysicalDeviceCount)
305 {
306 if (!(check_pPhysicalDeviceCount))
307 {
308 fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
309 }
310 stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
311 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800312 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800313 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700314 VkPhysicalDevice* check_pPhysicalDevices;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800315 check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700316 if (pPhysicalDevices)
317 {
318 if (!(check_pPhysicalDevices))
319 {
320 fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
321 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800322 if ((*(pPhysicalDeviceCount)))
323 {
324 uint64_t* cgen_var_19;
325 stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800326 stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800327 stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
328 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700329 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800330 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700331 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
332 stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800333 countingStream->clearPool();
334 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800335 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800336 mImpl->log("finish vkEnumeratePhysicalDevices");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700337 return vkEnumeratePhysicalDevices_VkResult_return;
338}
339
340void VkEncoder::vkGetPhysicalDeviceFeatures(
341 VkPhysicalDevice physicalDevice,
342 VkPhysicalDeviceFeatures* pFeatures)
343{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800344 mImpl->log("start vkGetPhysicalDeviceFeatures");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700345 auto stream = mImpl->stream();
346 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800347 auto resources = mImpl->resources();
348 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800349 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800350 VkPhysicalDevice local_physicalDevice;
351 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700352 countingStream->rewind();
353 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800354 uint64_t cgen_var_20;
355 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800356 countingStream->write((uint64_t*)&cgen_var_20, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700357 marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
358 }
359 uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
360 countingStream->rewind();
361 uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
362 stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
363 stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800364 uint64_t cgen_var_21;
365 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800366 stream->write((uint64_t*)&cgen_var_21, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700367 marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
368 unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800369 if (pFeatures)
370 {
371 transform_fromhost_VkPhysicalDeviceFeatures(mImpl->resources(), (VkPhysicalDeviceFeatures*)(pFeatures));
372 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800373 mImpl->log("finish vkGetPhysicalDeviceFeatures");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700374}
375
376void VkEncoder::vkGetPhysicalDeviceFormatProperties(
377 VkPhysicalDevice physicalDevice,
378 VkFormat format,
379 VkFormatProperties* pFormatProperties)
380{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800381 mImpl->log("start vkGetPhysicalDeviceFormatProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700382 auto stream = mImpl->stream();
383 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800384 auto resources = mImpl->resources();
385 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800386 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800387 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800388 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800389 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800390 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700391 countingStream->rewind();
392 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800393 uint64_t cgen_var_22;
394 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800395 countingStream->write((uint64_t*)&cgen_var_22, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800396 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700397 marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
398 }
399 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
400 countingStream->rewind();
401 uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
402 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
403 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800404 uint64_t cgen_var_23;
405 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800406 stream->write((uint64_t*)&cgen_var_23, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800407 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700408 marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
409 unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800410 if (pFormatProperties)
411 {
412 transform_fromhost_VkFormatProperties(mImpl->resources(), (VkFormatProperties*)(pFormatProperties));
413 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800414 mImpl->log("finish vkGetPhysicalDeviceFormatProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700415}
416
417VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
418 VkPhysicalDevice physicalDevice,
419 VkFormat format,
420 VkImageType type,
421 VkImageTiling tiling,
422 VkImageUsageFlags usage,
423 VkImageCreateFlags flags,
424 VkImageFormatProperties* pImageFormatProperties)
425{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800426 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700427 auto stream = mImpl->stream();
428 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800429 auto resources = mImpl->resources();
430 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800431 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800432 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800433 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800434 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800435 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800436 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800437 VkImageCreateFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800438 local_physicalDevice = physicalDevice;
439 local_format = format;
440 local_type = type;
441 local_tiling = tiling;
442 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800443 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700444 countingStream->rewind();
445 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800446 uint64_t cgen_var_24;
447 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800448 countingStream->write((uint64_t*)&cgen_var_24, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800449 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
450 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
451 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
452 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
453 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700454 marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
455 }
456 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
457 countingStream->rewind();
458 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
459 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
460 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800461 uint64_t cgen_var_25;
462 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800463 stream->write((uint64_t*)&cgen_var_25, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800464 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
465 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
466 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
467 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
468 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700469 marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
470 unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800471 if (pImageFormatProperties)
472 {
473 transform_fromhost_VkImageFormatProperties(mImpl->resources(), (VkImageFormatProperties*)(pImageFormatProperties));
474 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700475 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
476 stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800477 countingStream->clearPool();
478 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800479 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800480 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700481 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
482}
483
484void VkEncoder::vkGetPhysicalDeviceProperties(
485 VkPhysicalDevice physicalDevice,
486 VkPhysicalDeviceProperties* pProperties)
487{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800488 mImpl->log("start vkGetPhysicalDeviceProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700489 auto stream = mImpl->stream();
490 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800491 auto resources = mImpl->resources();
492 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800493 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800494 VkPhysicalDevice local_physicalDevice;
495 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700496 countingStream->rewind();
497 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800498 uint64_t cgen_var_26;
499 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800500 countingStream->write((uint64_t*)&cgen_var_26, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700501 marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
502 }
503 uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
504 countingStream->rewind();
505 uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
506 stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
507 stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800508 uint64_t cgen_var_27;
509 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800510 stream->write((uint64_t*)&cgen_var_27, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700511 marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
512 unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800513 if (pProperties)
514 {
515 transform_fromhost_VkPhysicalDeviceProperties(mImpl->resources(), (VkPhysicalDeviceProperties*)(pProperties));
516 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800517 mImpl->log("finish vkGetPhysicalDeviceProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700518}
519
520void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
521 VkPhysicalDevice physicalDevice,
522 uint32_t* pQueueFamilyPropertyCount,
523 VkQueueFamilyProperties* pQueueFamilyProperties)
524{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800525 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700526 auto stream = mImpl->stream();
527 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800528 auto resources = mImpl->resources();
529 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800530 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800531 VkPhysicalDevice local_physicalDevice;
532 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700533 countingStream->rewind();
534 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800535 uint64_t cgen_var_28;
536 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800537 countingStream->write((uint64_t*)&cgen_var_28, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800538 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800539 uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
540 countingStream->putBe64(cgen_var_29);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700541 if (pQueueFamilyPropertyCount)
542 {
543 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
544 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800545 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800546 uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
547 countingStream->putBe64(cgen_var_30);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700548 if (pQueueFamilyProperties)
549 {
550 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
551 {
552 marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
553 }
554 }
555 }
556 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
557 countingStream->rewind();
558 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
559 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
560 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800561 uint64_t cgen_var_31;
562 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800563 stream->write((uint64_t*)&cgen_var_31, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800564 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800565 uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
566 stream->putBe64(cgen_var_32);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700567 if (pQueueFamilyPropertyCount)
568 {
569 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
570 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800571 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800572 uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
573 stream->putBe64(cgen_var_33);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700574 if (pQueueFamilyProperties)
575 {
576 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
577 {
578 marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
579 }
580 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800581 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700582 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800583 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700584 if (pQueueFamilyPropertyCount)
585 {
586 if (!(check_pQueueFamilyPropertyCount))
587 {
588 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
589 }
590 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
591 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800592 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700593 VkQueueFamilyProperties* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800594 check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700595 if (pQueueFamilyProperties)
596 {
597 if (!(check_pQueueFamilyProperties))
598 {
599 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
600 }
601 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
602 {
603 unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
604 }
605 }
Lingfeng Yang97a06702018-12-24 17:02:43 -0800606 if (pQueueFamilyProperties)
607 {
608 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
609 {
610 transform_fromhost_VkQueueFamilyProperties(mImpl->resources(), (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
611 }
612 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800613 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700614}
615
616void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
617 VkPhysicalDevice physicalDevice,
618 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
619{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800620 mImpl->log("start vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700621 auto stream = mImpl->stream();
622 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800623 auto resources = mImpl->resources();
624 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800625 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800626 VkPhysicalDevice local_physicalDevice;
627 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700628 countingStream->rewind();
629 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800630 uint64_t cgen_var_36;
631 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800632 countingStream->write((uint64_t*)&cgen_var_36, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700633 marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
634 }
635 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
636 countingStream->rewind();
637 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
638 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
639 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800640 uint64_t cgen_var_37;
641 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800642 stream->write((uint64_t*)&cgen_var_37, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700643 marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
644 unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800645 if (pMemoryProperties)
646 {
647 transform_fromhost_VkPhysicalDeviceMemoryProperties(mImpl->resources(), (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
648 }
649 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800650 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700651}
652
653PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
654 VkInstance instance,
655 const char* pName)
656{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800657 mImpl->log("start vkGetInstanceProcAddr");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700658 auto stream = mImpl->stream();
659 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800660 auto resources = mImpl->resources();
661 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800663 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800664 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800665 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800666 local_pName = nullptr;
667 if (pName)
668 {
669 local_pName = pool->strDup(pName);
670 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700671 countingStream->rewind();
672 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800673 uint64_t cgen_var_38;
674 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800675 countingStream->write((uint64_t*)&cgen_var_38, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800676 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700677 }
678 uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
679 countingStream->rewind();
680 uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
681 stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
682 stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800683 uint64_t cgen_var_39;
684 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800685 stream->write((uint64_t*)&cgen_var_39, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800686 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700687 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
688 stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800689 countingStream->clearPool();
690 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800691 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800692 mImpl->log("finish vkGetInstanceProcAddr");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700693 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
694}
695
696PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
697 VkDevice device,
698 const char* pName)
699{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800700 mImpl->log("start vkGetDeviceProcAddr");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700701 auto stream = mImpl->stream();
702 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800703 auto resources = mImpl->resources();
704 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800705 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800706 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800707 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800708 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800709 local_pName = nullptr;
710 if (pName)
711 {
712 local_pName = pool->strDup(pName);
713 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700714 countingStream->rewind();
715 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800716 uint64_t cgen_var_40;
717 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800718 countingStream->write((uint64_t*)&cgen_var_40, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800719 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700720 }
721 uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
722 countingStream->rewind();
723 uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
724 stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
725 stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800726 uint64_t cgen_var_41;
727 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800728 stream->write((uint64_t*)&cgen_var_41, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800729 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700730 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
731 stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800732 countingStream->clearPool();
733 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800734 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800735 mImpl->log("finish vkGetDeviceProcAddr");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700736 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
737}
738
739VkResult VkEncoder::vkCreateDevice(
740 VkPhysicalDevice physicalDevice,
741 const VkDeviceCreateInfo* pCreateInfo,
742 const VkAllocationCallbacks* pAllocator,
743 VkDevice* pDevice)
744{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800745 mImpl->log("start vkCreateDevice");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700746 auto stream = mImpl->stream();
747 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800748 auto resources = mImpl->resources();
749 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800750 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800751 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800752 VkDeviceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800753 VkAllocationCallbacks* local_pAllocator;
754 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800755 local_pCreateInfo = nullptr;
756 if (pCreateInfo)
757 {
758 local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo));
759 deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo));
760 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800761 local_pAllocator = nullptr;
762 if (pAllocator)
763 {
764 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
765 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
766 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800767 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800768 if (local_pCreateInfo)
769 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800770 transform_tohost_VkDeviceCreateInfo(mImpl->resources(), (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800771 }
772 if (local_pAllocator)
773 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800774 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800775 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700776 countingStream->rewind();
777 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800778 uint64_t cgen_var_42;
779 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800780 countingStream->write((uint64_t*)&cgen_var_42, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800781 marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800782 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800783 uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
784 countingStream->putBe64(cgen_var_43);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800785 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700786 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800787 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700788 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800789 uint64_t cgen_var_44;
790 countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
791 countingStream->write((uint64_t*)&cgen_var_44, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700792 }
793 uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
794 countingStream->rewind();
795 uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
796 stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
797 stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800798 uint64_t cgen_var_45;
799 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800800 stream->write((uint64_t*)&cgen_var_45, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800801 marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800802 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800803 uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
804 stream->putBe64(cgen_var_46);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800805 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700806 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800807 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700808 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800809 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800810 uint64_t cgen_var_47;
811 stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
812 stream->write((uint64_t*)&cgen_var_47, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800813 stream->setHandleMapping(resources->unwrapMapping());
814 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800815 uint64_t cgen_var_48;
816 stream->read((uint64_t*)&cgen_var_48, 8);
817 stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800818 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700819 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
820 stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800821 countingStream->clearPool();
822 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800823 pool->freeAll();
Lingfeng Yang131d5a42018-11-30 12:00:33 -0800824 mImpl->resources()->on_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800825 mImpl->log("finish vkCreateDevice");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700826 return vkCreateDevice_VkResult_return;
827}
828
829void VkEncoder::vkDestroyDevice(
830 VkDevice device,
831 const VkAllocationCallbacks* pAllocator)
832{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800833 mImpl->log("start vkDestroyDevice");
Lingfeng Yang35e9c6a2018-12-25 17:13:36 -0800834 mImpl->resources()->on_vkDestroyDevice_pre(this, device, pAllocator);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700835 auto stream = mImpl->stream();
836 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800837 auto resources = mImpl->resources();
838 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800839 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800840 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800841 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800842 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800843 local_pAllocator = nullptr;
844 if (pAllocator)
845 {
846 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
847 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
848 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800849 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800850 if (local_pAllocator)
851 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800852 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800853 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700854 countingStream->rewind();
855 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800856 uint64_t cgen_var_49;
857 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800858 countingStream->write((uint64_t*)&cgen_var_49, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800859 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800860 uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
861 countingStream->putBe64(cgen_var_50);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800862 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700863 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800864 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700865 }
866 }
867 uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
868 countingStream->rewind();
869 uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
870 stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
871 stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800872 uint64_t cgen_var_51;
873 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800874 stream->write((uint64_t*)&cgen_var_51, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800875 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800876 uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
877 stream->putBe64(cgen_var_52);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800878 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700879 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800880 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700881 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800882 resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device);
Lingfeng Yang35e9c6a2018-12-25 17:13:36 -0800883 stream->flush();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800884 mImpl->log("finish vkDestroyDevice");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700885}
886
887VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
888 const char* pLayerName,
889 uint32_t* pPropertyCount,
890 VkExtensionProperties* pProperties)
891{
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800892 mImpl->log("start vkEnumerateInstanceExtensionProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700893 auto stream = mImpl->stream();
894 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800895 auto resources = mImpl->resources();
896 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800897 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800898 char* local_pLayerName;
899 local_pLayerName = nullptr;
900 if (pLayerName)
901 {
902 local_pLayerName = pool->strDup(pLayerName);
903 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700904 countingStream->rewind();
905 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800906 countingStream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800907 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800908 uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
909 countingStream->putBe64(cgen_var_53);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700910 if (pPropertyCount)
911 {
912 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
913 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800914 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800915 uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
916 countingStream->putBe64(cgen_var_54);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700917 if (pProperties)
918 {
919 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
920 {
921 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
922 }
923 }
924 }
925 uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
926 countingStream->rewind();
927 uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
928 stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
929 stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800930 stream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800931 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800932 uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
933 stream->putBe64(cgen_var_55);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700934 if (pPropertyCount)
935 {
936 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
937 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800938 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800939 uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
940 stream->putBe64(cgen_var_56);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700941 if (pProperties)
942 {
943 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
944 {
945 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
946 }
947 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800948 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700949 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800950 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700951 if (pPropertyCount)
952 {
953 if (!(check_pPropertyCount))
954 {
955 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
956 }
957 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
958 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800959 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700960 VkExtensionProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800961 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700962 if (pProperties)
963 {
964 if (!(check_pProperties))
965 {
966 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
967 }
968 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
969 {
970 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
971 }
972 }
Lingfeng Yang97a06702018-12-24 17:02:43 -0800973 if (pProperties)
974 {
975 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
976 {
977 transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i));
978 }
979 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700980 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
981 stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800982 countingStream->clearPool();
983 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800984 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800985 mImpl->log("finish vkEnumerateInstanceExtensionProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700986 return vkEnumerateInstanceExtensionProperties_VkResult_return;
987}
988
989VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
990 VkPhysicalDevice physicalDevice,
991 const char* pLayerName,
992 uint32_t* pPropertyCount,
993 VkExtensionProperties* pProperties)
994{
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800995 mImpl->log("start vkEnumerateDeviceExtensionProperties");
996 auto stream = mImpl->stream();
997 auto countingStream = mImpl->countingStream();
998 auto resources = mImpl->resources();
999 auto pool = mImpl->pool();
1000 stream->setHandleMapping(resources->unwrapMapping());
1001 VkPhysicalDevice local_physicalDevice;
1002 char* local_pLayerName;
1003 local_physicalDevice = physicalDevice;
1004 local_pLayerName = nullptr;
1005 if (pLayerName)
1006 {
1007 local_pLayerName = pool->strDup(pLayerName);
1008 }
1009 countingStream->rewind();
1010 {
1011 uint64_t cgen_var_59;
1012 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_59, 1);
1013 countingStream->write((uint64_t*)&cgen_var_59, 1 * 8);
1014 countingStream->putString(local_pLayerName);
1015 // WARNING PTR CHECK
1016 uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pPropertyCount;
1017 countingStream->putBe64(cgen_var_60);
1018 if (pPropertyCount)
1019 {
1020 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1021 }
1022 // WARNING PTR CHECK
1023 uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pProperties;
1024 countingStream->putBe64(cgen_var_61);
1025 if (pProperties)
1026 {
1027 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1028 {
1029 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
1030 }
1031 }
1032 }
1033 uint32_t packetSize_vkEnumerateDeviceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1034 countingStream->rewind();
1035 uint32_t opcode_vkEnumerateDeviceExtensionProperties = OP_vkEnumerateDeviceExtensionProperties;
1036 stream->write(&opcode_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
1037 stream->write(&packetSize_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
1038 uint64_t cgen_var_62;
1039 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_62, 1);
1040 stream->write((uint64_t*)&cgen_var_62, 1 * 8);
1041 stream->putString(local_pLayerName);
1042 // WARNING PTR CHECK
1043 uint64_t cgen_var_63 = (uint64_t)(uintptr_t)pPropertyCount;
1044 stream->putBe64(cgen_var_63);
1045 if (pPropertyCount)
1046 {
1047 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1048 }
1049 // WARNING PTR CHECK
1050 uint64_t cgen_var_64 = (uint64_t)(uintptr_t)pProperties;
1051 stream->putBe64(cgen_var_64);
1052 if (pProperties)
1053 {
1054 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1055 {
1056 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1057 }
1058 }
1059 // WARNING PTR CHECK
1060 uint32_t* check_pPropertyCount;
1061 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
1062 if (pPropertyCount)
1063 {
1064 if (!(check_pPropertyCount))
1065 {
1066 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1067 }
1068 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1069 }
1070 // WARNING PTR CHECK
1071 VkExtensionProperties* check_pProperties;
1072 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
1073 if (pProperties)
1074 {
1075 if (!(check_pProperties))
1076 {
1077 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1078 }
1079 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1080 {
1081 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1082 }
1083 }
1084 if (pProperties)
1085 {
1086 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1087 {
1088 transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i));
1089 }
1090 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001091 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001092 stream->read(&vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult));
1093 countingStream->clearPool();
1094 stream->clearPool();
1095 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001096 mImpl->log("finish vkEnumerateDeviceExtensionProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001097 return vkEnumerateDeviceExtensionProperties_VkResult_return;
1098}
1099
1100VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
1101 uint32_t* pPropertyCount,
1102 VkLayerProperties* pProperties)
1103{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001104 mImpl->log("start vkEnumerateInstanceLayerProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001105 auto stream = mImpl->stream();
1106 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001107 auto resources = mImpl->resources();
1108 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001109 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001110 countingStream->rewind();
1111 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001112 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001113 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pPropertyCount;
1114 countingStream->putBe64(cgen_var_67);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001115 if (pPropertyCount)
1116 {
1117 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1118 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001119 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001120 uint64_t cgen_var_68 = (uint64_t)(uintptr_t)pProperties;
1121 countingStream->putBe64(cgen_var_68);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001122 if (pProperties)
1123 {
1124 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1125 {
1126 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1127 }
1128 }
1129 }
1130 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1131 countingStream->rewind();
1132 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
1133 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
1134 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001135 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001136 uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1137 stream->putBe64(cgen_var_69);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001138 if (pPropertyCount)
1139 {
1140 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1141 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001142 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001143 uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1144 stream->putBe64(cgen_var_70);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001145 if (pProperties)
1146 {
1147 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1148 {
1149 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1150 }
1151 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001152 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001153 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001154 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001155 if (pPropertyCount)
1156 {
1157 if (!(check_pPropertyCount))
1158 {
1159 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1160 }
1161 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1162 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001163 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001164 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001165 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001166 if (pProperties)
1167 {
1168 if (!(check_pProperties))
1169 {
1170 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1171 }
1172 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1173 {
1174 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1175 }
1176 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001177 if (pProperties)
1178 {
1179 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1180 {
1181 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1182 }
1183 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001184 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
1185 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001186 countingStream->clearPool();
1187 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001188 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001189 mImpl->log("finish vkEnumerateInstanceLayerProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001190 return vkEnumerateInstanceLayerProperties_VkResult_return;
1191}
1192
1193VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
1194 VkPhysicalDevice physicalDevice,
1195 uint32_t* pPropertyCount,
1196 VkLayerProperties* pProperties)
1197{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001198 mImpl->log("start vkEnumerateDeviceLayerProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001199 auto stream = mImpl->stream();
1200 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001201 auto resources = mImpl->resources();
1202 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001203 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001204 VkPhysicalDevice local_physicalDevice;
1205 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001206 countingStream->rewind();
1207 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001208 uint64_t cgen_var_73;
1209 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_73, 1);
1210 countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001211 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001212 uint64_t cgen_var_74 = (uint64_t)(uintptr_t)pPropertyCount;
1213 countingStream->putBe64(cgen_var_74);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001214 if (pPropertyCount)
1215 {
1216 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1217 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001218 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001219 uint64_t cgen_var_75 = (uint64_t)(uintptr_t)pProperties;
1220 countingStream->putBe64(cgen_var_75);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001221 if (pProperties)
1222 {
1223 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1224 {
1225 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1226 }
1227 }
1228 }
1229 uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1230 countingStream->rewind();
1231 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1232 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1233 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001234 uint64_t cgen_var_76;
1235 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_76, 1);
1236 stream->write((uint64_t*)&cgen_var_76, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001237 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001238 uint64_t cgen_var_77 = (uint64_t)(uintptr_t)pPropertyCount;
1239 stream->putBe64(cgen_var_77);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001240 if (pPropertyCount)
1241 {
1242 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1243 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001244 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001245 uint64_t cgen_var_78 = (uint64_t)(uintptr_t)pProperties;
1246 stream->putBe64(cgen_var_78);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001247 if (pProperties)
1248 {
1249 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1250 {
1251 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1252 }
1253 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001254 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001255 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001256 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001257 if (pPropertyCount)
1258 {
1259 if (!(check_pPropertyCount))
1260 {
1261 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1262 }
1263 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1264 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001265 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001266 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001267 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001268 if (pProperties)
1269 {
1270 if (!(check_pProperties))
1271 {
1272 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1273 }
1274 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1275 {
1276 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1277 }
1278 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001279 if (pProperties)
1280 {
1281 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1282 {
1283 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1284 }
1285 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001286 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1287 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001288 countingStream->clearPool();
1289 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001290 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001291 mImpl->log("finish vkEnumerateDeviceLayerProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001292 return vkEnumerateDeviceLayerProperties_VkResult_return;
1293}
1294
1295void VkEncoder::vkGetDeviceQueue(
1296 VkDevice device,
1297 uint32_t queueFamilyIndex,
1298 uint32_t queueIndex,
1299 VkQueue* pQueue)
1300{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001301 mImpl->log("start vkGetDeviceQueue");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001302 auto stream = mImpl->stream();
1303 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001304 auto resources = mImpl->resources();
1305 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001306 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001307 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001308 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001309 uint32_t local_queueIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001310 local_device = device;
1311 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001312 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001313 countingStream->rewind();
1314 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001315 uint64_t cgen_var_81;
1316 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_81, 1);
1317 countingStream->write((uint64_t*)&cgen_var_81, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001318 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1319 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001320 uint64_t cgen_var_82;
1321 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_82, 1);
1322 countingStream->write((uint64_t*)&cgen_var_82, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001323 }
1324 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1325 countingStream->rewind();
1326 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1327 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1328 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001329 uint64_t cgen_var_83;
1330 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_83, 1);
1331 stream->write((uint64_t*)&cgen_var_83, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001332 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1333 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001334 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001335 uint64_t cgen_var_84;
1336 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_84, 1);
1337 stream->write((uint64_t*)&cgen_var_84, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001338 stream->setHandleMapping(resources->unwrapMapping());
1339 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001340 uint64_t cgen_var_85;
1341 stream->read((uint64_t*)&cgen_var_85, 8);
1342 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_85, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001343 stream->unsetHandleMapping();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001344 mImpl->log("finish vkGetDeviceQueue");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001345}
1346
1347VkResult VkEncoder::vkQueueSubmit(
1348 VkQueue queue,
1349 uint32_t submitCount,
1350 const VkSubmitInfo* pSubmits,
1351 VkFence fence)
1352{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001353 mImpl->log("start vkQueueSubmit");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001354 auto stream = mImpl->stream();
1355 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001356 auto resources = mImpl->resources();
1357 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001358 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001359 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001360 uint32_t local_submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001361 VkSubmitInfo* local_pSubmits;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001362 VkFence local_fence;
1363 local_queue = queue;
1364 local_submitCount = submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001365 local_pSubmits = nullptr;
1366 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001367 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001368 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001369 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1370 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001371 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001372 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001373 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001374 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001375 if (local_pSubmits)
1376 {
1377 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1378 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001379 transform_tohost_VkSubmitInfo(mImpl->resources(), (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001380 }
1381 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001382 countingStream->rewind();
1383 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001384 uint64_t cgen_var_86;
1385 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_86, 1);
1386 countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001387 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1388 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1389 {
1390 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1391 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001392 uint64_t cgen_var_87;
1393 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_87, 1);
1394 countingStream->write((uint64_t*)&cgen_var_87, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001395 }
1396 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1397 countingStream->rewind();
1398 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1399 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1400 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001401 uint64_t cgen_var_88;
1402 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_88, 1);
1403 stream->write((uint64_t*)&cgen_var_88, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001404 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001405 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1406 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001407 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001408 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001409 uint64_t cgen_var_89;
1410 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_89, 1);
1411 stream->write((uint64_t*)&cgen_var_89, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001412 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1413 stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001414 countingStream->clearPool();
1415 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001416 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001417 mImpl->log("finish vkQueueSubmit");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001418 return vkQueueSubmit_VkResult_return;
1419}
1420
1421VkResult VkEncoder::vkQueueWaitIdle(
1422 VkQueue queue)
1423{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001424 mImpl->log("start vkQueueWaitIdle");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001425 auto stream = mImpl->stream();
1426 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001427 auto resources = mImpl->resources();
1428 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001429 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001430 VkQueue local_queue;
1431 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001432 countingStream->rewind();
1433 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001434 uint64_t cgen_var_90;
1435 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_90, 1);
1436 countingStream->write((uint64_t*)&cgen_var_90, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001437 }
1438 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1439 countingStream->rewind();
1440 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1441 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1442 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001443 uint64_t cgen_var_91;
1444 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_91, 1);
1445 stream->write((uint64_t*)&cgen_var_91, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001446 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1447 stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001448 countingStream->clearPool();
1449 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001450 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001451 mImpl->log("finish vkQueueWaitIdle");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001452 return vkQueueWaitIdle_VkResult_return;
1453}
1454
1455VkResult VkEncoder::vkDeviceWaitIdle(
1456 VkDevice device)
1457{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001458 mImpl->log("start vkDeviceWaitIdle");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001459 auto stream = mImpl->stream();
1460 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001461 auto resources = mImpl->resources();
1462 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001463 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001464 VkDevice local_device;
1465 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001466 countingStream->rewind();
1467 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001468 uint64_t cgen_var_92;
1469 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_92, 1);
1470 countingStream->write((uint64_t*)&cgen_var_92, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001471 }
1472 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1473 countingStream->rewind();
1474 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1475 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1476 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001477 uint64_t cgen_var_93;
1478 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
1479 stream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001480 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1481 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001482 countingStream->clearPool();
1483 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001484 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001485 mImpl->log("finish vkDeviceWaitIdle");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001486 return vkDeviceWaitIdle_VkResult_return;
1487}
1488
1489VkResult VkEncoder::vkAllocateMemory(
1490 VkDevice device,
1491 const VkMemoryAllocateInfo* pAllocateInfo,
1492 const VkAllocationCallbacks* pAllocator,
1493 VkDeviceMemory* pMemory)
1494{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001495 mImpl->log("start vkAllocateMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001496 auto stream = mImpl->stream();
1497 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001498 auto resources = mImpl->resources();
1499 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001500 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001501 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001502 VkMemoryAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001503 VkAllocationCallbacks* local_pAllocator;
1504 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001505 local_pAllocateInfo = nullptr;
1506 if (pAllocateInfo)
1507 {
1508 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1509 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1510 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001511 local_pAllocator = nullptr;
1512 if (pAllocator)
1513 {
1514 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1515 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1516 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001517 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001518 if (local_pAllocateInfo)
1519 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001520 transform_tohost_VkMemoryAllocateInfo(mImpl->resources(), (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001521 }
1522 if (local_pAllocator)
1523 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001524 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001525 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001526 countingStream->rewind();
1527 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001528 uint64_t cgen_var_94;
1529 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_94, 1);
1530 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001531 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001532 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001533 uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1534 countingStream->putBe64(cgen_var_95);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001535 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001536 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001537 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001538 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001539 uint64_t cgen_var_96;
1540 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_96, 1);
1541 countingStream->write((uint64_t*)&cgen_var_96, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001542 }
1543 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1544 countingStream->rewind();
1545 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1546 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1547 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001548 uint64_t cgen_var_97;
1549 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_97, 1);
1550 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001551 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001552 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001553 uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1554 stream->putBe64(cgen_var_98);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001555 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001556 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001557 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001558 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001559 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001560 uint64_t cgen_var_99;
1561 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_99, 1);
1562 stream->write((uint64_t*)&cgen_var_99, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001563 stream->setHandleMapping(resources->unwrapMapping());
1564 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001565 uint64_t cgen_var_100;
1566 stream->read((uint64_t*)&cgen_var_100, 8);
1567 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_100, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001568 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001569 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1570 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001571 countingStream->clearPool();
1572 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001573 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001574 mImpl->log("finish vkAllocateMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001575 return vkAllocateMemory_VkResult_return;
1576}
1577
1578void VkEncoder::vkFreeMemory(
1579 VkDevice device,
1580 VkDeviceMemory memory,
1581 const VkAllocationCallbacks* pAllocator)
1582{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001583 mImpl->log("start vkFreeMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001584 auto stream = mImpl->stream();
1585 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001586 auto resources = mImpl->resources();
1587 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001588 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001589 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001590 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001591 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001592 local_device = device;
1593 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001594 local_pAllocator = nullptr;
1595 if (pAllocator)
1596 {
1597 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1598 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1599 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001600 local_pAllocator = nullptr;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001601 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001602 countingStream->rewind();
1603 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001604 uint64_t cgen_var_101;
1605 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
1606 countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
1607 uint64_t cgen_var_102;
1608 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_102, 1);
1609 countingStream->write((uint64_t*)&cgen_var_102, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001610 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001611 uint64_t cgen_var_103 = (uint64_t)(uintptr_t)local_pAllocator;
1612 countingStream->putBe64(cgen_var_103);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001613 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001614 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001615 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001616 }
1617 }
1618 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1619 countingStream->rewind();
1620 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1621 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1622 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001623 uint64_t cgen_var_104;
1624 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_104, 1);
1625 stream->write((uint64_t*)&cgen_var_104, 1 * 8);
1626 uint64_t cgen_var_105;
1627 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_105, 1);
1628 stream->write((uint64_t*)&cgen_var_105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001629 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001630 uint64_t cgen_var_106 = (uint64_t)(uintptr_t)local_pAllocator;
1631 stream->putBe64(cgen_var_106);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001632 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001633 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001634 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001635 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001636 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001637 mImpl->log("finish vkFreeMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001638}
1639
1640VkResult VkEncoder::vkMapMemory(
1641 VkDevice device,
1642 VkDeviceMemory memory,
1643 VkDeviceSize offset,
1644 VkDeviceSize size,
1645 VkMemoryMapFlags flags,
1646 void** ppData)
1647{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001648 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001649 vkMapMemory_VkResult_return = mImpl->resources()->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001650 mImpl->log("finish vkMapMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001651 return vkMapMemory_VkResult_return;
1652}
1653
1654void VkEncoder::vkUnmapMemory(
1655 VkDevice device,
1656 VkDeviceMemory memory)
1657{
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001658 mImpl->resources()->on_vkUnmapMemory(this, device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001659}
1660
1661VkResult VkEncoder::vkFlushMappedMemoryRanges(
1662 VkDevice device,
1663 uint32_t memoryRangeCount,
1664 const VkMappedMemoryRange* pMemoryRanges)
1665{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001666 mImpl->log("start vkFlushMappedMemoryRanges");
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001667 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001668 auto stream = mImpl->stream();
1669 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001670 auto resources = mImpl->resources();
1671 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001672 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001673 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001674 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001675 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001676 local_device = device;
1677 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001678 local_pMemoryRanges = nullptr;
1679 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001680 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001681 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001682 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1683 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001684 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1685 }
1686 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001687 if (local_pMemoryRanges)
1688 {
1689 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1690 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001691 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001692 }
1693 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001694 countingStream->rewind();
1695 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001696 uint64_t cgen_var_107;
1697 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
1698 countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001699 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1700 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1701 {
1702 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001703 }
1704 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001705 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001706 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001707 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1708 {
1709 auto range = pMemoryRanges[i];
1710 auto memory = pMemoryRanges[i].memory;
1711 auto size = pMemoryRanges[i].size;
1712 auto offset = pMemoryRanges[i].offset;
1713 uint64_t streamSize = 0;
1714 if (!memory) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1715 auto hostPtr = resources->getMappedPointer(memory);
1716 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1717 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1718 streamSize = actualSize;
1719 countingStream->write(&streamSize, sizeof(uint64_t));
1720 uint8_t* targetRange = hostPtr + offset;
1721 countingStream->write(targetRange, actualSize);
1722 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001723 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001724 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1725 countingStream->rewind();
1726 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1727 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1728 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001729 uint64_t cgen_var_108;
1730 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_108, 1);
1731 stream->write((uint64_t*)&cgen_var_108, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001732 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001733 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1734 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001735 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001736 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001737 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001738 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001739 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1740 {
1741 auto range = pMemoryRanges[i];
1742 auto memory = pMemoryRanges[i].memory;
1743 auto size = pMemoryRanges[i].size;
1744 auto offset = pMemoryRanges[i].offset;
1745 uint64_t streamSize = 0;
1746 if (!memory) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1747 auto hostPtr = resources->getMappedPointer(memory);
1748 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1749 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1750 streamSize = actualSize;
1751 stream->write(&streamSize, sizeof(uint64_t));
1752 uint8_t* targetRange = hostPtr + offset;
1753 stream->write(targetRange, actualSize);
1754 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001755 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001756 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1757 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001758 countingStream->clearPool();
1759 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001760 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001761 mImpl->log("finish vkFlushMappedMemoryRanges");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001762 return vkFlushMappedMemoryRanges_VkResult_return;
1763}
1764
1765VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1766 VkDevice device,
1767 uint32_t memoryRangeCount,
1768 const VkMappedMemoryRange* pMemoryRanges)
1769{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001770 mImpl->log("start vkInvalidateMappedMemoryRanges");
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001771 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001772 auto stream = mImpl->stream();
1773 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001774 auto resources = mImpl->resources();
1775 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001776 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001777 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001778 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001779 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001780 local_device = device;
1781 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001782 local_pMemoryRanges = nullptr;
1783 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001784 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001785 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001786 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1787 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001788 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1789 }
1790 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001791 if (local_pMemoryRanges)
1792 {
1793 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1794 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001795 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001796 }
1797 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001798 countingStream->rewind();
1799 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001800 uint64_t cgen_var_109;
1801 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_109, 1);
1802 countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001803 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1804 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1805 {
1806 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001807 }
1808 }
1809 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1810 countingStream->rewind();
1811 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1812 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1813 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001814 uint64_t cgen_var_110;
1815 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
1816 stream->write((uint64_t*)&cgen_var_110, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001817 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001818 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1819 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001820 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001821 }
1822 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1823 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001824 countingStream->clearPool();
1825 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001826 pool->freeAll();
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001827 if (!resources->usingDirectMapping())
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001828 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001829 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1830 {
1831 auto range = pMemoryRanges[i];
1832 auto memory = pMemoryRanges[i].memory;
1833 auto size = pMemoryRanges[i].size;
1834 auto offset = pMemoryRanges[i].offset;
1835 uint64_t streamSize = 0;
1836 if (!memory) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1837 auto hostPtr = resources->getMappedPointer(memory);
1838 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1839 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1840 streamSize = actualSize;
1841 stream->read(&streamSize, sizeof(uint64_t));
1842 uint8_t* targetRange = hostPtr + offset;
1843 stream->read(targetRange, actualSize);
1844 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001845 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001846 mImpl->log("finish vkInvalidateMappedMemoryRanges");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001847 return vkInvalidateMappedMemoryRanges_VkResult_return;
1848}
1849
1850void VkEncoder::vkGetDeviceMemoryCommitment(
1851 VkDevice device,
1852 VkDeviceMemory memory,
1853 VkDeviceSize* pCommittedMemoryInBytes)
1854{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001855 mImpl->log("start vkGetDeviceMemoryCommitment");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001856 auto stream = mImpl->stream();
1857 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001858 auto resources = mImpl->resources();
1859 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001860 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001861 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001862 VkDeviceMemory local_memory;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001863 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001864 local_memory = memory;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001865 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001866 countingStream->rewind();
1867 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001868 uint64_t cgen_var_111;
1869 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_111, 1);
1870 countingStream->write((uint64_t*)&cgen_var_111, 1 * 8);
1871 uint64_t cgen_var_112;
1872 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
1873 countingStream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001874 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1875 }
1876 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1877 countingStream->rewind();
1878 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1879 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1880 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001881 uint64_t cgen_var_113;
1882 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
1883 stream->write((uint64_t*)&cgen_var_113, 1 * 8);
1884 uint64_t cgen_var_114;
1885 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_114, 1);
1886 stream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001887 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1888 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001889 mImpl->log("finish vkGetDeviceMemoryCommitment");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001890}
1891
1892VkResult VkEncoder::vkBindBufferMemory(
1893 VkDevice device,
1894 VkBuffer buffer,
1895 VkDeviceMemory memory,
1896 VkDeviceSize memoryOffset)
1897{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001898 mImpl->log("start vkBindBufferMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001899 auto stream = mImpl->stream();
1900 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001901 auto resources = mImpl->resources();
1902 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001903 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001904 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001905 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001906 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001907 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001908 local_device = device;
1909 local_buffer = buffer;
1910 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001911 local_memoryOffset = memoryOffset;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001912 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, &local_memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001913 countingStream->rewind();
1914 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001915 uint64_t cgen_var_115;
1916 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_115, 1);
1917 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
1918 uint64_t cgen_var_116;
1919 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_116, 1);
1920 countingStream->write((uint64_t*)&cgen_var_116, 1 * 8);
1921 uint64_t cgen_var_117;
1922 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_117, 1);
1923 countingStream->write((uint64_t*)&cgen_var_117, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001924 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001925 }
1926 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1927 countingStream->rewind();
1928 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
1929 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
1930 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001931 uint64_t cgen_var_118;
1932 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_118, 1);
1933 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
1934 uint64_t cgen_var_119;
1935 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_119, 1);
1936 stream->write((uint64_t*)&cgen_var_119, 1 * 8);
1937 uint64_t cgen_var_120;
1938 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_120, 1);
1939 stream->write((uint64_t*)&cgen_var_120, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001940 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001941 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
1942 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001943 countingStream->clearPool();
1944 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001945 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001946 mImpl->log("finish vkBindBufferMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001947 return vkBindBufferMemory_VkResult_return;
1948}
1949
1950VkResult VkEncoder::vkBindImageMemory(
1951 VkDevice device,
1952 VkImage image,
1953 VkDeviceMemory memory,
1954 VkDeviceSize memoryOffset)
1955{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001956 mImpl->log("start vkBindImageMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001957 auto stream = mImpl->stream();
1958 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001959 auto resources = mImpl->resources();
1960 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001961 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001962 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001963 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001964 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001965 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001966 local_device = device;
1967 local_image = image;
1968 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001969 local_memoryOffset = memoryOffset;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001970 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, &local_memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001971 countingStream->rewind();
1972 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001973 uint64_t cgen_var_121;
1974 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
1975 countingStream->write((uint64_t*)&cgen_var_121, 1 * 8);
1976 uint64_t cgen_var_122;
1977 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_122, 1);
1978 countingStream->write((uint64_t*)&cgen_var_122, 1 * 8);
1979 uint64_t cgen_var_123;
1980 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_123, 1);
1981 countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001982 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001983 }
1984 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1985 countingStream->rewind();
1986 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
1987 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
1988 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001989 uint64_t cgen_var_124;
1990 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_124, 1);
1991 stream->write((uint64_t*)&cgen_var_124, 1 * 8);
1992 uint64_t cgen_var_125;
1993 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_125, 1);
1994 stream->write((uint64_t*)&cgen_var_125, 1 * 8);
1995 uint64_t cgen_var_126;
1996 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_126, 1);
1997 stream->write((uint64_t*)&cgen_var_126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001998 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001999 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
2000 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002001 countingStream->clearPool();
2002 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002003 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002004 mImpl->log("finish vkBindImageMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002005 return vkBindImageMemory_VkResult_return;
2006}
2007
2008void VkEncoder::vkGetBufferMemoryRequirements(
2009 VkDevice device,
2010 VkBuffer buffer,
2011 VkMemoryRequirements* pMemoryRequirements)
2012{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002013 mImpl->log("start vkGetBufferMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002014 auto stream = mImpl->stream();
2015 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002016 auto resources = mImpl->resources();
2017 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002018 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002019 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002020 VkBuffer local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002021 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002022 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002023 countingStream->rewind();
2024 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002025 uint64_t cgen_var_127;
2026 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
2027 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
2028 uint64_t cgen_var_128;
2029 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_128, 1);
2030 countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002031 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
2032 }
2033 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2034 countingStream->rewind();
2035 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
2036 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
2037 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002038 uint64_t cgen_var_129;
2039 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_129, 1);
2040 stream->write((uint64_t*)&cgen_var_129, 1 * 8);
2041 uint64_t cgen_var_130;
2042 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_130, 1);
2043 stream->write((uint64_t*)&cgen_var_130, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002044 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
2045 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08002046 if (pMemoryRequirements)
2047 {
2048 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
2049 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002050 mImpl->log("finish vkGetBufferMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002051}
2052
2053void VkEncoder::vkGetImageMemoryRequirements(
2054 VkDevice device,
2055 VkImage image,
2056 VkMemoryRequirements* pMemoryRequirements)
2057{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002058 mImpl->log("start vkGetImageMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002059 auto stream = mImpl->stream();
2060 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002061 auto resources = mImpl->resources();
2062 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002063 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002064 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002065 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002066 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002067 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002068 countingStream->rewind();
2069 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002070 uint64_t cgen_var_131;
2071 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
2072 countingStream->write((uint64_t*)&cgen_var_131, 1 * 8);
2073 uint64_t cgen_var_132;
2074 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
2075 countingStream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002076 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
2077 }
2078 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2079 countingStream->rewind();
2080 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
2081 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
2082 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002083 uint64_t cgen_var_133;
2084 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_133, 1);
2085 stream->write((uint64_t*)&cgen_var_133, 1 * 8);
2086 uint64_t cgen_var_134;
2087 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_134, 1);
2088 stream->write((uint64_t*)&cgen_var_134, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002089 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
2090 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08002091 if (pMemoryRequirements)
2092 {
2093 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
2094 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002095 mImpl->log("finish vkGetImageMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002096}
2097
2098void VkEncoder::vkGetImageSparseMemoryRequirements(
2099 VkDevice device,
2100 VkImage image,
2101 uint32_t* pSparseMemoryRequirementCount,
2102 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
2103{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002104 mImpl->log("start vkGetImageSparseMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002105 auto stream = mImpl->stream();
2106 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002107 auto resources = mImpl->resources();
2108 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002109 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002110 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002111 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002112 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002113 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002114 countingStream->rewind();
2115 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002116 uint64_t cgen_var_135;
2117 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_135, 1);
2118 countingStream->write((uint64_t*)&cgen_var_135, 1 * 8);
2119 uint64_t cgen_var_136;
2120 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_136, 1);
2121 countingStream->write((uint64_t*)&cgen_var_136, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002122 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002123 uint64_t cgen_var_137 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2124 countingStream->putBe64(cgen_var_137);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002125 if (pSparseMemoryRequirementCount)
2126 {
2127 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2128 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002129 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002130 uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2131 countingStream->putBe64(cgen_var_138);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002132 if (pSparseMemoryRequirements)
2133 {
2134 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2135 {
2136 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2137 }
2138 }
2139 }
2140 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2141 countingStream->rewind();
2142 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
2143 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
2144 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002145 uint64_t cgen_var_139;
2146 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_139, 1);
2147 stream->write((uint64_t*)&cgen_var_139, 1 * 8);
2148 uint64_t cgen_var_140;
2149 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_140, 1);
2150 stream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002151 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002152 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2153 stream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002154 if (pSparseMemoryRequirementCount)
2155 {
2156 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2157 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002158 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002159 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2160 stream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002161 if (pSparseMemoryRequirements)
2162 {
2163 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2164 {
2165 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2166 }
2167 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002168 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002169 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002170 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002171 if (pSparseMemoryRequirementCount)
2172 {
2173 if (!(check_pSparseMemoryRequirementCount))
2174 {
2175 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
2176 }
2177 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2178 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002179 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002180 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002181 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002182 if (pSparseMemoryRequirements)
2183 {
2184 if (!(check_pSparseMemoryRequirements))
2185 {
2186 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
2187 }
2188 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2189 {
2190 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2191 }
2192 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002193 if (pSparseMemoryRequirements)
2194 {
2195 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2196 {
2197 transform_fromhost_VkSparseImageMemoryRequirements(mImpl->resources(), (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2198 }
2199 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002200 mImpl->log("finish vkGetImageSparseMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002201}
2202
2203void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
2204 VkPhysicalDevice physicalDevice,
2205 VkFormat format,
2206 VkImageType type,
2207 VkSampleCountFlagBits samples,
2208 VkImageUsageFlags usage,
2209 VkImageTiling tiling,
2210 uint32_t* pPropertyCount,
2211 VkSparseImageFormatProperties* pProperties)
2212{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002213 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002214 auto stream = mImpl->stream();
2215 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002216 auto resources = mImpl->resources();
2217 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002218 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002219 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002220 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002221 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002222 VkSampleCountFlagBits local_samples;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002223 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002224 VkImageTiling local_tiling;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002225 local_physicalDevice = physicalDevice;
2226 local_format = format;
2227 local_type = type;
2228 local_samples = samples;
2229 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002230 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002231 countingStream->rewind();
2232 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002233 uint64_t cgen_var_145;
2234 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_145, 1);
2235 countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002236 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
2237 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
2238 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2239 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2240 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002241 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002242 uint64_t cgen_var_146 = (uint64_t)(uintptr_t)pPropertyCount;
2243 countingStream->putBe64(cgen_var_146);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002244 if (pPropertyCount)
2245 {
2246 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2247 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002248 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002249 uint64_t cgen_var_147 = (uint64_t)(uintptr_t)pProperties;
2250 countingStream->putBe64(cgen_var_147);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002251 if (pProperties)
2252 {
2253 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2254 {
2255 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
2256 }
2257 }
2258 }
2259 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2260 countingStream->rewind();
2261 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
2262 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
2263 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002264 uint64_t cgen_var_148;
2265 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_148, 1);
2266 stream->write((uint64_t*)&cgen_var_148, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002267 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
2268 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
2269 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2270 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2271 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002272 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002273 uint64_t cgen_var_149 = (uint64_t)(uintptr_t)pPropertyCount;
2274 stream->putBe64(cgen_var_149);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002275 if (pPropertyCount)
2276 {
2277 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2278 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002279 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002280 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)pProperties;
2281 stream->putBe64(cgen_var_150);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002282 if (pProperties)
2283 {
2284 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2285 {
2286 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2287 }
2288 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002289 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002290 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002291 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002292 if (pPropertyCount)
2293 {
2294 if (!(check_pPropertyCount))
2295 {
2296 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
2297 }
2298 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
2299 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002300 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002301 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002302 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002303 if (pProperties)
2304 {
2305 if (!(check_pProperties))
2306 {
2307 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
2308 }
2309 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2310 {
2311 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2312 }
2313 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002314 if (pProperties)
2315 {
2316 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2317 {
2318 transform_fromhost_VkSparseImageFormatProperties(mImpl->resources(), (VkSparseImageFormatProperties*)(pProperties + i));
2319 }
2320 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002321 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002322}
2323
2324VkResult VkEncoder::vkQueueBindSparse(
2325 VkQueue queue,
2326 uint32_t bindInfoCount,
2327 const VkBindSparseInfo* pBindInfo,
2328 VkFence fence)
2329{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002330 mImpl->log("start vkQueueBindSparse");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002331 auto stream = mImpl->stream();
2332 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002333 auto resources = mImpl->resources();
2334 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002335 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002336 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002337 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002338 VkBindSparseInfo* local_pBindInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002339 VkFence local_fence;
2340 local_queue = queue;
2341 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002342 local_pBindInfo = nullptr;
2343 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002344 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002345 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002346 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2347 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002348 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002349 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002350 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002351 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002352 if (local_pBindInfo)
2353 {
2354 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2355 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002356 transform_tohost_VkBindSparseInfo(mImpl->resources(), (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002357 }
2358 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002359 countingStream->rewind();
2360 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002361 uint64_t cgen_var_153;
2362 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_153, 1);
2363 countingStream->write((uint64_t*)&cgen_var_153, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002364 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2365 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2366 {
2367 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2368 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002369 uint64_t cgen_var_154;
2370 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_154, 1);
2371 countingStream->write((uint64_t*)&cgen_var_154, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002372 }
2373 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2374 countingStream->rewind();
2375 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2376 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2377 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002378 uint64_t cgen_var_155;
2379 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_155, 1);
2380 stream->write((uint64_t*)&cgen_var_155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002381 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002382 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2383 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002384 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002385 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002386 uint64_t cgen_var_156;
2387 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_156, 1);
2388 stream->write((uint64_t*)&cgen_var_156, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002389 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2390 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002391 countingStream->clearPool();
2392 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002393 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002394 mImpl->log("finish vkQueueBindSparse");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002395 return vkQueueBindSparse_VkResult_return;
2396}
2397
2398VkResult VkEncoder::vkCreateFence(
2399 VkDevice device,
2400 const VkFenceCreateInfo* pCreateInfo,
2401 const VkAllocationCallbacks* pAllocator,
2402 VkFence* pFence)
2403{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002404 mImpl->log("start vkCreateFence");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002405 auto stream = mImpl->stream();
2406 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002407 auto resources = mImpl->resources();
2408 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002409 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002410 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002411 VkFenceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002412 VkAllocationCallbacks* local_pAllocator;
2413 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002414 local_pCreateInfo = nullptr;
2415 if (pCreateInfo)
2416 {
2417 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2418 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2419 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002420 local_pAllocator = nullptr;
2421 if (pAllocator)
2422 {
2423 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2424 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2425 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002426 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002427 if (local_pCreateInfo)
2428 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002429 transform_tohost_VkFenceCreateInfo(mImpl->resources(), (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002430 }
2431 if (local_pAllocator)
2432 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002433 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002434 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002435 countingStream->rewind();
2436 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002437 uint64_t cgen_var_157;
2438 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_157, 1);
2439 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002440 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002441 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002442 uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2443 countingStream->putBe64(cgen_var_158);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002444 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002445 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002446 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002447 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002448 uint64_t cgen_var_159;
2449 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_159, 1);
2450 countingStream->write((uint64_t*)&cgen_var_159, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002451 }
2452 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2453 countingStream->rewind();
2454 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2455 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2456 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002457 uint64_t cgen_var_160;
2458 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_160, 1);
2459 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002460 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002461 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002462 uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2463 stream->putBe64(cgen_var_161);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002464 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002465 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002466 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002467 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002468 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002469 uint64_t cgen_var_162;
2470 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_162, 1);
2471 stream->write((uint64_t*)&cgen_var_162, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002472 stream->setHandleMapping(resources->unwrapMapping());
2473 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002474 uint64_t cgen_var_163;
2475 stream->read((uint64_t*)&cgen_var_163, 8);
2476 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_163, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002477 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002478 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2479 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002480 countingStream->clearPool();
2481 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002482 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002483 mImpl->log("finish vkCreateFence");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002484 return vkCreateFence_VkResult_return;
2485}
2486
2487void VkEncoder::vkDestroyFence(
2488 VkDevice device,
2489 VkFence fence,
2490 const VkAllocationCallbacks* pAllocator)
2491{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002492 mImpl->log("start vkDestroyFence");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002493 auto stream = mImpl->stream();
2494 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002495 auto resources = mImpl->resources();
2496 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002497 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002498 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002499 VkFence local_fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002500 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002501 local_device = device;
2502 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002503 local_pAllocator = nullptr;
2504 if (pAllocator)
2505 {
2506 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2507 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2508 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002509 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002510 if (local_pAllocator)
2511 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002512 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002513 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002514 countingStream->rewind();
2515 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002516 uint64_t cgen_var_164;
2517 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
2518 countingStream->write((uint64_t*)&cgen_var_164, 1 * 8);
2519 uint64_t cgen_var_165;
2520 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_165, 1);
2521 countingStream->write((uint64_t*)&cgen_var_165, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002522 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002523 uint64_t cgen_var_166 = (uint64_t)(uintptr_t)local_pAllocator;
2524 countingStream->putBe64(cgen_var_166);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002525 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002526 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002527 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002528 }
2529 }
2530 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2531 countingStream->rewind();
2532 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2533 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2534 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002535 uint64_t cgen_var_167;
2536 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_167, 1);
2537 stream->write((uint64_t*)&cgen_var_167, 1 * 8);
2538 uint64_t cgen_var_168;
2539 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_168, 1);
2540 stream->write((uint64_t*)&cgen_var_168, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002541 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002542 uint64_t cgen_var_169 = (uint64_t)(uintptr_t)local_pAllocator;
2543 stream->putBe64(cgen_var_169);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002544 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002545 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002546 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002547 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002548 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002549 mImpl->log("finish vkDestroyFence");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002550}
2551
2552VkResult VkEncoder::vkResetFences(
2553 VkDevice device,
2554 uint32_t fenceCount,
2555 const VkFence* pFences)
2556{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002557 mImpl->log("start vkResetFences");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002558 auto stream = mImpl->stream();
2559 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002560 auto resources = mImpl->resources();
2561 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002562 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002563 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002564 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002565 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002566 local_device = device;
2567 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002568 local_pFences = nullptr;
2569 if (pFences)
2570 {
2571 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2572 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002573 countingStream->rewind();
2574 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002575 uint64_t cgen_var_170;
2576 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
2577 countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002578 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002579 if (((fenceCount)))
2580 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002581 uint64_t* cgen_var_171;
2582 countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2583 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
2584 countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002585 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002586 }
2587 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2588 countingStream->rewind();
2589 uint32_t opcode_vkResetFences = OP_vkResetFences;
2590 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2591 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002592 uint64_t cgen_var_172;
2593 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
2594 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002595 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002596 if (((fenceCount)))
2597 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002598 uint64_t* cgen_var_173;
2599 stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2600 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
2601 stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002602 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002603 VkResult vkResetFences_VkResult_return = (VkResult)0;
2604 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002605 countingStream->clearPool();
2606 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002607 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002608 mImpl->log("finish vkResetFences");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002609 return vkResetFences_VkResult_return;
2610}
2611
2612VkResult VkEncoder::vkGetFenceStatus(
2613 VkDevice device,
2614 VkFence fence)
2615{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002616 mImpl->log("start vkGetFenceStatus");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002617 auto stream = mImpl->stream();
2618 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002619 auto resources = mImpl->resources();
2620 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002621 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002622 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002623 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002624 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002625 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002626 countingStream->rewind();
2627 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002628 uint64_t cgen_var_174;
2629 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
2630 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
2631 uint64_t cgen_var_175;
2632 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_175, 1);
2633 countingStream->write((uint64_t*)&cgen_var_175, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002634 }
2635 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2636 countingStream->rewind();
2637 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2638 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2639 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002640 uint64_t cgen_var_176;
2641 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_176, 1);
2642 stream->write((uint64_t*)&cgen_var_176, 1 * 8);
2643 uint64_t cgen_var_177;
2644 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_177, 1);
2645 stream->write((uint64_t*)&cgen_var_177, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002646 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2647 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002648 countingStream->clearPool();
2649 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002650 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002651 mImpl->log("finish vkGetFenceStatus");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002652 return vkGetFenceStatus_VkResult_return;
2653}
2654
2655VkResult VkEncoder::vkWaitForFences(
2656 VkDevice device,
2657 uint32_t fenceCount,
2658 const VkFence* pFences,
2659 VkBool32 waitAll,
2660 uint64_t timeout)
2661{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002662 mImpl->log("start vkWaitForFences");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002663 auto stream = mImpl->stream();
2664 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002665 auto resources = mImpl->resources();
2666 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002667 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002668 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002669 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002670 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002671 VkBool32 local_waitAll;
2672 uint64_t local_timeout;
2673 local_device = device;
2674 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002675 local_pFences = nullptr;
2676 if (pFences)
2677 {
2678 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2679 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002680 local_waitAll = waitAll;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002681 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002682 countingStream->rewind();
2683 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002684 uint64_t cgen_var_178;
2685 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_178, 1);
2686 countingStream->write((uint64_t*)&cgen_var_178, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002687 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002688 if (((fenceCount)))
2689 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002690 uint64_t* cgen_var_179;
2691 countingStream->alloc((void**)&cgen_var_179, ((fenceCount)) * 8);
2692 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_179, ((fenceCount)));
2693 countingStream->write((uint64_t*)cgen_var_179, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002694 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002695 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2696 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002697 }
2698 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2699 countingStream->rewind();
2700 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2701 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2702 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002703 uint64_t cgen_var_180;
2704 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_180, 1);
2705 stream->write((uint64_t*)&cgen_var_180, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002706 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002707 if (((fenceCount)))
2708 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002709 uint64_t* cgen_var_181;
2710 stream->alloc((void**)&cgen_var_181, ((fenceCount)) * 8);
2711 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_181, ((fenceCount)));
2712 stream->write((uint64_t*)cgen_var_181, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002713 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002714 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2715 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002716 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2717 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002718 countingStream->clearPool();
2719 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002720 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002721 mImpl->log("finish vkWaitForFences");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002722 return vkWaitForFences_VkResult_return;
2723}
2724
2725VkResult VkEncoder::vkCreateSemaphore(
2726 VkDevice device,
2727 const VkSemaphoreCreateInfo* pCreateInfo,
2728 const VkAllocationCallbacks* pAllocator,
2729 VkSemaphore* pSemaphore)
2730{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002731 mImpl->log("start vkCreateSemaphore");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002732 auto stream = mImpl->stream();
2733 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002734 auto resources = mImpl->resources();
2735 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002736 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002737 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002738 VkSemaphoreCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002739 VkAllocationCallbacks* local_pAllocator;
2740 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002741 local_pCreateInfo = nullptr;
2742 if (pCreateInfo)
2743 {
2744 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2745 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2746 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002747 local_pAllocator = nullptr;
2748 if (pAllocator)
2749 {
2750 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2751 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2752 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002753 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002754 if (local_pCreateInfo)
2755 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002756 transform_tohost_VkSemaphoreCreateInfo(mImpl->resources(), (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002757 }
2758 if (local_pAllocator)
2759 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002760 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002761 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002762 countingStream->rewind();
2763 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002764 uint64_t cgen_var_182;
2765 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_182, 1);
2766 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002767 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002768 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002769 uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2770 countingStream->putBe64(cgen_var_183);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002771 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002772 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002773 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002774 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002775 uint64_t cgen_var_184;
2776 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_184, 1);
2777 countingStream->write((uint64_t*)&cgen_var_184, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002778 }
2779 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2780 countingStream->rewind();
2781 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2782 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2783 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002784 uint64_t cgen_var_185;
2785 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_185, 1);
2786 stream->write((uint64_t*)&cgen_var_185, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002787 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002788 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002789 uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2790 stream->putBe64(cgen_var_186);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002791 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002792 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002793 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002794 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002795 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002796 uint64_t cgen_var_187;
2797 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_187, 1);
2798 stream->write((uint64_t*)&cgen_var_187, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002799 stream->setHandleMapping(resources->unwrapMapping());
2800 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002801 uint64_t cgen_var_188;
2802 stream->read((uint64_t*)&cgen_var_188, 8);
2803 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_188, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002804 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002805 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2806 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002807 countingStream->clearPool();
2808 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002809 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002810 mImpl->log("finish vkCreateSemaphore");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002811 return vkCreateSemaphore_VkResult_return;
2812}
2813
2814void VkEncoder::vkDestroySemaphore(
2815 VkDevice device,
2816 VkSemaphore semaphore,
2817 const VkAllocationCallbacks* pAllocator)
2818{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002819 mImpl->log("start vkDestroySemaphore");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002820 auto stream = mImpl->stream();
2821 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002822 auto resources = mImpl->resources();
2823 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002824 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002825 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002826 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002827 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002828 local_device = device;
2829 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002830 local_pAllocator = nullptr;
2831 if (pAllocator)
2832 {
2833 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2834 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2835 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002836 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002837 if (local_pAllocator)
2838 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002839 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002840 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002841 countingStream->rewind();
2842 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002843 uint64_t cgen_var_189;
2844 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_189, 1);
2845 countingStream->write((uint64_t*)&cgen_var_189, 1 * 8);
2846 uint64_t cgen_var_190;
2847 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_190, 1);
2848 countingStream->write((uint64_t*)&cgen_var_190, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002849 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002850 uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2851 countingStream->putBe64(cgen_var_191);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002852 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002853 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002854 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002855 }
2856 }
2857 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2858 countingStream->rewind();
2859 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2860 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2861 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002862 uint64_t cgen_var_192;
2863 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_192, 1);
2864 stream->write((uint64_t*)&cgen_var_192, 1 * 8);
2865 uint64_t cgen_var_193;
2866 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_193, 1);
2867 stream->write((uint64_t*)&cgen_var_193, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002868 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002869 uint64_t cgen_var_194 = (uint64_t)(uintptr_t)local_pAllocator;
2870 stream->putBe64(cgen_var_194);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002871 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002872 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002873 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002874 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002875 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002876 mImpl->log("finish vkDestroySemaphore");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002877}
2878
2879VkResult VkEncoder::vkCreateEvent(
2880 VkDevice device,
2881 const VkEventCreateInfo* pCreateInfo,
2882 const VkAllocationCallbacks* pAllocator,
2883 VkEvent* pEvent)
2884{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002885 mImpl->log("start vkCreateEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002886 auto stream = mImpl->stream();
2887 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002888 auto resources = mImpl->resources();
2889 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002890 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002891 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002892 VkEventCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002893 VkAllocationCallbacks* local_pAllocator;
2894 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002895 local_pCreateInfo = nullptr;
2896 if (pCreateInfo)
2897 {
2898 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
2899 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
2900 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002901 local_pAllocator = nullptr;
2902 if (pAllocator)
2903 {
2904 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2905 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2906 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002907 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002908 if (local_pCreateInfo)
2909 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002910 transform_tohost_VkEventCreateInfo(mImpl->resources(), (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002911 }
2912 if (local_pAllocator)
2913 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002914 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002915 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002916 countingStream->rewind();
2917 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002918 uint64_t cgen_var_195;
2919 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_195, 1);
2920 countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002921 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002922 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002923 uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
2924 countingStream->putBe64(cgen_var_196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002925 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002926 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002927 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002928 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002929 uint64_t cgen_var_197;
2930 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_197, 1);
2931 countingStream->write((uint64_t*)&cgen_var_197, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002932 }
2933 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2934 countingStream->rewind();
2935 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
2936 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
2937 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002938 uint64_t cgen_var_198;
2939 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_198, 1);
2940 stream->write((uint64_t*)&cgen_var_198, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002941 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002942 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002943 uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
2944 stream->putBe64(cgen_var_199);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002945 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002946 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002947 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002948 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002949 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002950 uint64_t cgen_var_200;
2951 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_200, 1);
2952 stream->write((uint64_t*)&cgen_var_200, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002953 stream->setHandleMapping(resources->unwrapMapping());
2954 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002955 uint64_t cgen_var_201;
2956 stream->read((uint64_t*)&cgen_var_201, 8);
2957 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_201, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002958 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002959 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
2960 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002961 countingStream->clearPool();
2962 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002963 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002964 mImpl->log("finish vkCreateEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002965 return vkCreateEvent_VkResult_return;
2966}
2967
2968void VkEncoder::vkDestroyEvent(
2969 VkDevice device,
2970 VkEvent event,
2971 const VkAllocationCallbacks* pAllocator)
2972{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002973 mImpl->log("start vkDestroyEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002974 auto stream = mImpl->stream();
2975 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002976 auto resources = mImpl->resources();
2977 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002978 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002979 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002980 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002981 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002982 local_device = device;
2983 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002984 local_pAllocator = nullptr;
2985 if (pAllocator)
2986 {
2987 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2988 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2989 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002990 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002991 if (local_pAllocator)
2992 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002993 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002994 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002995 countingStream->rewind();
2996 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002997 uint64_t cgen_var_202;
2998 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
2999 countingStream->write((uint64_t*)&cgen_var_202, 1 * 8);
3000 uint64_t cgen_var_203;
3001 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
3002 countingStream->write((uint64_t*)&cgen_var_203, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003003 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003004 uint64_t cgen_var_204 = (uint64_t)(uintptr_t)local_pAllocator;
3005 countingStream->putBe64(cgen_var_204);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003006 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003007 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003008 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003009 }
3010 }
3011 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3012 countingStream->rewind();
3013 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
3014 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
3015 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003016 uint64_t cgen_var_205;
3017 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_205, 1);
3018 stream->write((uint64_t*)&cgen_var_205, 1 * 8);
3019 uint64_t cgen_var_206;
3020 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_206, 1);
3021 stream->write((uint64_t*)&cgen_var_206, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003022 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003023 uint64_t cgen_var_207 = (uint64_t)(uintptr_t)local_pAllocator;
3024 stream->putBe64(cgen_var_207);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003025 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003026 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003027 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003028 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003029 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003030 mImpl->log("finish vkDestroyEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003031}
3032
3033VkResult VkEncoder::vkGetEventStatus(
3034 VkDevice device,
3035 VkEvent event)
3036{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003037 mImpl->log("start vkGetEventStatus");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003038 auto stream = mImpl->stream();
3039 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003040 auto resources = mImpl->resources();
3041 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003042 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003043 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003044 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003045 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003046 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003047 countingStream->rewind();
3048 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003049 uint64_t cgen_var_208;
3050 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
3051 countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
3052 uint64_t cgen_var_209;
3053 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
3054 countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003055 }
3056 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3057 countingStream->rewind();
3058 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
3059 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
3060 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003061 uint64_t cgen_var_210;
3062 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
3063 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
3064 uint64_t cgen_var_211;
3065 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
3066 stream->write((uint64_t*)&cgen_var_211, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003067 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
3068 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003069 countingStream->clearPool();
3070 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003071 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003072 mImpl->log("finish vkGetEventStatus");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003073 return vkGetEventStatus_VkResult_return;
3074}
3075
3076VkResult VkEncoder::vkSetEvent(
3077 VkDevice device,
3078 VkEvent event)
3079{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003080 mImpl->log("start vkSetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003081 auto stream = mImpl->stream();
3082 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003083 auto resources = mImpl->resources();
3084 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003085 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003086 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003087 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003088 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003089 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003090 countingStream->rewind();
3091 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003092 uint64_t cgen_var_212;
3093 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
3094 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
3095 uint64_t cgen_var_213;
3096 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_213, 1);
3097 countingStream->write((uint64_t*)&cgen_var_213, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003098 }
3099 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3100 countingStream->rewind();
3101 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
3102 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
3103 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003104 uint64_t cgen_var_214;
3105 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_214, 1);
3106 stream->write((uint64_t*)&cgen_var_214, 1 * 8);
3107 uint64_t cgen_var_215;
3108 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_215, 1);
3109 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003110 VkResult vkSetEvent_VkResult_return = (VkResult)0;
3111 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003112 countingStream->clearPool();
3113 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003114 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003115 mImpl->log("finish vkSetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003116 return vkSetEvent_VkResult_return;
3117}
3118
3119VkResult VkEncoder::vkResetEvent(
3120 VkDevice device,
3121 VkEvent event)
3122{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003123 mImpl->log("start vkResetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003124 auto stream = mImpl->stream();
3125 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003126 auto resources = mImpl->resources();
3127 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003128 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003129 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003130 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003131 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003132 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003133 countingStream->rewind();
3134 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003135 uint64_t cgen_var_216;
3136 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_216, 1);
3137 countingStream->write((uint64_t*)&cgen_var_216, 1 * 8);
3138 uint64_t cgen_var_217;
3139 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_217, 1);
3140 countingStream->write((uint64_t*)&cgen_var_217, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003141 }
3142 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3143 countingStream->rewind();
3144 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
3145 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
3146 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003147 uint64_t cgen_var_218;
3148 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_218, 1);
3149 stream->write((uint64_t*)&cgen_var_218, 1 * 8);
3150 uint64_t cgen_var_219;
3151 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_219, 1);
3152 stream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003153 VkResult vkResetEvent_VkResult_return = (VkResult)0;
3154 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003155 countingStream->clearPool();
3156 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003157 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003158 mImpl->log("finish vkResetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003159 return vkResetEvent_VkResult_return;
3160}
3161
3162VkResult VkEncoder::vkCreateQueryPool(
3163 VkDevice device,
3164 const VkQueryPoolCreateInfo* pCreateInfo,
3165 const VkAllocationCallbacks* pAllocator,
3166 VkQueryPool* pQueryPool)
3167{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003168 mImpl->log("start vkCreateQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003169 auto stream = mImpl->stream();
3170 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003171 auto resources = mImpl->resources();
3172 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003173 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003174 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003175 VkQueryPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003176 VkAllocationCallbacks* local_pAllocator;
3177 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003178 local_pCreateInfo = nullptr;
3179 if (pCreateInfo)
3180 {
3181 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
3182 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
3183 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003184 local_pAllocator = nullptr;
3185 if (pAllocator)
3186 {
3187 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3188 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3189 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003190 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003191 if (local_pCreateInfo)
3192 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003193 transform_tohost_VkQueryPoolCreateInfo(mImpl->resources(), (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003194 }
3195 if (local_pAllocator)
3196 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003197 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003198 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003199 countingStream->rewind();
3200 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003201 uint64_t cgen_var_220;
3202 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_220, 1);
3203 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003204 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003205 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003206 uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
3207 countingStream->putBe64(cgen_var_221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003208 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003209 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003210 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003211 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003212 uint64_t cgen_var_222;
3213 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_222, 1);
3214 countingStream->write((uint64_t*)&cgen_var_222, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003215 }
3216 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3217 countingStream->rewind();
3218 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
3219 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
3220 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003221 uint64_t cgen_var_223;
3222 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_223, 1);
3223 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003224 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003225 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003226 uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
3227 stream->putBe64(cgen_var_224);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003228 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003229 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003230 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003231 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003232 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003233 uint64_t cgen_var_225;
3234 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_225, 1);
3235 stream->write((uint64_t*)&cgen_var_225, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003236 stream->setHandleMapping(resources->unwrapMapping());
3237 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003238 uint64_t cgen_var_226;
3239 stream->read((uint64_t*)&cgen_var_226, 8);
3240 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_226, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003241 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003242 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
3243 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003244 countingStream->clearPool();
3245 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003246 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003247 mImpl->log("finish vkCreateQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003248 return vkCreateQueryPool_VkResult_return;
3249}
3250
3251void VkEncoder::vkDestroyQueryPool(
3252 VkDevice device,
3253 VkQueryPool queryPool,
3254 const VkAllocationCallbacks* pAllocator)
3255{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003256 mImpl->log("start vkDestroyQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003257 auto stream = mImpl->stream();
3258 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003259 auto resources = mImpl->resources();
3260 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003261 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003262 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003263 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003264 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003265 local_device = device;
3266 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003267 local_pAllocator = nullptr;
3268 if (pAllocator)
3269 {
3270 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3271 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3272 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003273 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003274 if (local_pAllocator)
3275 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003276 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003277 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003278 countingStream->rewind();
3279 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003280 uint64_t cgen_var_227;
3281 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_227, 1);
3282 countingStream->write((uint64_t*)&cgen_var_227, 1 * 8);
3283 uint64_t cgen_var_228;
3284 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_228, 1);
3285 countingStream->write((uint64_t*)&cgen_var_228, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003286 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003287 uint64_t cgen_var_229 = (uint64_t)(uintptr_t)local_pAllocator;
3288 countingStream->putBe64(cgen_var_229);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003289 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003290 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003291 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003292 }
3293 }
3294 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3295 countingStream->rewind();
3296 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
3297 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
3298 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003299 uint64_t cgen_var_230;
3300 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_230, 1);
3301 stream->write((uint64_t*)&cgen_var_230, 1 * 8);
3302 uint64_t cgen_var_231;
3303 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_231, 1);
3304 stream->write((uint64_t*)&cgen_var_231, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003305 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003306 uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3307 stream->putBe64(cgen_var_232);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003308 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003309 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003310 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003311 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003312 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003313 mImpl->log("finish vkDestroyQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003314}
3315
3316VkResult VkEncoder::vkGetQueryPoolResults(
3317 VkDevice device,
3318 VkQueryPool queryPool,
3319 uint32_t firstQuery,
3320 uint32_t queryCount,
3321 size_t dataSize,
3322 void* pData,
3323 VkDeviceSize stride,
3324 VkQueryResultFlags flags)
3325{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003326 mImpl->log("start vkGetQueryPoolResults");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003327 auto stream = mImpl->stream();
3328 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003329 auto resources = mImpl->resources();
3330 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003331 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003332 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003333 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003334 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003335 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003336 size_t local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003337 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003338 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003339 local_device = device;
3340 local_queryPool = queryPool;
3341 local_firstQuery = firstQuery;
3342 local_queryCount = queryCount;
3343 local_dataSize = dataSize;
3344 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003345 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003346 countingStream->rewind();
3347 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003348 uint64_t cgen_var_233;
3349 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_233, 1);
3350 countingStream->write((uint64_t*)&cgen_var_233, 1 * 8);
3351 uint64_t cgen_var_234;
3352 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_234, 1);
3353 countingStream->write((uint64_t*)&cgen_var_234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003354 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3355 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003356 uint64_t cgen_var_235 = (uint64_t)local_dataSize;
3357 countingStream->putBe64(cgen_var_235);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003358 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003359 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3360 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003361 }
3362 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3363 countingStream->rewind();
3364 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
3365 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
3366 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003367 uint64_t cgen_var_236;
3368 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_236, 1);
3369 stream->write((uint64_t*)&cgen_var_236, 1 * 8);
3370 uint64_t cgen_var_237;
3371 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_237, 1);
3372 stream->write((uint64_t*)&cgen_var_237, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003373 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3374 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003375 uint64_t cgen_var_238 = (uint64_t)local_dataSize;
3376 stream->putBe64(cgen_var_238);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003377 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003378 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3379 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003380 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
3381 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
3382 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003383 countingStream->clearPool();
3384 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003385 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003386 mImpl->log("finish vkGetQueryPoolResults");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003387 return vkGetQueryPoolResults_VkResult_return;
3388}
3389
3390VkResult VkEncoder::vkCreateBuffer(
3391 VkDevice device,
3392 const VkBufferCreateInfo* pCreateInfo,
3393 const VkAllocationCallbacks* pAllocator,
3394 VkBuffer* pBuffer)
3395{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003396 mImpl->log("start vkCreateBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003397 auto stream = mImpl->stream();
3398 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003399 auto resources = mImpl->resources();
3400 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003401 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003402 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003403 VkBufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003404 VkAllocationCallbacks* local_pAllocator;
3405 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003406 local_pCreateInfo = nullptr;
3407 if (pCreateInfo)
3408 {
3409 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3410 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3411 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003412 local_pAllocator = nullptr;
3413 if (pAllocator)
3414 {
3415 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3416 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3417 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003418 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003419 if (local_pCreateInfo)
3420 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003421 transform_tohost_VkBufferCreateInfo(mImpl->resources(), (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003422 }
3423 if (local_pAllocator)
3424 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003425 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003426 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003427 countingStream->rewind();
3428 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003429 uint64_t cgen_var_239;
3430 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_239, 1);
3431 countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003432 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003433 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003434 uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3435 countingStream->putBe64(cgen_var_240);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003436 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003437 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003438 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003439 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003440 uint64_t cgen_var_241;
3441 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_241, 1);
3442 countingStream->write((uint64_t*)&cgen_var_241, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003443 }
3444 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3445 countingStream->rewind();
3446 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3447 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3448 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003449 uint64_t cgen_var_242;
3450 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_242, 1);
3451 stream->write((uint64_t*)&cgen_var_242, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003452 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003453 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003454 uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3455 stream->putBe64(cgen_var_243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003456 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003457 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003458 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003459 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003460 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003461 uint64_t cgen_var_244;
3462 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_244, 1);
3463 stream->write((uint64_t*)&cgen_var_244, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003464 stream->setHandleMapping(resources->unwrapMapping());
3465 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003466 uint64_t cgen_var_245;
3467 stream->read((uint64_t*)&cgen_var_245, 8);
3468 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_245, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003469 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003470 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3471 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003472 countingStream->clearPool();
3473 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003474 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003475 mImpl->log("finish vkCreateBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003476 return vkCreateBuffer_VkResult_return;
3477}
3478
3479void VkEncoder::vkDestroyBuffer(
3480 VkDevice device,
3481 VkBuffer buffer,
3482 const VkAllocationCallbacks* pAllocator)
3483{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003484 mImpl->log("start vkDestroyBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003485 auto stream = mImpl->stream();
3486 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003487 auto resources = mImpl->resources();
3488 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003489 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003490 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003491 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003492 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003493 local_device = device;
3494 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003495 local_pAllocator = nullptr;
3496 if (pAllocator)
3497 {
3498 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3499 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3500 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003501 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003502 if (local_pAllocator)
3503 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003504 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003505 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003506 countingStream->rewind();
3507 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003508 uint64_t cgen_var_246;
3509 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_246, 1);
3510 countingStream->write((uint64_t*)&cgen_var_246, 1 * 8);
3511 uint64_t cgen_var_247;
3512 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_247, 1);
3513 countingStream->write((uint64_t*)&cgen_var_247, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003514 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003515 uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3516 countingStream->putBe64(cgen_var_248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003517 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003518 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003519 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003520 }
3521 }
3522 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3523 countingStream->rewind();
3524 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3525 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3526 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003527 uint64_t cgen_var_249;
3528 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_249, 1);
3529 stream->write((uint64_t*)&cgen_var_249, 1 * 8);
3530 uint64_t cgen_var_250;
3531 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_250, 1);
3532 stream->write((uint64_t*)&cgen_var_250, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003533 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003534 uint64_t cgen_var_251 = (uint64_t)(uintptr_t)local_pAllocator;
3535 stream->putBe64(cgen_var_251);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003536 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003537 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003538 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003539 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003540 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003541 mImpl->log("finish vkDestroyBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003542}
3543
3544VkResult VkEncoder::vkCreateBufferView(
3545 VkDevice device,
3546 const VkBufferViewCreateInfo* pCreateInfo,
3547 const VkAllocationCallbacks* pAllocator,
3548 VkBufferView* pView)
3549{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003550 mImpl->log("start vkCreateBufferView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003551 auto stream = mImpl->stream();
3552 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003553 auto resources = mImpl->resources();
3554 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003555 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003556 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003557 VkBufferViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003558 VkAllocationCallbacks* local_pAllocator;
3559 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003560 local_pCreateInfo = nullptr;
3561 if (pCreateInfo)
3562 {
3563 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3564 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3565 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003566 local_pAllocator = nullptr;
3567 if (pAllocator)
3568 {
3569 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3570 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3571 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003572 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003573 if (local_pCreateInfo)
3574 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003575 transform_tohost_VkBufferViewCreateInfo(mImpl->resources(), (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003576 }
3577 if (local_pAllocator)
3578 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003579 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003580 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003581 countingStream->rewind();
3582 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003583 uint64_t cgen_var_252;
3584 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_252, 1);
3585 countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003586 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003587 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003588 uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3589 countingStream->putBe64(cgen_var_253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003590 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003591 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003592 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003593 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003594 uint64_t cgen_var_254;
3595 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_254, 1);
3596 countingStream->write((uint64_t*)&cgen_var_254, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003597 }
3598 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3599 countingStream->rewind();
3600 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3601 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3602 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003603 uint64_t cgen_var_255;
3604 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_255, 1);
3605 stream->write((uint64_t*)&cgen_var_255, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003606 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003607 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003608 uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3609 stream->putBe64(cgen_var_256);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003610 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003611 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003612 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003613 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003614 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003615 uint64_t cgen_var_257;
3616 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_257, 1);
3617 stream->write((uint64_t*)&cgen_var_257, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003618 stream->setHandleMapping(resources->unwrapMapping());
3619 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003620 uint64_t cgen_var_258;
3621 stream->read((uint64_t*)&cgen_var_258, 8);
3622 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_258, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003623 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003624 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3625 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003626 countingStream->clearPool();
3627 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003628 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003629 mImpl->log("finish vkCreateBufferView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003630 return vkCreateBufferView_VkResult_return;
3631}
3632
3633void VkEncoder::vkDestroyBufferView(
3634 VkDevice device,
3635 VkBufferView bufferView,
3636 const VkAllocationCallbacks* pAllocator)
3637{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003638 mImpl->log("start vkDestroyBufferView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003639 auto stream = mImpl->stream();
3640 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003641 auto resources = mImpl->resources();
3642 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003643 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003644 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003645 VkBufferView local_bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003646 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003647 local_device = device;
3648 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003649 local_pAllocator = nullptr;
3650 if (pAllocator)
3651 {
3652 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3653 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3654 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003655 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003656 if (local_pAllocator)
3657 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003658 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003659 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003660 countingStream->rewind();
3661 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003662 uint64_t cgen_var_259;
3663 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_259, 1);
3664 countingStream->write((uint64_t*)&cgen_var_259, 1 * 8);
3665 uint64_t cgen_var_260;
3666 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_260, 1);
3667 countingStream->write((uint64_t*)&cgen_var_260, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003668 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003669 uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
3670 countingStream->putBe64(cgen_var_261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003671 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003672 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003673 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003674 }
3675 }
3676 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3677 countingStream->rewind();
3678 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3679 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3680 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003681 uint64_t cgen_var_262;
3682 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_262, 1);
3683 stream->write((uint64_t*)&cgen_var_262, 1 * 8);
3684 uint64_t cgen_var_263;
3685 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_263, 1);
3686 stream->write((uint64_t*)&cgen_var_263, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003687 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003688 uint64_t cgen_var_264 = (uint64_t)(uintptr_t)local_pAllocator;
3689 stream->putBe64(cgen_var_264);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003690 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003691 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003692 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003693 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003694 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003695 mImpl->log("finish vkDestroyBufferView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003696}
3697
3698VkResult VkEncoder::vkCreateImage(
3699 VkDevice device,
3700 const VkImageCreateInfo* pCreateInfo,
3701 const VkAllocationCallbacks* pAllocator,
3702 VkImage* pImage)
3703{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003704 mImpl->log("start vkCreateImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003705 auto stream = mImpl->stream();
3706 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003707 auto resources = mImpl->resources();
3708 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003709 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003710 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003711 VkImageCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003712 VkAllocationCallbacks* local_pAllocator;
3713 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003714 local_pCreateInfo = nullptr;
3715 if (pCreateInfo)
3716 {
3717 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3718 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3719 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003720 local_pAllocator = nullptr;
3721 if (pAllocator)
3722 {
3723 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3724 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3725 }
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08003726 mImpl->resources()->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003727 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003728 if (local_pCreateInfo)
3729 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003730 transform_tohost_VkImageCreateInfo(mImpl->resources(), (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003731 }
3732 if (local_pAllocator)
3733 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003734 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003735 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003736 countingStream->rewind();
3737 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003738 uint64_t cgen_var_265;
3739 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_265, 1);
3740 countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003741 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003742 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003743 uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3744 countingStream->putBe64(cgen_var_266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003745 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003746 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003747 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003748 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003749 uint64_t cgen_var_267;
3750 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_267, 1);
3751 countingStream->write((uint64_t*)&cgen_var_267, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003752 }
3753 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3754 countingStream->rewind();
3755 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3756 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3757 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003758 uint64_t cgen_var_268;
3759 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_268, 1);
3760 stream->write((uint64_t*)&cgen_var_268, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003761 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003762 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003763 uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3764 stream->putBe64(cgen_var_269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003765 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003766 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003767 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003768 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003769 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003770 uint64_t cgen_var_270;
3771 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_270, 1);
3772 stream->write((uint64_t*)&cgen_var_270, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003773 stream->setHandleMapping(resources->unwrapMapping());
3774 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003775 uint64_t cgen_var_271;
3776 stream->read((uint64_t*)&cgen_var_271, 8);
3777 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_271, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003778 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003779 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3780 stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003781 countingStream->clearPool();
3782 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003783 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003784 mImpl->log("finish vkCreateImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003785 return vkCreateImage_VkResult_return;
3786}
3787
3788void VkEncoder::vkDestroyImage(
3789 VkDevice device,
3790 VkImage image,
3791 const VkAllocationCallbacks* pAllocator)
3792{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003793 mImpl->log("start vkDestroyImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003794 auto stream = mImpl->stream();
3795 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003796 auto resources = mImpl->resources();
3797 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003798 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003799 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003800 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003801 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003802 local_device = device;
3803 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003804 local_pAllocator = nullptr;
3805 if (pAllocator)
3806 {
3807 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3808 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3809 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003810 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003811 if (local_pAllocator)
3812 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003813 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003814 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003815 countingStream->rewind();
3816 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003817 uint64_t cgen_var_272;
3818 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3819 countingStream->write((uint64_t*)&cgen_var_272, 1 * 8);
3820 uint64_t cgen_var_273;
3821 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3822 countingStream->write((uint64_t*)&cgen_var_273, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003823 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003824 uint64_t cgen_var_274 = (uint64_t)(uintptr_t)local_pAllocator;
3825 countingStream->putBe64(cgen_var_274);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003826 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003827 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003828 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003829 }
3830 }
3831 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3832 countingStream->rewind();
3833 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3834 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3835 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003836 uint64_t cgen_var_275;
3837 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_275, 1);
3838 stream->write((uint64_t*)&cgen_var_275, 1 * 8);
3839 uint64_t cgen_var_276;
3840 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_276, 1);
3841 stream->write((uint64_t*)&cgen_var_276, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003842 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003843 uint64_t cgen_var_277 = (uint64_t)(uintptr_t)local_pAllocator;
3844 stream->putBe64(cgen_var_277);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003845 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003846 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003847 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003848 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003849 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003850 mImpl->log("finish vkDestroyImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003851}
3852
3853void VkEncoder::vkGetImageSubresourceLayout(
3854 VkDevice device,
3855 VkImage image,
3856 const VkImageSubresource* pSubresource,
3857 VkSubresourceLayout* pLayout)
3858{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003859 mImpl->log("start vkGetImageSubresourceLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003860 auto stream = mImpl->stream();
3861 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003862 auto resources = mImpl->resources();
3863 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003864 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003865 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003866 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003867 VkImageSubresource* local_pSubresource;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003868 local_device = device;
3869 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003870 local_pSubresource = nullptr;
3871 if (pSubresource)
3872 {
3873 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
3874 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
3875 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08003876 if (local_pSubresource)
3877 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003878 transform_tohost_VkImageSubresource(mImpl->resources(), (VkImageSubresource*)(local_pSubresource));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003879 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003880 countingStream->rewind();
3881 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003882 uint64_t cgen_var_278;
3883 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_278, 1);
3884 countingStream->write((uint64_t*)&cgen_var_278, 1 * 8);
3885 uint64_t cgen_var_279;
3886 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_279, 1);
3887 countingStream->write((uint64_t*)&cgen_var_279, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003888 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003889 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
3890 }
3891 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3892 countingStream->rewind();
3893 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
3894 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
3895 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003896 uint64_t cgen_var_280;
3897 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_280, 1);
3898 stream->write((uint64_t*)&cgen_var_280, 1 * 8);
3899 uint64_t cgen_var_281;
3900 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_281, 1);
3901 stream->write((uint64_t*)&cgen_var_281, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003902 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003903 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3904 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
Lingfeng Yang97a06702018-12-24 17:02:43 -08003905 if (pLayout)
3906 {
3907 transform_fromhost_VkSubresourceLayout(mImpl->resources(), (VkSubresourceLayout*)(pLayout));
3908 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003909 mImpl->log("finish vkGetImageSubresourceLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003910}
3911
3912VkResult VkEncoder::vkCreateImageView(
3913 VkDevice device,
3914 const VkImageViewCreateInfo* pCreateInfo,
3915 const VkAllocationCallbacks* pAllocator,
3916 VkImageView* pView)
3917{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003918 mImpl->log("start vkCreateImageView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003919 auto stream = mImpl->stream();
3920 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003921 auto resources = mImpl->resources();
3922 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003923 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003924 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003925 VkImageViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003926 VkAllocationCallbacks* local_pAllocator;
3927 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003928 local_pCreateInfo = nullptr;
3929 if (pCreateInfo)
3930 {
3931 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
3932 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
3933 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003934 local_pAllocator = nullptr;
3935 if (pAllocator)
3936 {
3937 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3938 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3939 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003940 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003941 if (local_pCreateInfo)
3942 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003943 transform_tohost_VkImageViewCreateInfo(mImpl->resources(), (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003944 }
3945 if (local_pAllocator)
3946 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003947 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003948 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003949 countingStream->rewind();
3950 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003951 uint64_t cgen_var_282;
3952 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_282, 1);
3953 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003954 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003955 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003956 uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
3957 countingStream->putBe64(cgen_var_283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003958 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003959 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003960 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003961 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003962 uint64_t cgen_var_284;
3963 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_284, 1);
3964 countingStream->write((uint64_t*)&cgen_var_284, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003965 }
3966 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3967 countingStream->rewind();
3968 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
3969 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
3970 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003971 uint64_t cgen_var_285;
3972 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_285, 1);
3973 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003974 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003975 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003976 uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
3977 stream->putBe64(cgen_var_286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003978 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003979 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003980 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003981 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003982 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003983 uint64_t cgen_var_287;
3984 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_287, 1);
3985 stream->write((uint64_t*)&cgen_var_287, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003986 stream->setHandleMapping(resources->unwrapMapping());
3987 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003988 uint64_t cgen_var_288;
3989 stream->read((uint64_t*)&cgen_var_288, 8);
3990 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_288, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003991 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003992 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
3993 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003994 countingStream->clearPool();
3995 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003996 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003997 mImpl->log("finish vkCreateImageView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003998 return vkCreateImageView_VkResult_return;
3999}
4000
4001void VkEncoder::vkDestroyImageView(
4002 VkDevice device,
4003 VkImageView imageView,
4004 const VkAllocationCallbacks* pAllocator)
4005{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004006 mImpl->log("start vkDestroyImageView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004007 auto stream = mImpl->stream();
4008 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004009 auto resources = mImpl->resources();
4010 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004011 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004012 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004013 VkImageView local_imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004014 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004015 local_device = device;
4016 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004017 local_pAllocator = nullptr;
4018 if (pAllocator)
4019 {
4020 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4021 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4022 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004023 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004024 if (local_pAllocator)
4025 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004026 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004027 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004028 countingStream->rewind();
4029 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004030 uint64_t cgen_var_289;
4031 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_289, 1);
4032 countingStream->write((uint64_t*)&cgen_var_289, 1 * 8);
4033 uint64_t cgen_var_290;
4034 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_290, 1);
4035 countingStream->write((uint64_t*)&cgen_var_290, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004036 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004037 uint64_t cgen_var_291 = (uint64_t)(uintptr_t)local_pAllocator;
4038 countingStream->putBe64(cgen_var_291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004039 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004040 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004041 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004042 }
4043 }
4044 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4045 countingStream->rewind();
4046 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
4047 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
4048 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004049 uint64_t cgen_var_292;
4050 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_292, 1);
4051 stream->write((uint64_t*)&cgen_var_292, 1 * 8);
4052 uint64_t cgen_var_293;
4053 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_293, 1);
4054 stream->write((uint64_t*)&cgen_var_293, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004055 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004056 uint64_t cgen_var_294 = (uint64_t)(uintptr_t)local_pAllocator;
4057 stream->putBe64(cgen_var_294);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004058 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004059 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004060 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004061 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004062 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004063 mImpl->log("finish vkDestroyImageView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004064}
4065
4066VkResult VkEncoder::vkCreateShaderModule(
4067 VkDevice device,
4068 const VkShaderModuleCreateInfo* pCreateInfo,
4069 const VkAllocationCallbacks* pAllocator,
4070 VkShaderModule* pShaderModule)
4071{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004072 mImpl->log("start vkCreateShaderModule");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004073 auto stream = mImpl->stream();
4074 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004075 auto resources = mImpl->resources();
4076 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004077 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004078 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004079 VkShaderModuleCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004080 VkAllocationCallbacks* local_pAllocator;
4081 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004082 local_pCreateInfo = nullptr;
4083 if (pCreateInfo)
4084 {
4085 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
4086 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
4087 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004088 local_pAllocator = nullptr;
4089 if (pAllocator)
4090 {
4091 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4092 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4093 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004094 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004095 if (local_pCreateInfo)
4096 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004097 transform_tohost_VkShaderModuleCreateInfo(mImpl->resources(), (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004098 }
4099 if (local_pAllocator)
4100 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004101 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004102 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004103 countingStream->rewind();
4104 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004105 uint64_t cgen_var_295;
4106 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_295, 1);
4107 countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004108 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004109 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004110 uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
4111 countingStream->putBe64(cgen_var_296);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004112 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004113 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004114 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004115 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004116 uint64_t cgen_var_297;
4117 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_297, 1);
4118 countingStream->write((uint64_t*)&cgen_var_297, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004119 }
4120 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4121 countingStream->rewind();
4122 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
4123 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
4124 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004125 uint64_t cgen_var_298;
4126 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_298, 1);
4127 stream->write((uint64_t*)&cgen_var_298, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004128 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004129 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004130 uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
4131 stream->putBe64(cgen_var_299);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004132 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004133 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004134 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004135 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004136 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004137 uint64_t cgen_var_300;
4138 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_300, 1);
4139 stream->write((uint64_t*)&cgen_var_300, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004140 stream->setHandleMapping(resources->unwrapMapping());
4141 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004142 uint64_t cgen_var_301;
4143 stream->read((uint64_t*)&cgen_var_301, 8);
4144 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_301, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004145 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004146 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
4147 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004148 countingStream->clearPool();
4149 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004150 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004151 mImpl->log("finish vkCreateShaderModule");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004152 return vkCreateShaderModule_VkResult_return;
4153}
4154
4155void VkEncoder::vkDestroyShaderModule(
4156 VkDevice device,
4157 VkShaderModule shaderModule,
4158 const VkAllocationCallbacks* pAllocator)
4159{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004160 mImpl->log("start vkDestroyShaderModule");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004161 auto stream = mImpl->stream();
4162 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004163 auto resources = mImpl->resources();
4164 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004165 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004166 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004167 VkShaderModule local_shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004168 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004169 local_device = device;
4170 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004171 local_pAllocator = nullptr;
4172 if (pAllocator)
4173 {
4174 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4175 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4176 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004177 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004178 if (local_pAllocator)
4179 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004180 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004181 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004182 countingStream->rewind();
4183 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004184 uint64_t cgen_var_302;
4185 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_302, 1);
4186 countingStream->write((uint64_t*)&cgen_var_302, 1 * 8);
4187 uint64_t cgen_var_303;
4188 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_303, 1);
4189 countingStream->write((uint64_t*)&cgen_var_303, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004190 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004191 uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
4192 countingStream->putBe64(cgen_var_304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004193 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004194 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004195 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004196 }
4197 }
4198 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4199 countingStream->rewind();
4200 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
4201 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
4202 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004203 uint64_t cgen_var_305;
4204 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_305, 1);
4205 stream->write((uint64_t*)&cgen_var_305, 1 * 8);
4206 uint64_t cgen_var_306;
4207 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_306, 1);
4208 stream->write((uint64_t*)&cgen_var_306, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004209 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004210 uint64_t cgen_var_307 = (uint64_t)(uintptr_t)local_pAllocator;
4211 stream->putBe64(cgen_var_307);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004212 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004213 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004214 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004215 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004216 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004217 mImpl->log("finish vkDestroyShaderModule");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004218}
4219
4220VkResult VkEncoder::vkCreatePipelineCache(
4221 VkDevice device,
4222 const VkPipelineCacheCreateInfo* pCreateInfo,
4223 const VkAllocationCallbacks* pAllocator,
4224 VkPipelineCache* pPipelineCache)
4225{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004226 mImpl->log("start vkCreatePipelineCache");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004227 auto stream = mImpl->stream();
4228 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004229 auto resources = mImpl->resources();
4230 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004231 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004232 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004233 VkPipelineCacheCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004234 VkAllocationCallbacks* local_pAllocator;
4235 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004236 local_pCreateInfo = nullptr;
4237 if (pCreateInfo)
4238 {
4239 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
4240 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
4241 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004242 local_pAllocator = nullptr;
4243 if (pAllocator)
4244 {
4245 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4246 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4247 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004248 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004249 if (local_pCreateInfo)
4250 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004251 transform_tohost_VkPipelineCacheCreateInfo(mImpl->resources(), (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004252 }
4253 if (local_pAllocator)
4254 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004255 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004256 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004257 countingStream->rewind();
4258 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004259 uint64_t cgen_var_308;
4260 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_308, 1);
4261 countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004262 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004263 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004264 uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
4265 countingStream->putBe64(cgen_var_309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004266 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004267 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004268 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004269 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004270 uint64_t cgen_var_310;
4271 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_310, 1);
4272 countingStream->write((uint64_t*)&cgen_var_310, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004273 }
4274 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4275 countingStream->rewind();
4276 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
4277 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
4278 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004279 uint64_t cgen_var_311;
4280 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_311, 1);
4281 stream->write((uint64_t*)&cgen_var_311, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004282 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004283 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004284 uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
4285 stream->putBe64(cgen_var_312);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004286 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004287 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004288 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004289 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004290 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004291 uint64_t cgen_var_313;
4292 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_313, 1);
4293 stream->write((uint64_t*)&cgen_var_313, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004294 stream->setHandleMapping(resources->unwrapMapping());
4295 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004296 uint64_t cgen_var_314;
4297 stream->read((uint64_t*)&cgen_var_314, 8);
4298 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_314, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004299 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004300 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
4301 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004302 countingStream->clearPool();
4303 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004304 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004305 mImpl->log("finish vkCreatePipelineCache");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004306 return vkCreatePipelineCache_VkResult_return;
4307}
4308
4309void VkEncoder::vkDestroyPipelineCache(
4310 VkDevice device,
4311 VkPipelineCache pipelineCache,
4312 const VkAllocationCallbacks* pAllocator)
4313{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004314 mImpl->log("start vkDestroyPipelineCache");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004315 auto stream = mImpl->stream();
4316 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004317 auto resources = mImpl->resources();
4318 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004319 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004320 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004321 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004322 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004323 local_device = device;
4324 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004325 local_pAllocator = nullptr;
4326 if (pAllocator)
4327 {
4328 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4329 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4330 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004331 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004332 if (local_pAllocator)
4333 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004334 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004335 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004336 countingStream->rewind();
4337 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004338 uint64_t cgen_var_315;
4339 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_315, 1);
4340 countingStream->write((uint64_t*)&cgen_var_315, 1 * 8);
4341 uint64_t cgen_var_316;
4342 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_316, 1);
4343 countingStream->write((uint64_t*)&cgen_var_316, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004344 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004345 uint64_t cgen_var_317 = (uint64_t)(uintptr_t)local_pAllocator;
4346 countingStream->putBe64(cgen_var_317);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004347 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004348 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004349 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004350 }
4351 }
4352 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4353 countingStream->rewind();
4354 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
4355 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
4356 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004357 uint64_t cgen_var_318;
4358 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
4359 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
4360 uint64_t cgen_var_319;
4361 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
4362 stream->write((uint64_t*)&cgen_var_319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004363 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004364 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)local_pAllocator;
4365 stream->putBe64(cgen_var_320);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004366 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004367 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004368 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004369 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004370 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004371 mImpl->log("finish vkDestroyPipelineCache");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004372}
4373
4374VkResult VkEncoder::vkGetPipelineCacheData(
4375 VkDevice device,
4376 VkPipelineCache pipelineCache,
4377 size_t* pDataSize,
4378 void* pData)
4379{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004380 mImpl->log("start vkGetPipelineCacheData");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004381 auto stream = mImpl->stream();
4382 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004383 auto resources = mImpl->resources();
4384 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004385 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004386 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004387 VkPipelineCache local_pipelineCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004388 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004389 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004390 countingStream->rewind();
4391 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004392 uint64_t cgen_var_321;
4393 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_321, 1);
4394 countingStream->write((uint64_t*)&cgen_var_321, 1 * 8);
4395 uint64_t cgen_var_322;
4396 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_322, 1);
4397 countingStream->write((uint64_t*)&cgen_var_322, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004398 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004399 uint64_t cgen_var_323 = (uint64_t)(uintptr_t)pDataSize;
4400 countingStream->putBe64(cgen_var_323);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004401 if (pDataSize)
4402 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004403 uint64_t cgen_var_324 = (uint64_t)(*pDataSize);
4404 countingStream->putBe64(cgen_var_324);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004405 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004406 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004407 uint64_t cgen_var_325 = (uint64_t)(uintptr_t)pData;
4408 countingStream->putBe64(cgen_var_325);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004409 if (pData)
4410 {
4411 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4412 }
4413 }
4414 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4415 countingStream->rewind();
4416 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
4417 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
4418 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004419 uint64_t cgen_var_326;
4420 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
4421 stream->write((uint64_t*)&cgen_var_326, 1 * 8);
4422 uint64_t cgen_var_327;
4423 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_327, 1);
4424 stream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004425 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004426 uint64_t cgen_var_328 = (uint64_t)(uintptr_t)pDataSize;
4427 stream->putBe64(cgen_var_328);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004428 if (pDataSize)
4429 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004430 uint64_t cgen_var_329 = (uint64_t)(*pDataSize);
4431 stream->putBe64(cgen_var_329);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004432 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004433 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004434 uint64_t cgen_var_330 = (uint64_t)(uintptr_t)pData;
4435 stream->putBe64(cgen_var_330);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004436 if (pData)
4437 {
4438 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4439 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004440 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004441 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004442 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004443 if (pDataSize)
4444 {
4445 if (!(check_pDataSize))
4446 {
4447 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
4448 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004449 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004450 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004451 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004452 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004453 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004454 if (pData)
4455 {
4456 if (!(check_pData))
4457 {
4458 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
4459 }
4460 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4461 }
4462 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
4463 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004464 countingStream->clearPool();
4465 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004466 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004467 mImpl->log("finish vkGetPipelineCacheData");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004468 return vkGetPipelineCacheData_VkResult_return;
4469}
4470
4471VkResult VkEncoder::vkMergePipelineCaches(
4472 VkDevice device,
4473 VkPipelineCache dstCache,
4474 uint32_t srcCacheCount,
4475 const VkPipelineCache* pSrcCaches)
4476{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004477 mImpl->log("start vkMergePipelineCaches");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004478 auto stream = mImpl->stream();
4479 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004480 auto resources = mImpl->resources();
4481 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004482 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004483 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004484 VkPipelineCache local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004485 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004486 VkPipelineCache* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004487 local_device = device;
4488 local_dstCache = dstCache;
4489 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004490 local_pSrcCaches = nullptr;
4491 if (pSrcCaches)
4492 {
4493 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
4494 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004495 countingStream->rewind();
4496 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004497 uint64_t cgen_var_334;
4498 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_334, 1);
4499 countingStream->write((uint64_t*)&cgen_var_334, 1 * 8);
4500 uint64_t cgen_var_335;
4501 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_335, 1);
4502 countingStream->write((uint64_t*)&cgen_var_335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004503 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004504 if (((srcCacheCount)))
4505 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004506 uint64_t* cgen_var_336;
4507 countingStream->alloc((void**)&cgen_var_336, ((srcCacheCount)) * 8);
4508 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_336, ((srcCacheCount)));
4509 countingStream->write((uint64_t*)cgen_var_336, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004510 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004511 }
4512 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4513 countingStream->rewind();
4514 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4515 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4516 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004517 uint64_t cgen_var_337;
4518 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_337, 1);
4519 stream->write((uint64_t*)&cgen_var_337, 1 * 8);
4520 uint64_t cgen_var_338;
4521 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_338, 1);
4522 stream->write((uint64_t*)&cgen_var_338, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004523 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004524 if (((srcCacheCount)))
4525 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004526 uint64_t* cgen_var_339;
4527 stream->alloc((void**)&cgen_var_339, ((srcCacheCount)) * 8);
4528 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_339, ((srcCacheCount)));
4529 stream->write((uint64_t*)cgen_var_339, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004530 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004531 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4532 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004533 countingStream->clearPool();
4534 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004535 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004536 mImpl->log("finish vkMergePipelineCaches");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004537 return vkMergePipelineCaches_VkResult_return;
4538}
4539
4540VkResult VkEncoder::vkCreateGraphicsPipelines(
4541 VkDevice device,
4542 VkPipelineCache pipelineCache,
4543 uint32_t createInfoCount,
4544 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4545 const VkAllocationCallbacks* pAllocator,
4546 VkPipeline* pPipelines)
4547{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004548 mImpl->log("start vkCreateGraphicsPipelines");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004549 auto stream = mImpl->stream();
4550 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004551 auto resources = mImpl->resources();
4552 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004553 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004554 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004555 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004556 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004557 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004558 VkAllocationCallbacks* local_pAllocator;
4559 local_device = device;
4560 local_pipelineCache = pipelineCache;
4561 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004562 local_pCreateInfos = nullptr;
4563 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004564 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004565 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004566 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4567 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004568 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004569 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004570 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004571 local_pAllocator = nullptr;
4572 if (pAllocator)
4573 {
4574 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4575 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4576 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004577 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004578 if (local_pCreateInfos)
4579 {
4580 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4581 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004582 transform_tohost_VkGraphicsPipelineCreateInfo(mImpl->resources(), (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004583 }
4584 }
4585 if (local_pAllocator)
4586 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004587 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004588 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004589 countingStream->rewind();
4590 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004591 uint64_t cgen_var_340;
4592 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_340, 1);
4593 countingStream->write((uint64_t*)&cgen_var_340, 1 * 8);
4594 uint64_t cgen_var_341;
4595 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_341, 1);
4596 countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004597 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4598 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4599 {
4600 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4601 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004602 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004603 uint64_t cgen_var_342 = (uint64_t)(uintptr_t)local_pAllocator;
4604 countingStream->putBe64(cgen_var_342);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004605 if (local_pAllocator)
4606 {
4607 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004608 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004609 if (((createInfoCount)))
4610 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004611 uint64_t* cgen_var_343;
4612 countingStream->alloc((void**)&cgen_var_343, ((createInfoCount)) * 8);
4613 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_343, ((createInfoCount)));
4614 countingStream->write((uint64_t*)cgen_var_343, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004615 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004616 }
4617 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4618 countingStream->rewind();
4619 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4620 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4621 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004622 uint64_t cgen_var_344;
4623 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_344, 1);
4624 stream->write((uint64_t*)&cgen_var_344, 1 * 8);
4625 uint64_t cgen_var_345;
4626 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_345, 1);
4627 stream->write((uint64_t*)&cgen_var_345, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004628 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004629 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4630 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004631 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004632 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004633 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004634 uint64_t cgen_var_346 = (uint64_t)(uintptr_t)local_pAllocator;
4635 stream->putBe64(cgen_var_346);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004636 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004637 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004638 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004639 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004640 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004641 if (((createInfoCount)))
4642 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004643 uint64_t* cgen_var_347;
4644 stream->alloc((void**)&cgen_var_347, ((createInfoCount)) * 8);
4645 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_347, ((createInfoCount)));
4646 stream->write((uint64_t*)cgen_var_347, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004647 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004648 stream->setHandleMapping(resources->unwrapMapping());
4649 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004650 if (((createInfoCount)))
4651 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004652 uint64_t* cgen_var_348;
4653 stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4654 stream->read((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
4655 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_348, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004656 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004657 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004658 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4659 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004660 countingStream->clearPool();
4661 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004662 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004663 mImpl->log("finish vkCreateGraphicsPipelines");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004664 return vkCreateGraphicsPipelines_VkResult_return;
4665}
4666
4667VkResult VkEncoder::vkCreateComputePipelines(
4668 VkDevice device,
4669 VkPipelineCache pipelineCache,
4670 uint32_t createInfoCount,
4671 const VkComputePipelineCreateInfo* pCreateInfos,
4672 const VkAllocationCallbacks* pAllocator,
4673 VkPipeline* pPipelines)
4674{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004675 mImpl->log("start vkCreateComputePipelines");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004676 auto stream = mImpl->stream();
4677 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004678 auto resources = mImpl->resources();
4679 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004680 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004681 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004682 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004683 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004684 VkComputePipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004685 VkAllocationCallbacks* local_pAllocator;
4686 local_device = device;
4687 local_pipelineCache = pipelineCache;
4688 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004689 local_pCreateInfos = nullptr;
4690 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004691 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004692 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004693 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4694 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004695 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004696 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004697 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004698 local_pAllocator = nullptr;
4699 if (pAllocator)
4700 {
4701 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4702 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4703 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004704 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004705 if (local_pCreateInfos)
4706 {
4707 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4708 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004709 transform_tohost_VkComputePipelineCreateInfo(mImpl->resources(), (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004710 }
4711 }
4712 if (local_pAllocator)
4713 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004714 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004715 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004716 countingStream->rewind();
4717 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004718 uint64_t cgen_var_349;
4719 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_349, 1);
4720 countingStream->write((uint64_t*)&cgen_var_349, 1 * 8);
4721 uint64_t cgen_var_350;
4722 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_350, 1);
4723 countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004724 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4725 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4726 {
4727 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4728 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004729 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004730 uint64_t cgen_var_351 = (uint64_t)(uintptr_t)local_pAllocator;
4731 countingStream->putBe64(cgen_var_351);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004732 if (local_pAllocator)
4733 {
4734 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004735 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004736 if (((createInfoCount)))
4737 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004738 uint64_t* cgen_var_352;
4739 countingStream->alloc((void**)&cgen_var_352, ((createInfoCount)) * 8);
4740 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_352, ((createInfoCount)));
4741 countingStream->write((uint64_t*)cgen_var_352, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004742 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004743 }
4744 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4745 countingStream->rewind();
4746 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4747 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4748 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004749 uint64_t cgen_var_353;
4750 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4751 stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4752 uint64_t cgen_var_354;
4753 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_354, 1);
4754 stream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004755 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004756 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4757 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004758 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004759 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004760 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004761 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4762 stream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004763 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004764 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004765 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004766 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004767 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004768 if (((createInfoCount)))
4769 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004770 uint64_t* cgen_var_356;
4771 stream->alloc((void**)&cgen_var_356, ((createInfoCount)) * 8);
4772 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_356, ((createInfoCount)));
4773 stream->write((uint64_t*)cgen_var_356, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004774 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004775 stream->setHandleMapping(resources->unwrapMapping());
4776 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004777 if (((createInfoCount)))
4778 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004779 uint64_t* cgen_var_357;
4780 stream->alloc((void**)&cgen_var_357, ((createInfoCount)) * 8);
4781 stream->read((uint64_t*)cgen_var_357, ((createInfoCount)) * 8);
4782 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_357, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004783 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004784 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004785 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4786 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004787 countingStream->clearPool();
4788 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004789 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004790 mImpl->log("finish vkCreateComputePipelines");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004791 return vkCreateComputePipelines_VkResult_return;
4792}
4793
4794void VkEncoder::vkDestroyPipeline(
4795 VkDevice device,
4796 VkPipeline pipeline,
4797 const VkAllocationCallbacks* pAllocator)
4798{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004799 mImpl->log("start vkDestroyPipeline");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004800 auto stream = mImpl->stream();
4801 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004802 auto resources = mImpl->resources();
4803 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004804 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004805 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004806 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004807 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004808 local_device = device;
4809 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004810 local_pAllocator = nullptr;
4811 if (pAllocator)
4812 {
4813 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4814 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4815 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004816 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004817 if (local_pAllocator)
4818 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004819 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004820 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004821 countingStream->rewind();
4822 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004823 uint64_t cgen_var_358;
4824 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_358, 1);
4825 countingStream->write((uint64_t*)&cgen_var_358, 1 * 8);
4826 uint64_t cgen_var_359;
4827 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_359, 1);
4828 countingStream->write((uint64_t*)&cgen_var_359, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004829 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004830 uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
4831 countingStream->putBe64(cgen_var_360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004832 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004833 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004834 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004835 }
4836 }
4837 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4838 countingStream->rewind();
4839 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
4840 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
4841 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004842 uint64_t cgen_var_361;
4843 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_361, 1);
4844 stream->write((uint64_t*)&cgen_var_361, 1 * 8);
4845 uint64_t cgen_var_362;
4846 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_362, 1);
4847 stream->write((uint64_t*)&cgen_var_362, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004848 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004849 uint64_t cgen_var_363 = (uint64_t)(uintptr_t)local_pAllocator;
4850 stream->putBe64(cgen_var_363);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004851 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004852 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004853 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004854 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004855 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004856 mImpl->log("finish vkDestroyPipeline");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004857}
4858
4859VkResult VkEncoder::vkCreatePipelineLayout(
4860 VkDevice device,
4861 const VkPipelineLayoutCreateInfo* pCreateInfo,
4862 const VkAllocationCallbacks* pAllocator,
4863 VkPipelineLayout* pPipelineLayout)
4864{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004865 mImpl->log("start vkCreatePipelineLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004866 auto stream = mImpl->stream();
4867 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004868 auto resources = mImpl->resources();
4869 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004870 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004871 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004872 VkPipelineLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004873 VkAllocationCallbacks* local_pAllocator;
4874 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004875 local_pCreateInfo = nullptr;
4876 if (pCreateInfo)
4877 {
4878 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
4879 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4880 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004881 local_pAllocator = nullptr;
4882 if (pAllocator)
4883 {
4884 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4885 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4886 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004887 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004888 if (local_pCreateInfo)
4889 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004890 transform_tohost_VkPipelineLayoutCreateInfo(mImpl->resources(), (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004891 }
4892 if (local_pAllocator)
4893 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004894 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004895 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004896 countingStream->rewind();
4897 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004898 uint64_t cgen_var_364;
4899 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_364, 1);
4900 countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004901 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004902 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004903 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
4904 countingStream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004905 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004906 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004907 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004908 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004909 uint64_t cgen_var_366;
4910 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_366, 1);
4911 countingStream->write((uint64_t*)&cgen_var_366, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004912 }
4913 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4914 countingStream->rewind();
4915 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
4916 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
4917 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004918 uint64_t cgen_var_367;
4919 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_367, 1);
4920 stream->write((uint64_t*)&cgen_var_367, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004921 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004922 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004923 uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
4924 stream->putBe64(cgen_var_368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004925 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004926 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004927 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004928 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004929 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004930 uint64_t cgen_var_369;
4931 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_369, 1);
4932 stream->write((uint64_t*)&cgen_var_369, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004933 stream->setHandleMapping(resources->unwrapMapping());
4934 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004935 uint64_t cgen_var_370;
4936 stream->read((uint64_t*)&cgen_var_370, 8);
4937 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_370, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004938 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004939 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
4940 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004941 countingStream->clearPool();
4942 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004943 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004944 mImpl->log("finish vkCreatePipelineLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004945 return vkCreatePipelineLayout_VkResult_return;
4946}
4947
4948void VkEncoder::vkDestroyPipelineLayout(
4949 VkDevice device,
4950 VkPipelineLayout pipelineLayout,
4951 const VkAllocationCallbacks* pAllocator)
4952{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004953 mImpl->log("start vkDestroyPipelineLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004954 auto stream = mImpl->stream();
4955 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004956 auto resources = mImpl->resources();
4957 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004958 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004959 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004960 VkPipelineLayout local_pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004961 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004962 local_device = device;
4963 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004964 local_pAllocator = nullptr;
4965 if (pAllocator)
4966 {
4967 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4968 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4969 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004970 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004971 if (local_pAllocator)
4972 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004973 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004974 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004975 countingStream->rewind();
4976 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004977 uint64_t cgen_var_371;
4978 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_371, 1);
4979 countingStream->write((uint64_t*)&cgen_var_371, 1 * 8);
4980 uint64_t cgen_var_372;
4981 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_372, 1);
4982 countingStream->write((uint64_t*)&cgen_var_372, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004983 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004984 uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
4985 countingStream->putBe64(cgen_var_373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004986 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004987 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004988 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004989 }
4990 }
4991 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4992 countingStream->rewind();
4993 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
4994 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
4995 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004996 uint64_t cgen_var_374;
4997 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_374, 1);
4998 stream->write((uint64_t*)&cgen_var_374, 1 * 8);
4999 uint64_t cgen_var_375;
5000 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_375, 1);
5001 stream->write((uint64_t*)&cgen_var_375, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005002 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005003 uint64_t cgen_var_376 = (uint64_t)(uintptr_t)local_pAllocator;
5004 stream->putBe64(cgen_var_376);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005005 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005006 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005007 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005008 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005009 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005010 mImpl->log("finish vkDestroyPipelineLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005011}
5012
5013VkResult VkEncoder::vkCreateSampler(
5014 VkDevice device,
5015 const VkSamplerCreateInfo* pCreateInfo,
5016 const VkAllocationCallbacks* pAllocator,
5017 VkSampler* pSampler)
5018{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005019 mImpl->log("start vkCreateSampler");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005020 auto stream = mImpl->stream();
5021 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005022 auto resources = mImpl->resources();
5023 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005024 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005025 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005026 VkSamplerCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005027 VkAllocationCallbacks* local_pAllocator;
5028 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005029 local_pCreateInfo = nullptr;
5030 if (pCreateInfo)
5031 {
5032 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
5033 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
5034 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005035 local_pAllocator = nullptr;
5036 if (pAllocator)
5037 {
5038 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5039 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5040 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005041 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005042 if (local_pCreateInfo)
5043 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005044 transform_tohost_VkSamplerCreateInfo(mImpl->resources(), (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005045 }
5046 if (local_pAllocator)
5047 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005048 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005049 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005050 countingStream->rewind();
5051 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005052 uint64_t cgen_var_377;
5053 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_377, 1);
5054 countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005055 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005056 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005057 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
5058 countingStream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005059 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005060 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005061 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005062 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005063 uint64_t cgen_var_379;
5064 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_379, 1);
5065 countingStream->write((uint64_t*)&cgen_var_379, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005066 }
5067 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5068 countingStream->rewind();
5069 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
5070 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
5071 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005072 uint64_t cgen_var_380;
5073 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_380, 1);
5074 stream->write((uint64_t*)&cgen_var_380, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005075 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005076 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005077 uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
5078 stream->putBe64(cgen_var_381);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005079 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005080 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005081 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005082 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005083 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005084 uint64_t cgen_var_382;
5085 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_382, 1);
5086 stream->write((uint64_t*)&cgen_var_382, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005087 stream->setHandleMapping(resources->unwrapMapping());
5088 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005089 uint64_t cgen_var_383;
5090 stream->read((uint64_t*)&cgen_var_383, 8);
5091 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_383, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005092 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005093 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
5094 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005095 countingStream->clearPool();
5096 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005097 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005098 mImpl->log("finish vkCreateSampler");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005099 return vkCreateSampler_VkResult_return;
5100}
5101
5102void VkEncoder::vkDestroySampler(
5103 VkDevice device,
5104 VkSampler sampler,
5105 const VkAllocationCallbacks* pAllocator)
5106{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005107 mImpl->log("start vkDestroySampler");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005108 auto stream = mImpl->stream();
5109 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005110 auto resources = mImpl->resources();
5111 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005112 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005113 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005114 VkSampler local_sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005115 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005116 local_device = device;
5117 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005118 local_pAllocator = nullptr;
5119 if (pAllocator)
5120 {
5121 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5122 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5123 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005124 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005125 if (local_pAllocator)
5126 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005127 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005128 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005129 countingStream->rewind();
5130 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005131 uint64_t cgen_var_384;
5132 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_384, 1);
5133 countingStream->write((uint64_t*)&cgen_var_384, 1 * 8);
5134 uint64_t cgen_var_385;
5135 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_385, 1);
5136 countingStream->write((uint64_t*)&cgen_var_385, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005137 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005138 uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
5139 countingStream->putBe64(cgen_var_386);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005140 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005141 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005142 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005143 }
5144 }
5145 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5146 countingStream->rewind();
5147 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
5148 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
5149 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005150 uint64_t cgen_var_387;
5151 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_387, 1);
5152 stream->write((uint64_t*)&cgen_var_387, 1 * 8);
5153 uint64_t cgen_var_388;
5154 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_388, 1);
5155 stream->write((uint64_t*)&cgen_var_388, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005156 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005157 uint64_t cgen_var_389 = (uint64_t)(uintptr_t)local_pAllocator;
5158 stream->putBe64(cgen_var_389);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005159 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005160 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005161 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005162 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005163 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005164 mImpl->log("finish vkDestroySampler");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005165}
5166
5167VkResult VkEncoder::vkCreateDescriptorSetLayout(
5168 VkDevice device,
5169 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
5170 const VkAllocationCallbacks* pAllocator,
5171 VkDescriptorSetLayout* pSetLayout)
5172{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005173 mImpl->log("start vkCreateDescriptorSetLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005174 auto stream = mImpl->stream();
5175 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005176 auto resources = mImpl->resources();
5177 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005178 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005179 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005180 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005181 VkAllocationCallbacks* local_pAllocator;
5182 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005183 local_pCreateInfo = nullptr;
5184 if (pCreateInfo)
5185 {
5186 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
5187 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
5188 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005189 local_pAllocator = nullptr;
5190 if (pAllocator)
5191 {
5192 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5193 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5194 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005195 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005196 if (local_pCreateInfo)
5197 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005198 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005199 }
5200 if (local_pAllocator)
5201 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005202 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005203 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005204 countingStream->rewind();
5205 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005206 uint64_t cgen_var_390;
5207 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_390, 1);
5208 countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005209 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005210 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005211 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
5212 countingStream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005213 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005214 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005215 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005216 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005217 uint64_t cgen_var_392;
5218 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_392, 1);
5219 countingStream->write((uint64_t*)&cgen_var_392, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005220 }
5221 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5222 countingStream->rewind();
5223 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
5224 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
5225 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005226 uint64_t cgen_var_393;
5227 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_393, 1);
5228 stream->write((uint64_t*)&cgen_var_393, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005229 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005230 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005231 uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
5232 stream->putBe64(cgen_var_394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005233 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005234 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005235 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005236 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005237 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005238 uint64_t cgen_var_395;
5239 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_395, 1);
5240 stream->write((uint64_t*)&cgen_var_395, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005241 stream->setHandleMapping(resources->unwrapMapping());
5242 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005243 uint64_t cgen_var_396;
5244 stream->read((uint64_t*)&cgen_var_396, 8);
5245 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_396, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005246 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005247 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
5248 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005249 countingStream->clearPool();
5250 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005251 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005252 mImpl->log("finish vkCreateDescriptorSetLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005253 return vkCreateDescriptorSetLayout_VkResult_return;
5254}
5255
5256void VkEncoder::vkDestroyDescriptorSetLayout(
5257 VkDevice device,
5258 VkDescriptorSetLayout descriptorSetLayout,
5259 const VkAllocationCallbacks* pAllocator)
5260{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005261 mImpl->log("start vkDestroyDescriptorSetLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005262 auto stream = mImpl->stream();
5263 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005264 auto resources = mImpl->resources();
5265 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005266 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005267 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005268 VkDescriptorSetLayout local_descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005269 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005270 local_device = device;
5271 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005272 local_pAllocator = nullptr;
5273 if (pAllocator)
5274 {
5275 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5276 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5277 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005278 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005279 if (local_pAllocator)
5280 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005281 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005282 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005283 countingStream->rewind();
5284 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005285 uint64_t cgen_var_397;
5286 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_397, 1);
5287 countingStream->write((uint64_t*)&cgen_var_397, 1 * 8);
5288 uint64_t cgen_var_398;
5289 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_398, 1);
5290 countingStream->write((uint64_t*)&cgen_var_398, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005291 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005292 uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
5293 countingStream->putBe64(cgen_var_399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005294 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005295 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005296 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005297 }
5298 }
5299 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5300 countingStream->rewind();
5301 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
5302 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
5303 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005304 uint64_t cgen_var_400;
5305 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_400, 1);
5306 stream->write((uint64_t*)&cgen_var_400, 1 * 8);
5307 uint64_t cgen_var_401;
5308 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_401, 1);
5309 stream->write((uint64_t*)&cgen_var_401, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005310 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005311 uint64_t cgen_var_402 = (uint64_t)(uintptr_t)local_pAllocator;
5312 stream->putBe64(cgen_var_402);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005313 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005314 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005315 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005316 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005317 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005318 mImpl->log("finish vkDestroyDescriptorSetLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005319}
5320
5321VkResult VkEncoder::vkCreateDescriptorPool(
5322 VkDevice device,
5323 const VkDescriptorPoolCreateInfo* pCreateInfo,
5324 const VkAllocationCallbacks* pAllocator,
5325 VkDescriptorPool* pDescriptorPool)
5326{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005327 mImpl->log("start vkCreateDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005328 auto stream = mImpl->stream();
5329 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005330 auto resources = mImpl->resources();
5331 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005332 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005333 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005334 VkDescriptorPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005335 VkAllocationCallbacks* local_pAllocator;
5336 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005337 local_pCreateInfo = nullptr;
5338 if (pCreateInfo)
5339 {
5340 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
5341 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5342 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005343 local_pAllocator = nullptr;
5344 if (pAllocator)
5345 {
5346 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5347 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5348 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005349 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005350 if (local_pCreateInfo)
5351 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005352 transform_tohost_VkDescriptorPoolCreateInfo(mImpl->resources(), (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005353 }
5354 if (local_pAllocator)
5355 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005356 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005357 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005358 countingStream->rewind();
5359 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005360 uint64_t cgen_var_403;
5361 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_403, 1);
5362 countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005363 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005364 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005365 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
5366 countingStream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005367 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005368 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005369 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005370 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005371 uint64_t cgen_var_405;
5372 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_405, 1);
5373 countingStream->write((uint64_t*)&cgen_var_405, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005374 }
5375 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5376 countingStream->rewind();
5377 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
5378 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
5379 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005380 uint64_t cgen_var_406;
5381 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_406, 1);
5382 stream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005383 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005384 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005385 uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
5386 stream->putBe64(cgen_var_407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005387 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005388 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005389 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005390 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005391 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005392 uint64_t cgen_var_408;
5393 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_408, 1);
5394 stream->write((uint64_t*)&cgen_var_408, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005395 stream->setHandleMapping(resources->unwrapMapping());
5396 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005397 uint64_t cgen_var_409;
5398 stream->read((uint64_t*)&cgen_var_409, 8);
5399 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_409, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005400 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005401 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
5402 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005403 countingStream->clearPool();
5404 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005405 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005406 mImpl->log("finish vkCreateDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005407 return vkCreateDescriptorPool_VkResult_return;
5408}
5409
5410void VkEncoder::vkDestroyDescriptorPool(
5411 VkDevice device,
5412 VkDescriptorPool descriptorPool,
5413 const VkAllocationCallbacks* pAllocator)
5414{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005415 mImpl->log("start vkDestroyDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005416 auto stream = mImpl->stream();
5417 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005418 auto resources = mImpl->resources();
5419 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005420 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005421 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005422 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005423 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005424 local_device = device;
5425 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005426 local_pAllocator = nullptr;
5427 if (pAllocator)
5428 {
5429 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5430 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5431 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005432 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005433 if (local_pAllocator)
5434 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005435 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005436 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005437 countingStream->rewind();
5438 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005439 uint64_t cgen_var_410;
5440 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
5441 countingStream->write((uint64_t*)&cgen_var_410, 1 * 8);
5442 uint64_t cgen_var_411;
5443 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
5444 countingStream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005445 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005446 uint64_t cgen_var_412 = (uint64_t)(uintptr_t)local_pAllocator;
5447 countingStream->putBe64(cgen_var_412);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005448 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005449 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005450 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005451 }
5452 }
5453 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5454 countingStream->rewind();
5455 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
5456 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
5457 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005458 uint64_t cgen_var_413;
5459 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_413, 1);
5460 stream->write((uint64_t*)&cgen_var_413, 1 * 8);
5461 uint64_t cgen_var_414;
5462 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_414, 1);
5463 stream->write((uint64_t*)&cgen_var_414, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005464 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005465 uint64_t cgen_var_415 = (uint64_t)(uintptr_t)local_pAllocator;
5466 stream->putBe64(cgen_var_415);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005467 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005468 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005469 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005470 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005471 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005472 mImpl->log("finish vkDestroyDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005473}
5474
5475VkResult VkEncoder::vkResetDescriptorPool(
5476 VkDevice device,
5477 VkDescriptorPool descriptorPool,
5478 VkDescriptorPoolResetFlags flags)
5479{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005480 mImpl->log("start vkResetDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005481 auto stream = mImpl->stream();
5482 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005483 auto resources = mImpl->resources();
5484 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005485 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005486 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005487 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005488 VkDescriptorPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005489 local_device = device;
5490 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005491 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005492 countingStream->rewind();
5493 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005494 uint64_t cgen_var_416;
5495 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_416, 1);
5496 countingStream->write((uint64_t*)&cgen_var_416, 1 * 8);
5497 uint64_t cgen_var_417;
5498 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_417, 1);
5499 countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005500 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005501 }
5502 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5503 countingStream->rewind();
5504 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
5505 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
5506 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005507 uint64_t cgen_var_418;
5508 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_418, 1);
5509 stream->write((uint64_t*)&cgen_var_418, 1 * 8);
5510 uint64_t cgen_var_419;
5511 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_419, 1);
5512 stream->write((uint64_t*)&cgen_var_419, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005513 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005514 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
5515 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005516 countingStream->clearPool();
5517 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005518 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005519 mImpl->log("finish vkResetDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005520 return vkResetDescriptorPool_VkResult_return;
5521}
5522
5523VkResult VkEncoder::vkAllocateDescriptorSets(
5524 VkDevice device,
5525 const VkDescriptorSetAllocateInfo* pAllocateInfo,
5526 VkDescriptorSet* pDescriptorSets)
5527{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005528 mImpl->log("start vkAllocateDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005529 auto stream = mImpl->stream();
5530 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005531 auto resources = mImpl->resources();
5532 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005533 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005534 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005535 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005536 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005537 local_pAllocateInfo = nullptr;
5538 if (pAllocateInfo)
5539 {
5540 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
5541 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5542 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005543 if (local_pAllocateInfo)
5544 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005545 transform_tohost_VkDescriptorSetAllocateInfo(mImpl->resources(), (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005546 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005547 countingStream->rewind();
5548 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005549 uint64_t cgen_var_420;
5550 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_420, 1);
5551 countingStream->write((uint64_t*)&cgen_var_420, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005552 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005553 if (pAllocateInfo->descriptorSetCount)
5554 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005555 uint64_t* cgen_var_421;
5556 countingStream->alloc((void**)&cgen_var_421, pAllocateInfo->descriptorSetCount * 8);
5557 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_421, pAllocateInfo->descriptorSetCount);
5558 countingStream->write((uint64_t*)cgen_var_421, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005559 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005560 }
5561 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5562 countingStream->rewind();
5563 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
5564 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
5565 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005566 uint64_t cgen_var_422;
5567 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_422, 1);
5568 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005569 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005570 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005571 if (pAllocateInfo->descriptorSetCount)
5572 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005573 uint64_t* cgen_var_423;
5574 stream->alloc((void**)&cgen_var_423, pAllocateInfo->descriptorSetCount * 8);
5575 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_423, pAllocateInfo->descriptorSetCount);
5576 stream->write((uint64_t*)cgen_var_423, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005577 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005578 stream->setHandleMapping(resources->unwrapMapping());
5579 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005580 if (pAllocateInfo->descriptorSetCount)
5581 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005582 uint64_t* cgen_var_424;
5583 stream->alloc((void**)&cgen_var_424, pAllocateInfo->descriptorSetCount * 8);
5584 stream->read((uint64_t*)cgen_var_424, pAllocateInfo->descriptorSetCount * 8);
5585 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_424, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005586 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005587 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005588 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
5589 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005590 countingStream->clearPool();
5591 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005592 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005593 mImpl->log("finish vkAllocateDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005594 return vkAllocateDescriptorSets_VkResult_return;
5595}
5596
5597VkResult VkEncoder::vkFreeDescriptorSets(
5598 VkDevice device,
5599 VkDescriptorPool descriptorPool,
5600 uint32_t descriptorSetCount,
5601 const VkDescriptorSet* pDescriptorSets)
5602{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005603 mImpl->log("start vkFreeDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005604 auto stream = mImpl->stream();
5605 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005606 auto resources = mImpl->resources();
5607 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005608 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005609 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005610 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005611 uint32_t local_descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005612 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005613 local_device = device;
5614 local_descriptorPool = descriptorPool;
5615 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005616 local_pDescriptorSets = nullptr;
5617 if (pDescriptorSets)
5618 {
5619 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5620 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005621 countingStream->rewind();
5622 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005623 uint64_t cgen_var_425;
5624 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5625 countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
5626 uint64_t cgen_var_426;
5627 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_426, 1);
5628 countingStream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005629 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005630 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005631 uint64_t cgen_var_427 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5632 countingStream->putBe64(cgen_var_427);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005633 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005634 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005635 if (((descriptorSetCount)))
5636 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005637 uint64_t* cgen_var_428;
5638 countingStream->alloc((void**)&cgen_var_428, ((descriptorSetCount)) * 8);
5639 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_428, ((descriptorSetCount)));
5640 countingStream->write((uint64_t*)cgen_var_428, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005641 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005642 }
5643 }
5644 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5645 countingStream->rewind();
5646 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5647 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5648 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005649 uint64_t cgen_var_429;
5650 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_429, 1);
5651 stream->write((uint64_t*)&cgen_var_429, 1 * 8);
5652 uint64_t cgen_var_430;
5653 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_430, 1);
5654 stream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005655 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005656 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005657 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5658 stream->putBe64(cgen_var_431);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005659 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005660 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005661 if (((descriptorSetCount)))
5662 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005663 uint64_t* cgen_var_432;
5664 stream->alloc((void**)&cgen_var_432, ((descriptorSetCount)) * 8);
5665 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_432, ((descriptorSetCount)));
5666 stream->write((uint64_t*)cgen_var_432, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005667 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005668 }
5669 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5670 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005671 countingStream->clearPool();
5672 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005673 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08005674 if (pDescriptorSets)
5675 {
5676 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5677 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005678 mImpl->log("finish vkFreeDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005679 return vkFreeDescriptorSets_VkResult_return;
5680}
5681
5682void VkEncoder::vkUpdateDescriptorSets(
5683 VkDevice device,
5684 uint32_t descriptorWriteCount,
5685 const VkWriteDescriptorSet* pDescriptorWrites,
5686 uint32_t descriptorCopyCount,
5687 const VkCopyDescriptorSet* pDescriptorCopies)
5688{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005689 mImpl->log("start vkUpdateDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005690 auto stream = mImpl->stream();
5691 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005692 auto resources = mImpl->resources();
5693 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005694 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005695 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005696 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005697 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005698 uint32_t local_descriptorCopyCount;
5699 VkCopyDescriptorSet* local_pDescriptorCopies;
5700 local_device = device;
5701 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005702 local_pDescriptorWrites = nullptr;
5703 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005704 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005705 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005706 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5707 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005708 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005709 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005710 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005711 local_descriptorCopyCount = descriptorCopyCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005712 local_pDescriptorCopies = nullptr;
5713 if (pDescriptorCopies)
5714 {
5715 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005716 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5717 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005718 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5719 }
5720 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005721 if (local_pDescriptorWrites)
5722 {
5723 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5724 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005725 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005726 }
5727 }
5728 if (local_pDescriptorCopies)
5729 {
5730 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5731 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005732 transform_tohost_VkCopyDescriptorSet(mImpl->resources(), (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005733 }
5734 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005735 countingStream->rewind();
5736 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005737 uint64_t cgen_var_433;
5738 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_433, 1);
5739 countingStream->write((uint64_t*)&cgen_var_433, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005740 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5741 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5742 {
5743 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5744 }
5745 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5746 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5747 {
5748 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005749 }
5750 }
5751 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5752 countingStream->rewind();
5753 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5754 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5755 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005756 uint64_t cgen_var_434;
5757 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5758 stream->write((uint64_t*)&cgen_var_434, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005759 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005760 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5761 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005762 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005763 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005764 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005765 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5766 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005767 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005768 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005769 mImpl->log("finish vkUpdateDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005770}
5771
5772VkResult VkEncoder::vkCreateFramebuffer(
5773 VkDevice device,
5774 const VkFramebufferCreateInfo* pCreateInfo,
5775 const VkAllocationCallbacks* pAllocator,
5776 VkFramebuffer* pFramebuffer)
5777{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005778 mImpl->log("start vkCreateFramebuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005779 auto stream = mImpl->stream();
5780 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005781 auto resources = mImpl->resources();
5782 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005783 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005784 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005785 VkFramebufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005786 VkAllocationCallbacks* local_pAllocator;
5787 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005788 local_pCreateInfo = nullptr;
5789 if (pCreateInfo)
5790 {
5791 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
5792 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
5793 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005794 local_pAllocator = nullptr;
5795 if (pAllocator)
5796 {
5797 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5798 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5799 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005800 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005801 if (local_pCreateInfo)
5802 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005803 transform_tohost_VkFramebufferCreateInfo(mImpl->resources(), (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005804 }
5805 if (local_pAllocator)
5806 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005807 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005808 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005809 countingStream->rewind();
5810 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005811 uint64_t cgen_var_435;
5812 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_435, 1);
5813 countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005814 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005815 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005816 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
5817 countingStream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005818 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005819 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005820 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005821 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005822 uint64_t cgen_var_437;
5823 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_437, 1);
5824 countingStream->write((uint64_t*)&cgen_var_437, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005825 }
5826 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5827 countingStream->rewind();
5828 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
5829 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
5830 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005831 uint64_t cgen_var_438;
5832 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_438, 1);
5833 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005834 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005835 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005836 uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
5837 stream->putBe64(cgen_var_439);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005838 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005839 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005840 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005841 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005842 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005843 uint64_t cgen_var_440;
5844 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_440, 1);
5845 stream->write((uint64_t*)&cgen_var_440, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005846 stream->setHandleMapping(resources->unwrapMapping());
5847 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005848 uint64_t cgen_var_441;
5849 stream->read((uint64_t*)&cgen_var_441, 8);
5850 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_441, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005851 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005852 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
5853 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005854 countingStream->clearPool();
5855 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005856 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005857 mImpl->log("finish vkCreateFramebuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005858 return vkCreateFramebuffer_VkResult_return;
5859}
5860
5861void VkEncoder::vkDestroyFramebuffer(
5862 VkDevice device,
5863 VkFramebuffer framebuffer,
5864 const VkAllocationCallbacks* pAllocator)
5865{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005866 mImpl->log("start vkDestroyFramebuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005867 auto stream = mImpl->stream();
5868 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005869 auto resources = mImpl->resources();
5870 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005871 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005872 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005873 VkFramebuffer local_framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005874 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005875 local_device = device;
5876 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005877 local_pAllocator = nullptr;
5878 if (pAllocator)
5879 {
5880 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5881 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5882 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005883 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005884 if (local_pAllocator)
5885 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005886 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005887 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005888 countingStream->rewind();
5889 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005890 uint64_t cgen_var_442;
5891 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_442, 1);
5892 countingStream->write((uint64_t*)&cgen_var_442, 1 * 8);
5893 uint64_t cgen_var_443;
5894 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_443, 1);
5895 countingStream->write((uint64_t*)&cgen_var_443, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005896 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005897 uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
5898 countingStream->putBe64(cgen_var_444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005899 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005900 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005901 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005902 }
5903 }
5904 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5905 countingStream->rewind();
5906 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
5907 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
5908 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005909 uint64_t cgen_var_445;
5910 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_445, 1);
5911 stream->write((uint64_t*)&cgen_var_445, 1 * 8);
5912 uint64_t cgen_var_446;
5913 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_446, 1);
5914 stream->write((uint64_t*)&cgen_var_446, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005915 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005916 uint64_t cgen_var_447 = (uint64_t)(uintptr_t)local_pAllocator;
5917 stream->putBe64(cgen_var_447);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005918 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005919 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005920 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005921 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005922 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005923 mImpl->log("finish vkDestroyFramebuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005924}
5925
5926VkResult VkEncoder::vkCreateRenderPass(
5927 VkDevice device,
5928 const VkRenderPassCreateInfo* pCreateInfo,
5929 const VkAllocationCallbacks* pAllocator,
5930 VkRenderPass* pRenderPass)
5931{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005932 mImpl->log("start vkCreateRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005933 auto stream = mImpl->stream();
5934 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005935 auto resources = mImpl->resources();
5936 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005937 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005938 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005939 VkRenderPassCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005940 VkAllocationCallbacks* local_pAllocator;
5941 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005942 local_pCreateInfo = nullptr;
5943 if (pCreateInfo)
5944 {
5945 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
5946 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
5947 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005948 local_pAllocator = nullptr;
5949 if (pAllocator)
5950 {
5951 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5952 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5953 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005954 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005955 if (local_pCreateInfo)
5956 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005957 transform_tohost_VkRenderPassCreateInfo(mImpl->resources(), (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005958 }
5959 if (local_pAllocator)
5960 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005961 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005962 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005963 countingStream->rewind();
5964 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005965 uint64_t cgen_var_448;
5966 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_448, 1);
5967 countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005968 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005969 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005970 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
5971 countingStream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005972 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005973 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005974 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005975 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005976 uint64_t cgen_var_450;
5977 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_450, 1);
5978 countingStream->write((uint64_t*)&cgen_var_450, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005979 }
5980 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5981 countingStream->rewind();
5982 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
5983 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
5984 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005985 uint64_t cgen_var_451;
5986 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_451, 1);
5987 stream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005988 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005989 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005990 uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
5991 stream->putBe64(cgen_var_452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005992 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005993 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005994 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005995 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005996 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005997 uint64_t cgen_var_453;
5998 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_453, 1);
5999 stream->write((uint64_t*)&cgen_var_453, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006000 stream->setHandleMapping(resources->unwrapMapping());
6001 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006002 uint64_t cgen_var_454;
6003 stream->read((uint64_t*)&cgen_var_454, 8);
6004 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_454, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006005 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006006 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
6007 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006008 countingStream->clearPool();
6009 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006010 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006011 mImpl->log("finish vkCreateRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006012 return vkCreateRenderPass_VkResult_return;
6013}
6014
6015void VkEncoder::vkDestroyRenderPass(
6016 VkDevice device,
6017 VkRenderPass renderPass,
6018 const VkAllocationCallbacks* pAllocator)
6019{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006020 mImpl->log("start vkDestroyRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006021 auto stream = mImpl->stream();
6022 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006023 auto resources = mImpl->resources();
6024 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006025 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006026 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006027 VkRenderPass local_renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006028 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006029 local_device = device;
6030 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006031 local_pAllocator = nullptr;
6032 if (pAllocator)
6033 {
6034 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6035 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6036 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006037 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006038 if (local_pAllocator)
6039 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006040 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006041 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006042 countingStream->rewind();
6043 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006044 uint64_t cgen_var_455;
6045 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
6046 countingStream->write((uint64_t*)&cgen_var_455, 1 * 8);
6047 uint64_t cgen_var_456;
6048 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
6049 countingStream->write((uint64_t*)&cgen_var_456, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006050 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006051 uint64_t cgen_var_457 = (uint64_t)(uintptr_t)local_pAllocator;
6052 countingStream->putBe64(cgen_var_457);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006053 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006054 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006055 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006056 }
6057 }
6058 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6059 countingStream->rewind();
6060 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
6061 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
6062 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006063 uint64_t cgen_var_458;
6064 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_458, 1);
6065 stream->write((uint64_t*)&cgen_var_458, 1 * 8);
6066 uint64_t cgen_var_459;
6067 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_459, 1);
6068 stream->write((uint64_t*)&cgen_var_459, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006069 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006070 uint64_t cgen_var_460 = (uint64_t)(uintptr_t)local_pAllocator;
6071 stream->putBe64(cgen_var_460);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006072 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006073 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006074 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006075 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006076 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006077 mImpl->log("finish vkDestroyRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006078}
6079
6080void VkEncoder::vkGetRenderAreaGranularity(
6081 VkDevice device,
6082 VkRenderPass renderPass,
6083 VkExtent2D* pGranularity)
6084{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006085 mImpl->log("start vkGetRenderAreaGranularity");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006086 auto stream = mImpl->stream();
6087 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006088 auto resources = mImpl->resources();
6089 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006090 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006091 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006092 VkRenderPass local_renderPass;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006093 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006094 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006095 countingStream->rewind();
6096 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006097 uint64_t cgen_var_461;
6098 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_461, 1);
6099 countingStream->write((uint64_t*)&cgen_var_461, 1 * 8);
6100 uint64_t cgen_var_462;
6101 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_462, 1);
6102 countingStream->write((uint64_t*)&cgen_var_462, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006103 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
6104 }
6105 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6106 countingStream->rewind();
6107 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
6108 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
6109 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006110 uint64_t cgen_var_463;
6111 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_463, 1);
6112 stream->write((uint64_t*)&cgen_var_463, 1 * 8);
6113 uint64_t cgen_var_464;
6114 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_464, 1);
6115 stream->write((uint64_t*)&cgen_var_464, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006116 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
6117 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
Lingfeng Yang97a06702018-12-24 17:02:43 -08006118 if (pGranularity)
6119 {
6120 transform_fromhost_VkExtent2D(mImpl->resources(), (VkExtent2D*)(pGranularity));
6121 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006122 mImpl->log("finish vkGetRenderAreaGranularity");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006123}
6124
6125VkResult VkEncoder::vkCreateCommandPool(
6126 VkDevice device,
6127 const VkCommandPoolCreateInfo* pCreateInfo,
6128 const VkAllocationCallbacks* pAllocator,
6129 VkCommandPool* pCommandPool)
6130{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006131 mImpl->log("start vkCreateCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006132 auto stream = mImpl->stream();
6133 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006134 auto resources = mImpl->resources();
6135 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006136 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006137 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006138 VkCommandPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006139 VkAllocationCallbacks* local_pAllocator;
6140 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006141 local_pCreateInfo = nullptr;
6142 if (pCreateInfo)
6143 {
6144 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
6145 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
6146 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006147 local_pAllocator = nullptr;
6148 if (pAllocator)
6149 {
6150 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6151 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6152 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006153 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006154 if (local_pCreateInfo)
6155 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006156 transform_tohost_VkCommandPoolCreateInfo(mImpl->resources(), (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006157 }
6158 if (local_pAllocator)
6159 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006160 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006161 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006162 countingStream->rewind();
6163 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006164 uint64_t cgen_var_465;
6165 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_465, 1);
6166 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006167 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006168 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006169 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
6170 countingStream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006171 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006172 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006173 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006174 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006175 uint64_t cgen_var_467;
6176 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_467, 1);
6177 countingStream->write((uint64_t*)&cgen_var_467, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006178 }
6179 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6180 countingStream->rewind();
6181 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
6182 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
6183 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006184 uint64_t cgen_var_468;
6185 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_468, 1);
6186 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006187 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006188 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006189 uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
6190 stream->putBe64(cgen_var_469);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006191 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006192 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006193 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006194 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006195 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006196 uint64_t cgen_var_470;
6197 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_470, 1);
6198 stream->write((uint64_t*)&cgen_var_470, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006199 stream->setHandleMapping(resources->unwrapMapping());
6200 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006201 uint64_t cgen_var_471;
6202 stream->read((uint64_t*)&cgen_var_471, 8);
6203 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_471, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006204 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006205 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
6206 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006207 countingStream->clearPool();
6208 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006209 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006210 mImpl->log("finish vkCreateCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006211 return vkCreateCommandPool_VkResult_return;
6212}
6213
6214void VkEncoder::vkDestroyCommandPool(
6215 VkDevice device,
6216 VkCommandPool commandPool,
6217 const VkAllocationCallbacks* pAllocator)
6218{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006219 mImpl->log("start vkDestroyCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006220 auto stream = mImpl->stream();
6221 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006222 auto resources = mImpl->resources();
6223 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006224 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006225 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006226 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006227 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006228 local_device = device;
6229 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006230 local_pAllocator = nullptr;
6231 if (pAllocator)
6232 {
6233 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6234 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6235 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006236 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006237 if (local_pAllocator)
6238 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006239 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006240 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006241 countingStream->rewind();
6242 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006243 uint64_t cgen_var_472;
6244 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
6245 countingStream->write((uint64_t*)&cgen_var_472, 1 * 8);
6246 uint64_t cgen_var_473;
6247 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
6248 countingStream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006249 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006250 uint64_t cgen_var_474 = (uint64_t)(uintptr_t)local_pAllocator;
6251 countingStream->putBe64(cgen_var_474);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006252 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006253 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006254 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006255 }
6256 }
6257 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6258 countingStream->rewind();
6259 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
6260 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
6261 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006262 uint64_t cgen_var_475;
6263 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_475, 1);
6264 stream->write((uint64_t*)&cgen_var_475, 1 * 8);
6265 uint64_t cgen_var_476;
6266 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_476, 1);
6267 stream->write((uint64_t*)&cgen_var_476, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006268 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006269 uint64_t cgen_var_477 = (uint64_t)(uintptr_t)local_pAllocator;
6270 stream->putBe64(cgen_var_477);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006271 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006272 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006273 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006274 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006275 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006276 mImpl->log("finish vkDestroyCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006277}
6278
6279VkResult VkEncoder::vkResetCommandPool(
6280 VkDevice device,
6281 VkCommandPool commandPool,
6282 VkCommandPoolResetFlags flags)
6283{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006284 mImpl->log("start vkResetCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006285 auto stream = mImpl->stream();
6286 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006287 auto resources = mImpl->resources();
6288 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006289 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006290 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006291 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006292 VkCommandPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006293 local_device = device;
6294 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006295 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006296 countingStream->rewind();
6297 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006298 uint64_t cgen_var_478;
6299 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_478, 1);
6300 countingStream->write((uint64_t*)&cgen_var_478, 1 * 8);
6301 uint64_t cgen_var_479;
6302 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_479, 1);
6303 countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006304 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006305 }
6306 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6307 countingStream->rewind();
6308 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
6309 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
6310 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006311 uint64_t cgen_var_480;
6312 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_480, 1);
6313 stream->write((uint64_t*)&cgen_var_480, 1 * 8);
6314 uint64_t cgen_var_481;
6315 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_481, 1);
6316 stream->write((uint64_t*)&cgen_var_481, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006317 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006318 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
6319 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006320 countingStream->clearPool();
6321 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006322 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006323 mImpl->log("finish vkResetCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006324 return vkResetCommandPool_VkResult_return;
6325}
6326
6327VkResult VkEncoder::vkAllocateCommandBuffers(
6328 VkDevice device,
6329 const VkCommandBufferAllocateInfo* pAllocateInfo,
6330 VkCommandBuffer* pCommandBuffers)
6331{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006332 mImpl->log("start vkAllocateCommandBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006333 auto stream = mImpl->stream();
6334 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006335 auto resources = mImpl->resources();
6336 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006337 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006338 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006339 VkCommandBufferAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006340 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006341 local_pAllocateInfo = nullptr;
6342 if (pAllocateInfo)
6343 {
6344 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
6345 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
6346 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006347 if (local_pAllocateInfo)
6348 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006349 transform_tohost_VkCommandBufferAllocateInfo(mImpl->resources(), (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006350 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006351 countingStream->rewind();
6352 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006353 uint64_t cgen_var_482;
6354 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_482, 1);
6355 countingStream->write((uint64_t*)&cgen_var_482, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006356 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006357 if (pAllocateInfo->commandBufferCount)
6358 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006359 uint64_t* cgen_var_483;
6360 countingStream->alloc((void**)&cgen_var_483, pAllocateInfo->commandBufferCount * 8);
6361 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_483, pAllocateInfo->commandBufferCount);
6362 countingStream->write((uint64_t*)cgen_var_483, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006363 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006364 }
6365 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6366 countingStream->rewind();
6367 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
6368 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
6369 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006370 uint64_t cgen_var_484;
6371 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_484, 1);
6372 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006373 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08006374 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08006375 if (pAllocateInfo->commandBufferCount)
6376 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006377 uint64_t* cgen_var_485;
6378 stream->alloc((void**)&cgen_var_485, pAllocateInfo->commandBufferCount * 8);
6379 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_485, pAllocateInfo->commandBufferCount);
6380 stream->write((uint64_t*)cgen_var_485, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006381 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006382 stream->setHandleMapping(resources->unwrapMapping());
6383 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08006384 if (pAllocateInfo->commandBufferCount)
6385 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006386 uint64_t* cgen_var_486;
6387 stream->alloc((void**)&cgen_var_486, pAllocateInfo->commandBufferCount * 8);
6388 stream->read((uint64_t*)cgen_var_486, pAllocateInfo->commandBufferCount * 8);
6389 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_486, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006390 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006391 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006392 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
6393 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006394 countingStream->clearPool();
6395 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006396 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006397 mImpl->log("finish vkAllocateCommandBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006398 return vkAllocateCommandBuffers_VkResult_return;
6399}
6400
6401void VkEncoder::vkFreeCommandBuffers(
6402 VkDevice device,
6403 VkCommandPool commandPool,
6404 uint32_t commandBufferCount,
6405 const VkCommandBuffer* pCommandBuffers)
6406{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006407 mImpl->log("start vkFreeCommandBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006408 auto stream = mImpl->stream();
6409 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006410 auto resources = mImpl->resources();
6411 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006412 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006413 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006414 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006415 uint32_t local_commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006416 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006417 local_device = device;
6418 local_commandPool = commandPool;
6419 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006420 local_pCommandBuffers = nullptr;
6421 if (pCommandBuffers)
6422 {
6423 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
6424 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006425 countingStream->rewind();
6426 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006427 uint64_t cgen_var_487;
6428 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_487, 1);
6429 countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
6430 uint64_t cgen_var_488;
6431 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_488, 1);
6432 countingStream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006433 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006434 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006435 uint64_t cgen_var_489 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6436 countingStream->putBe64(cgen_var_489);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006437 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006438 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006439 if (((commandBufferCount)))
6440 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006441 uint64_t* cgen_var_490;
6442 countingStream->alloc((void**)&cgen_var_490, ((commandBufferCount)) * 8);
6443 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_490, ((commandBufferCount)));
6444 countingStream->write((uint64_t*)cgen_var_490, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006445 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006446 }
6447 }
6448 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6449 countingStream->rewind();
6450 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
6451 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
6452 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006453 uint64_t cgen_var_491;
6454 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_491, 1);
6455 stream->write((uint64_t*)&cgen_var_491, 1 * 8);
6456 uint64_t cgen_var_492;
6457 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_492, 1);
6458 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006459 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006460 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006461 uint64_t cgen_var_493 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6462 stream->putBe64(cgen_var_493);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006463 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006464 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006465 if (((commandBufferCount)))
6466 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006467 uint64_t* cgen_var_494;
6468 stream->alloc((void**)&cgen_var_494, ((commandBufferCount)) * 8);
6469 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_494, ((commandBufferCount)));
6470 stream->write((uint64_t*)cgen_var_494, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006471 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006472 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006473 if (pCommandBuffers)
6474 {
6475 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
6476 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006477 mImpl->log("finish vkFreeCommandBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006478}
6479
6480VkResult VkEncoder::vkBeginCommandBuffer(
6481 VkCommandBuffer commandBuffer,
6482 const VkCommandBufferBeginInfo* pBeginInfo)
6483{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006484 mImpl->log("start vkBeginCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006485 auto stream = mImpl->stream();
6486 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006487 auto resources = mImpl->resources();
6488 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006489 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006490 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006491 VkCommandBufferBeginInfo* local_pBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006492 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006493 local_pBeginInfo = nullptr;
6494 if (pBeginInfo)
6495 {
6496 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
6497 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6498 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006499 if (local_pBeginInfo)
6500 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006501 transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006502 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006503 countingStream->rewind();
6504 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006505 uint64_t cgen_var_495;
6506 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
6507 countingStream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006508 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006509 }
6510 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6511 countingStream->rewind();
6512 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
6513 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
6514 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006515 uint64_t cgen_var_496;
6516 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_496, 1);
6517 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006518 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006519 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
6520 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006521 countingStream->clearPool();
6522 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006523 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006524 mImpl->log("finish vkBeginCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006525 return vkBeginCommandBuffer_VkResult_return;
6526}
6527
6528VkResult VkEncoder::vkEndCommandBuffer(
6529 VkCommandBuffer commandBuffer)
6530{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006531 mImpl->log("start vkEndCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006532 auto stream = mImpl->stream();
6533 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006534 auto resources = mImpl->resources();
6535 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006536 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006537 VkCommandBuffer local_commandBuffer;
6538 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006539 countingStream->rewind();
6540 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006541 uint64_t cgen_var_497;
6542 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
6543 countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006544 }
6545 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6546 countingStream->rewind();
6547 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
6548 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
6549 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006550 uint64_t cgen_var_498;
6551 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
6552 stream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006553 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
6554 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006555 countingStream->clearPool();
6556 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006557 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006558 mImpl->log("finish vkEndCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006559 return vkEndCommandBuffer_VkResult_return;
6560}
6561
6562VkResult VkEncoder::vkResetCommandBuffer(
6563 VkCommandBuffer commandBuffer,
6564 VkCommandBufferResetFlags flags)
6565{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006566 mImpl->log("start vkResetCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006567 auto stream = mImpl->stream();
6568 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006569 auto resources = mImpl->resources();
6570 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006571 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006572 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006573 VkCommandBufferResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006574 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006575 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006576 countingStream->rewind();
6577 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006578 uint64_t cgen_var_499;
6579 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6580 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006581 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006582 }
6583 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6584 countingStream->rewind();
6585 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
6586 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
6587 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006588 uint64_t cgen_var_500;
6589 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6590 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006591 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006592 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
6593 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006594 countingStream->clearPool();
6595 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006596 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006597 mImpl->log("finish vkResetCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006598 return vkResetCommandBuffer_VkResult_return;
6599}
6600
6601void VkEncoder::vkCmdBindPipeline(
6602 VkCommandBuffer commandBuffer,
6603 VkPipelineBindPoint pipelineBindPoint,
6604 VkPipeline pipeline)
6605{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006606 mImpl->log("start vkCmdBindPipeline");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006607 auto stream = mImpl->stream();
6608 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006609 auto resources = mImpl->resources();
6610 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006611 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006612 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006613 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006614 VkPipeline local_pipeline;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006615 local_commandBuffer = commandBuffer;
6616 local_pipelineBindPoint = pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006617 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006618 countingStream->rewind();
6619 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006620 uint64_t cgen_var_501;
6621 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6622 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006623 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006624 uint64_t cgen_var_502;
6625 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_502, 1);
6626 countingStream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006627 }
6628 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6629 countingStream->rewind();
6630 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
6631 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
6632 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006633 uint64_t cgen_var_503;
6634 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6635 stream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006636 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006637 uint64_t cgen_var_504;
6638 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_504, 1);
6639 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006640 mImpl->log("finish vkCmdBindPipeline");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006641}
6642
6643void VkEncoder::vkCmdSetViewport(
6644 VkCommandBuffer commandBuffer,
6645 uint32_t firstViewport,
6646 uint32_t viewportCount,
6647 const VkViewport* pViewports)
6648{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006649 mImpl->log("start vkCmdSetViewport");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006650 auto stream = mImpl->stream();
6651 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006652 auto resources = mImpl->resources();
6653 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006654 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006655 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006656 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006657 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006658 VkViewport* local_pViewports;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006659 local_commandBuffer = commandBuffer;
6660 local_firstViewport = firstViewport;
6661 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006662 local_pViewports = nullptr;
6663 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006664 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006665 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006666 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6667 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006668 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
6669 }
6670 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006671 if (local_pViewports)
6672 {
6673 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6674 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006675 transform_tohost_VkViewport(mImpl->resources(), (VkViewport*)(local_pViewports + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006676 }
6677 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006678 countingStream->rewind();
6679 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006680 uint64_t cgen_var_505;
6681 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6682 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006683 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6684 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
6685 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6686 {
6687 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006688 }
6689 }
6690 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6691 countingStream->rewind();
6692 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
6693 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
6694 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006695 uint64_t cgen_var_506;
6696 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6697 stream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006698 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6699 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006700 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6701 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006702 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006703 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006704 mImpl->log("finish vkCmdSetViewport");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006705}
6706
6707void VkEncoder::vkCmdSetScissor(
6708 VkCommandBuffer commandBuffer,
6709 uint32_t firstScissor,
6710 uint32_t scissorCount,
6711 const VkRect2D* pScissors)
6712{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006713 mImpl->log("start vkCmdSetScissor");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006714 auto stream = mImpl->stream();
6715 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006716 auto resources = mImpl->resources();
6717 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006718 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006719 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006720 uint32_t local_firstScissor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006721 uint32_t local_scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006722 VkRect2D* local_pScissors;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006723 local_commandBuffer = commandBuffer;
6724 local_firstScissor = firstScissor;
6725 local_scissorCount = scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006726 local_pScissors = nullptr;
6727 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006728 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006729 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006730 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6731 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006732 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
6733 }
6734 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006735 if (local_pScissors)
6736 {
6737 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6738 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006739 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pScissors + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006740 }
6741 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006742 countingStream->rewind();
6743 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006744 uint64_t cgen_var_507;
6745 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6746 countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006747 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6748 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
6749 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6750 {
6751 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006752 }
6753 }
6754 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6755 countingStream->rewind();
6756 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
6757 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
6758 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006759 uint64_t cgen_var_508;
6760 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
6761 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006762 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6763 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006764 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6765 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006766 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006767 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006768 mImpl->log("finish vkCmdSetScissor");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006769}
6770
6771void VkEncoder::vkCmdSetLineWidth(
6772 VkCommandBuffer commandBuffer,
6773 float lineWidth)
6774{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006775 mImpl->log("start vkCmdSetLineWidth");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006776 auto stream = mImpl->stream();
6777 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006778 auto resources = mImpl->resources();
6779 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006780 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006781 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006782 float local_lineWidth;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006783 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006784 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006785 countingStream->rewind();
6786 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006787 uint64_t cgen_var_509;
6788 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6789 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006790 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006791 }
6792 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6793 countingStream->rewind();
6794 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
6795 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
6796 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006797 uint64_t cgen_var_510;
6798 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
6799 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006800 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006801 mImpl->log("finish vkCmdSetLineWidth");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006802}
6803
6804void VkEncoder::vkCmdSetDepthBias(
6805 VkCommandBuffer commandBuffer,
6806 float depthBiasConstantFactor,
6807 float depthBiasClamp,
6808 float depthBiasSlopeFactor)
6809{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006810 mImpl->log("start vkCmdSetDepthBias");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006811 auto stream = mImpl->stream();
6812 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006813 auto resources = mImpl->resources();
6814 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006815 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006816 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006817 float local_depthBiasConstantFactor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006818 float local_depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006819 float local_depthBiasSlopeFactor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006820 local_commandBuffer = commandBuffer;
6821 local_depthBiasConstantFactor = depthBiasConstantFactor;
6822 local_depthBiasClamp = depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006823 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006824 countingStream->rewind();
6825 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006826 uint64_t cgen_var_511;
6827 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
6828 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006829 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6830 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
6831 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006832 }
6833 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6834 countingStream->rewind();
6835 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
6836 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
6837 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006838 uint64_t cgen_var_512;
6839 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
6840 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006841 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6842 stream->write((float*)&local_depthBiasClamp, sizeof(float));
6843 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006844 mImpl->log("finish vkCmdSetDepthBias");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006845}
6846
6847void VkEncoder::vkCmdSetBlendConstants(
6848 VkCommandBuffer commandBuffer,
6849 const float blendConstants)
6850{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006851 mImpl->log("start vkCmdSetBlendConstants");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006852 auto stream = mImpl->stream();
6853 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006854 auto resources = mImpl->resources();
6855 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006856 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006857 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006858 float local_blendConstants[4];
Lingfeng Yang9666b852018-11-13 23:09:59 -08006859 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006860 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006861 countingStream->rewind();
6862 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006863 uint64_t cgen_var_513;
6864 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
6865 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006866 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006867 }
6868 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6869 countingStream->rewind();
6870 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
6871 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
6872 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006873 uint64_t cgen_var_514;
6874 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
6875 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006876 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006877 mImpl->log("finish vkCmdSetBlendConstants");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006878}
6879
6880void VkEncoder::vkCmdSetDepthBounds(
6881 VkCommandBuffer commandBuffer,
6882 float minDepthBounds,
6883 float maxDepthBounds)
6884{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006885 mImpl->log("start vkCmdSetDepthBounds");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006886 auto stream = mImpl->stream();
6887 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006888 auto resources = mImpl->resources();
6889 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006890 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006891 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006892 float local_minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006893 float local_maxDepthBounds;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006894 local_commandBuffer = commandBuffer;
6895 local_minDepthBounds = minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006896 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006897 countingStream->rewind();
6898 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006899 uint64_t cgen_var_515;
6900 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
6901 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006902 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
6903 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006904 }
6905 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6906 countingStream->rewind();
6907 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
6908 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
6909 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006910 uint64_t cgen_var_516;
6911 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_516, 1);
6912 stream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006913 stream->write((float*)&local_minDepthBounds, sizeof(float));
6914 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006915 mImpl->log("finish vkCmdSetDepthBounds");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006916}
6917
6918void VkEncoder::vkCmdSetStencilCompareMask(
6919 VkCommandBuffer commandBuffer,
6920 VkStencilFaceFlags faceMask,
6921 uint32_t compareMask)
6922{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006923 mImpl->log("start vkCmdSetStencilCompareMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006924 auto stream = mImpl->stream();
6925 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006926 auto resources = mImpl->resources();
6927 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006928 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006929 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006930 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006931 uint32_t local_compareMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006932 local_commandBuffer = commandBuffer;
6933 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006934 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006935 countingStream->rewind();
6936 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006937 uint64_t cgen_var_517;
6938 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_517, 1);
6939 countingStream->write((uint64_t*)&cgen_var_517, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006940 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6941 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006942 }
6943 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6944 countingStream->rewind();
6945 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
6946 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
6947 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006948 uint64_t cgen_var_518;
6949 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
6950 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006951 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6952 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006953 mImpl->log("finish vkCmdSetStencilCompareMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006954}
6955
6956void VkEncoder::vkCmdSetStencilWriteMask(
6957 VkCommandBuffer commandBuffer,
6958 VkStencilFaceFlags faceMask,
6959 uint32_t writeMask)
6960{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006961 mImpl->log("start vkCmdSetStencilWriteMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006962 auto stream = mImpl->stream();
6963 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006964 auto resources = mImpl->resources();
6965 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006966 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006967 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006968 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006969 uint32_t local_writeMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006970 local_commandBuffer = commandBuffer;
6971 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006972 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006973 countingStream->rewind();
6974 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006975 uint64_t cgen_var_519;
6976 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_519, 1);
6977 countingStream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006978 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6979 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006980 }
6981 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6982 countingStream->rewind();
6983 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
6984 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
6985 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006986 uint64_t cgen_var_520;
6987 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_520, 1);
6988 stream->write((uint64_t*)&cgen_var_520, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006989 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6990 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006991 mImpl->log("finish vkCmdSetStencilWriteMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006992}
6993
6994void VkEncoder::vkCmdSetStencilReference(
6995 VkCommandBuffer commandBuffer,
6996 VkStencilFaceFlags faceMask,
6997 uint32_t reference)
6998{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006999 mImpl->log("start vkCmdSetStencilReference");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007000 auto stream = mImpl->stream();
7001 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007002 auto resources = mImpl->resources();
7003 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007004 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007005 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007006 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007007 uint32_t local_reference;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007008 local_commandBuffer = commandBuffer;
7009 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007010 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007011 countingStream->rewind();
7012 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007013 uint64_t cgen_var_521;
7014 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
7015 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007016 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7017 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007018 }
7019 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7020 countingStream->rewind();
7021 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
7022 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
7023 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007024 uint64_t cgen_var_522;
7025 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_522, 1);
7026 stream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007027 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7028 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007029 mImpl->log("finish vkCmdSetStencilReference");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007030}
7031
7032void VkEncoder::vkCmdBindDescriptorSets(
7033 VkCommandBuffer commandBuffer,
7034 VkPipelineBindPoint pipelineBindPoint,
7035 VkPipelineLayout layout,
7036 uint32_t firstSet,
7037 uint32_t descriptorSetCount,
7038 const VkDescriptorSet* pDescriptorSets,
7039 uint32_t dynamicOffsetCount,
7040 const uint32_t* pDynamicOffsets)
7041{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007042 mImpl->log("start vkCmdBindDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007043 auto stream = mImpl->stream();
7044 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007045 auto resources = mImpl->resources();
7046 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007047 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007048 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007049 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007050 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007051 uint32_t local_firstSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007052 uint32_t local_descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007053 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007054 uint32_t local_dynamicOffsetCount;
7055 uint32_t* local_pDynamicOffsets;
7056 local_commandBuffer = commandBuffer;
7057 local_pipelineBindPoint = pipelineBindPoint;
7058 local_layout = layout;
7059 local_firstSet = firstSet;
7060 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007061 local_pDescriptorSets = nullptr;
7062 if (pDescriptorSets)
7063 {
7064 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
7065 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007066 local_dynamicOffsetCount = dynamicOffsetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007067 local_pDynamicOffsets = nullptr;
7068 if (pDynamicOffsets)
7069 {
7070 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
7071 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007072 countingStream->rewind();
7073 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007074 uint64_t cgen_var_523;
7075 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
7076 countingStream->write((uint64_t*)&cgen_var_523, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007077 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007078 uint64_t cgen_var_524;
7079 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_524, 1);
7080 countingStream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007081 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
7082 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007083 if (((descriptorSetCount)))
7084 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007085 uint64_t* cgen_var_525;
7086 countingStream->alloc((void**)&cgen_var_525, ((descriptorSetCount)) * 8);
7087 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_525, ((descriptorSetCount)));
7088 countingStream->write((uint64_t*)cgen_var_525, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007089 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007090 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
7091 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007092 }
7093 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7094 countingStream->rewind();
7095 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
7096 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
7097 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007098 uint64_t cgen_var_526;
7099 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_526, 1);
7100 stream->write((uint64_t*)&cgen_var_526, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007101 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007102 uint64_t cgen_var_527;
7103 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_527, 1);
7104 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007105 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
7106 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007107 if (((descriptorSetCount)))
7108 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007109 uint64_t* cgen_var_528;
7110 stream->alloc((void**)&cgen_var_528, ((descriptorSetCount)) * 8);
7111 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_528, ((descriptorSetCount)));
7112 stream->write((uint64_t*)cgen_var_528, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007113 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007114 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
7115 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007116 mImpl->log("finish vkCmdBindDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007117}
7118
7119void VkEncoder::vkCmdBindIndexBuffer(
7120 VkCommandBuffer commandBuffer,
7121 VkBuffer buffer,
7122 VkDeviceSize offset,
7123 VkIndexType indexType)
7124{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007125 mImpl->log("start vkCmdBindIndexBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007126 auto stream = mImpl->stream();
7127 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007128 auto resources = mImpl->resources();
7129 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007130 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007131 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007132 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007133 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007134 VkIndexType local_indexType;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007135 local_commandBuffer = commandBuffer;
7136 local_buffer = buffer;
7137 local_offset = offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007138 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007139 countingStream->rewind();
7140 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007141 uint64_t cgen_var_529;
7142 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
7143 countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
7144 uint64_t cgen_var_530;
7145 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_530, 1);
7146 countingStream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007147 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7148 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007149 }
7150 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7151 countingStream->rewind();
7152 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
7153 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
7154 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007155 uint64_t cgen_var_531;
7156 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
7157 stream->write((uint64_t*)&cgen_var_531, 1 * 8);
7158 uint64_t cgen_var_532;
7159 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_532, 1);
7160 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007161 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7162 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007163 mImpl->log("finish vkCmdBindIndexBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007164}
7165
7166void VkEncoder::vkCmdBindVertexBuffers(
7167 VkCommandBuffer commandBuffer,
7168 uint32_t firstBinding,
7169 uint32_t bindingCount,
7170 const VkBuffer* pBuffers,
7171 const VkDeviceSize* pOffsets)
7172{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007173 mImpl->log("start vkCmdBindVertexBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007174 auto stream = mImpl->stream();
7175 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007176 auto resources = mImpl->resources();
7177 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007178 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007179 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007180 uint32_t local_firstBinding;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007181 uint32_t local_bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007182 VkBuffer* local_pBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007183 VkDeviceSize* local_pOffsets;
7184 local_commandBuffer = commandBuffer;
7185 local_firstBinding = firstBinding;
7186 local_bindingCount = bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007187 local_pBuffers = nullptr;
7188 if (pBuffers)
7189 {
7190 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
7191 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007192 local_pOffsets = nullptr;
7193 if (pOffsets)
7194 {
7195 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
7196 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007197 countingStream->rewind();
7198 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007199 uint64_t cgen_var_533;
7200 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
7201 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007202 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7203 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007204 if (((bindingCount)))
7205 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007206 uint64_t* cgen_var_534;
7207 countingStream->alloc((void**)&cgen_var_534, ((bindingCount)) * 8);
7208 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_534, ((bindingCount)));
7209 countingStream->write((uint64_t*)cgen_var_534, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007210 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007211 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007212 }
7213 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7214 countingStream->rewind();
7215 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
7216 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
7217 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007218 uint64_t cgen_var_535;
7219 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
7220 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007221 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7222 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007223 if (((bindingCount)))
7224 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007225 uint64_t* cgen_var_536;
7226 stream->alloc((void**)&cgen_var_536, ((bindingCount)) * 8);
7227 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_536, ((bindingCount)));
7228 stream->write((uint64_t*)cgen_var_536, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007229 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007230 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007231 mImpl->log("finish vkCmdBindVertexBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007232}
7233
7234void VkEncoder::vkCmdDraw(
7235 VkCommandBuffer commandBuffer,
7236 uint32_t vertexCount,
7237 uint32_t instanceCount,
7238 uint32_t firstVertex,
7239 uint32_t firstInstance)
7240{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007241 mImpl->log("start vkCmdDraw");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007242 auto stream = mImpl->stream();
7243 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007244 auto resources = mImpl->resources();
7245 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007246 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007247 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007248 uint32_t local_vertexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007249 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007250 uint32_t local_firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007251 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007252 local_commandBuffer = commandBuffer;
7253 local_vertexCount = vertexCount;
7254 local_instanceCount = instanceCount;
7255 local_firstVertex = firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007256 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007257 countingStream->rewind();
7258 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007259 uint64_t cgen_var_537;
7260 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
7261 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007262 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7263 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7264 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7265 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007266 }
7267 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7268 countingStream->rewind();
7269 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
7270 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
7271 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007272 uint64_t cgen_var_538;
7273 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_538, 1);
7274 stream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007275 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7276 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7277 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7278 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007279 mImpl->log("finish vkCmdDraw");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007280}
7281
7282void VkEncoder::vkCmdDrawIndexed(
7283 VkCommandBuffer commandBuffer,
7284 uint32_t indexCount,
7285 uint32_t instanceCount,
7286 uint32_t firstIndex,
7287 int32_t vertexOffset,
7288 uint32_t firstInstance)
7289{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007290 mImpl->log("start vkCmdDrawIndexed");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007291 auto stream = mImpl->stream();
7292 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007293 auto resources = mImpl->resources();
7294 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007295 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007296 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007297 uint32_t local_indexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007298 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007299 uint32_t local_firstIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007300 int32_t local_vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007301 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007302 local_commandBuffer = commandBuffer;
7303 local_indexCount = indexCount;
7304 local_instanceCount = instanceCount;
7305 local_firstIndex = firstIndex;
7306 local_vertexOffset = vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007307 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007308 countingStream->rewind();
7309 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007310 uint64_t cgen_var_539;
7311 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
7312 countingStream->write((uint64_t*)&cgen_var_539, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007313 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7314 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7315 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7316 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7317 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007318 }
7319 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7320 countingStream->rewind();
7321 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
7322 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
7323 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007324 uint64_t cgen_var_540;
7325 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_540, 1);
7326 stream->write((uint64_t*)&cgen_var_540, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007327 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7328 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7329 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7330 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7331 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007332 mImpl->log("finish vkCmdDrawIndexed");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007333}
7334
7335void VkEncoder::vkCmdDrawIndirect(
7336 VkCommandBuffer commandBuffer,
7337 VkBuffer buffer,
7338 VkDeviceSize offset,
7339 uint32_t drawCount,
7340 uint32_t stride)
7341{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007342 mImpl->log("start vkCmdDrawIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007343 auto stream = mImpl->stream();
7344 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007345 auto resources = mImpl->resources();
7346 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007347 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007348 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007349 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007350 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007351 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007352 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007353 local_commandBuffer = commandBuffer;
7354 local_buffer = buffer;
7355 local_offset = offset;
7356 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007357 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007358 countingStream->rewind();
7359 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007360 uint64_t cgen_var_541;
7361 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
7362 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
7363 uint64_t cgen_var_542;
7364 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_542, 1);
7365 countingStream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007366 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7367 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7368 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007369 }
7370 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7371 countingStream->rewind();
7372 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
7373 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
7374 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007375 uint64_t cgen_var_543;
7376 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
7377 stream->write((uint64_t*)&cgen_var_543, 1 * 8);
7378 uint64_t cgen_var_544;
7379 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
7380 stream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007381 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7382 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7383 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007384 mImpl->log("finish vkCmdDrawIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007385}
7386
7387void VkEncoder::vkCmdDrawIndexedIndirect(
7388 VkCommandBuffer commandBuffer,
7389 VkBuffer buffer,
7390 VkDeviceSize offset,
7391 uint32_t drawCount,
7392 uint32_t stride)
7393{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007394 mImpl->log("start vkCmdDrawIndexedIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007395 auto stream = mImpl->stream();
7396 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007397 auto resources = mImpl->resources();
7398 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007399 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007400 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007401 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007402 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007403 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007404 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007405 local_commandBuffer = commandBuffer;
7406 local_buffer = buffer;
7407 local_offset = offset;
7408 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007409 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007410 countingStream->rewind();
7411 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007412 uint64_t cgen_var_545;
7413 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
7414 countingStream->write((uint64_t*)&cgen_var_545, 1 * 8);
7415 uint64_t cgen_var_546;
7416 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
7417 countingStream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007418 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7419 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7420 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007421 }
7422 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7423 countingStream->rewind();
7424 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
7425 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
7426 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007427 uint64_t cgen_var_547;
7428 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
7429 stream->write((uint64_t*)&cgen_var_547, 1 * 8);
7430 uint64_t cgen_var_548;
7431 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_548, 1);
7432 stream->write((uint64_t*)&cgen_var_548, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007433 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7434 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7435 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007436 mImpl->log("finish vkCmdDrawIndexedIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007437}
7438
7439void VkEncoder::vkCmdDispatch(
7440 VkCommandBuffer commandBuffer,
7441 uint32_t groupCountX,
7442 uint32_t groupCountY,
7443 uint32_t groupCountZ)
7444{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007445 mImpl->log("start vkCmdDispatch");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007446 auto stream = mImpl->stream();
7447 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007448 auto resources = mImpl->resources();
7449 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007450 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007451 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007452 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007453 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007454 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007455 local_commandBuffer = commandBuffer;
7456 local_groupCountX = groupCountX;
7457 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007458 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007459 countingStream->rewind();
7460 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007461 uint64_t cgen_var_549;
7462 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_549, 1);
7463 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007464 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7465 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7466 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007467 }
7468 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7469 countingStream->rewind();
7470 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
7471 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
7472 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007473 uint64_t cgen_var_550;
7474 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
7475 stream->write((uint64_t*)&cgen_var_550, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007476 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7477 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7478 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007479 mImpl->log("finish vkCmdDispatch");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007480}
7481
7482void VkEncoder::vkCmdDispatchIndirect(
7483 VkCommandBuffer commandBuffer,
7484 VkBuffer buffer,
7485 VkDeviceSize offset)
7486{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007487 mImpl->log("start vkCmdDispatchIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007488 auto stream = mImpl->stream();
7489 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007490 auto resources = mImpl->resources();
7491 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007492 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007493 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007494 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007495 VkDeviceSize local_offset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007496 local_commandBuffer = commandBuffer;
7497 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007498 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007499 countingStream->rewind();
7500 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007501 uint64_t cgen_var_551;
7502 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_551, 1);
7503 countingStream->write((uint64_t*)&cgen_var_551, 1 * 8);
7504 uint64_t cgen_var_552;
7505 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_552, 1);
7506 countingStream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007507 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007508 }
7509 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7510 countingStream->rewind();
7511 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
7512 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
7513 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007514 uint64_t cgen_var_553;
7515 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
7516 stream->write((uint64_t*)&cgen_var_553, 1 * 8);
7517 uint64_t cgen_var_554;
7518 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_554, 1);
7519 stream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007520 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007521 mImpl->log("finish vkCmdDispatchIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007522}
7523
7524void VkEncoder::vkCmdCopyBuffer(
7525 VkCommandBuffer commandBuffer,
7526 VkBuffer srcBuffer,
7527 VkBuffer dstBuffer,
7528 uint32_t regionCount,
7529 const VkBufferCopy* pRegions)
7530{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007531 mImpl->log("start vkCmdCopyBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007532 auto stream = mImpl->stream();
7533 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007534 auto resources = mImpl->resources();
7535 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007536 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007537 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007538 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007539 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007540 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007541 VkBufferCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007542 local_commandBuffer = commandBuffer;
7543 local_srcBuffer = srcBuffer;
7544 local_dstBuffer = dstBuffer;
7545 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007546 local_pRegions = nullptr;
7547 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007548 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007549 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007550 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7551 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007552 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
7553 }
7554 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007555 if (local_pRegions)
7556 {
7557 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7558 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007559 transform_tohost_VkBufferCopy(mImpl->resources(), (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007560 }
7561 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007562 countingStream->rewind();
7563 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007564 uint64_t cgen_var_555;
7565 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_555, 1);
7566 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
7567 uint64_t cgen_var_556;
7568 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_556, 1);
7569 countingStream->write((uint64_t*)&cgen_var_556, 1 * 8);
7570 uint64_t cgen_var_557;
7571 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_557, 1);
7572 countingStream->write((uint64_t*)&cgen_var_557, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007573 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7574 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7575 {
7576 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007577 }
7578 }
7579 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7580 countingStream->rewind();
7581 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
7582 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
7583 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007584 uint64_t cgen_var_558;
7585 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_558, 1);
7586 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
7587 uint64_t cgen_var_559;
7588 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_559, 1);
7589 stream->write((uint64_t*)&cgen_var_559, 1 * 8);
7590 uint64_t cgen_var_560;
7591 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_560, 1);
7592 stream->write((uint64_t*)&cgen_var_560, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007593 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007594 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7595 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007596 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007597 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007598 mImpl->log("finish vkCmdCopyBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007599}
7600
7601void VkEncoder::vkCmdCopyImage(
7602 VkCommandBuffer commandBuffer,
7603 VkImage srcImage,
7604 VkImageLayout srcImageLayout,
7605 VkImage dstImage,
7606 VkImageLayout dstImageLayout,
7607 uint32_t regionCount,
7608 const VkImageCopy* pRegions)
7609{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007610 mImpl->log("start vkCmdCopyImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007611 auto stream = mImpl->stream();
7612 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007613 auto resources = mImpl->resources();
7614 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007615 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007616 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007617 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007618 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007619 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007620 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007621 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007622 VkImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007623 local_commandBuffer = commandBuffer;
7624 local_srcImage = srcImage;
7625 local_srcImageLayout = srcImageLayout;
7626 local_dstImage = dstImage;
7627 local_dstImageLayout = dstImageLayout;
7628 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007629 local_pRegions = nullptr;
7630 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007631 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007632 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007633 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7634 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007635 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
7636 }
7637 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007638 if (local_pRegions)
7639 {
7640 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7641 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007642 transform_tohost_VkImageCopy(mImpl->resources(), (VkImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007643 }
7644 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007645 countingStream->rewind();
7646 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007647 uint64_t cgen_var_561;
7648 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_561, 1);
7649 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
7650 uint64_t cgen_var_562;
7651 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_562, 1);
7652 countingStream->write((uint64_t*)&cgen_var_562, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007653 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007654 uint64_t cgen_var_563;
7655 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_563, 1);
7656 countingStream->write((uint64_t*)&cgen_var_563, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007657 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7658 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7659 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7660 {
7661 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007662 }
7663 }
7664 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7665 countingStream->rewind();
7666 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
7667 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
7668 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007669 uint64_t cgen_var_564;
7670 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_564, 1);
7671 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
7672 uint64_t cgen_var_565;
7673 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_565, 1);
7674 stream->write((uint64_t*)&cgen_var_565, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007675 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007676 uint64_t cgen_var_566;
7677 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_566, 1);
7678 stream->write((uint64_t*)&cgen_var_566, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007679 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7680 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007681 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7682 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007683 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007684 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007685 mImpl->log("finish vkCmdCopyImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007686}
7687
7688void VkEncoder::vkCmdBlitImage(
7689 VkCommandBuffer commandBuffer,
7690 VkImage srcImage,
7691 VkImageLayout srcImageLayout,
7692 VkImage dstImage,
7693 VkImageLayout dstImageLayout,
7694 uint32_t regionCount,
7695 const VkImageBlit* pRegions,
7696 VkFilter filter)
7697{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007698 mImpl->log("start vkCmdBlitImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007699 auto stream = mImpl->stream();
7700 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007701 auto resources = mImpl->resources();
7702 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007703 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007704 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007705 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007706 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007707 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007708 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007709 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007710 VkImageBlit* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007711 VkFilter local_filter;
7712 local_commandBuffer = commandBuffer;
7713 local_srcImage = srcImage;
7714 local_srcImageLayout = srcImageLayout;
7715 local_dstImage = dstImage;
7716 local_dstImageLayout = dstImageLayout;
7717 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007718 local_pRegions = nullptr;
7719 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007720 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007721 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007722 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7723 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007724 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007725 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007726 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007727 local_filter = filter;
Lingfeng Yang62b23322018-12-24 12:45:47 -08007728 if (local_pRegions)
7729 {
7730 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7731 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007732 transform_tohost_VkImageBlit(mImpl->resources(), (VkImageBlit*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007733 }
7734 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007735 countingStream->rewind();
7736 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007737 uint64_t cgen_var_567;
7738 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_567, 1);
7739 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
7740 uint64_t cgen_var_568;
7741 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_568, 1);
7742 countingStream->write((uint64_t*)&cgen_var_568, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007743 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007744 uint64_t cgen_var_569;
7745 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_569, 1);
7746 countingStream->write((uint64_t*)&cgen_var_569, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007747 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7748 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7749 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7750 {
7751 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
7752 }
7753 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007754 }
7755 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7756 countingStream->rewind();
7757 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
7758 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
7759 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007760 uint64_t cgen_var_570;
7761 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_570, 1);
7762 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
7763 uint64_t cgen_var_571;
7764 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_571, 1);
7765 stream->write((uint64_t*)&cgen_var_571, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007766 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007767 uint64_t cgen_var_572;
7768 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_572, 1);
7769 stream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007770 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7771 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007772 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7773 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007774 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007775 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007776 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007777 mImpl->log("finish vkCmdBlitImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007778}
7779
7780void VkEncoder::vkCmdCopyBufferToImage(
7781 VkCommandBuffer commandBuffer,
7782 VkBuffer srcBuffer,
7783 VkImage dstImage,
7784 VkImageLayout dstImageLayout,
7785 uint32_t regionCount,
7786 const VkBufferImageCopy* pRegions)
7787{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007788 mImpl->log("start vkCmdCopyBufferToImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007789 auto stream = mImpl->stream();
7790 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007791 auto resources = mImpl->resources();
7792 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007793 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007794 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007795 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007796 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007797 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007798 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007799 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007800 local_commandBuffer = commandBuffer;
7801 local_srcBuffer = srcBuffer;
7802 local_dstImage = dstImage;
7803 local_dstImageLayout = dstImageLayout;
7804 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007805 local_pRegions = nullptr;
7806 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007807 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007808 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007809 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7810 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007811 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7812 }
7813 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007814 if (local_pRegions)
7815 {
7816 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7817 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007818 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007819 }
7820 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007821 countingStream->rewind();
7822 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007823 uint64_t cgen_var_573;
7824 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_573, 1);
7825 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
7826 uint64_t cgen_var_574;
7827 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_574, 1);
7828 countingStream->write((uint64_t*)&cgen_var_574, 1 * 8);
7829 uint64_t cgen_var_575;
7830 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_575, 1);
7831 countingStream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007832 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7833 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7834 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7835 {
7836 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007837 }
7838 }
7839 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7840 countingStream->rewind();
7841 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
7842 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
7843 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007844 uint64_t cgen_var_576;
7845 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_576, 1);
7846 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
7847 uint64_t cgen_var_577;
7848 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_577, 1);
7849 stream->write((uint64_t*)&cgen_var_577, 1 * 8);
7850 uint64_t cgen_var_578;
7851 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_578, 1);
7852 stream->write((uint64_t*)&cgen_var_578, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007853 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7854 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007855 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7856 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007857 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007858 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007859 mImpl->log("finish vkCmdCopyBufferToImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007860}
7861
7862void VkEncoder::vkCmdCopyImageToBuffer(
7863 VkCommandBuffer commandBuffer,
7864 VkImage srcImage,
7865 VkImageLayout srcImageLayout,
7866 VkBuffer dstBuffer,
7867 uint32_t regionCount,
7868 const VkBufferImageCopy* pRegions)
7869{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007870 mImpl->log("start vkCmdCopyImageToBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007871 auto stream = mImpl->stream();
7872 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007873 auto resources = mImpl->resources();
7874 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007875 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007876 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007877 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007878 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007879 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007880 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007881 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007882 local_commandBuffer = commandBuffer;
7883 local_srcImage = srcImage;
7884 local_srcImageLayout = srcImageLayout;
7885 local_dstBuffer = dstBuffer;
7886 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007887 local_pRegions = nullptr;
7888 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007889 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007890 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007891 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7892 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007893 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7894 }
7895 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007896 if (local_pRegions)
7897 {
7898 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7899 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007900 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007901 }
7902 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007903 countingStream->rewind();
7904 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007905 uint64_t cgen_var_579;
7906 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
7907 countingStream->write((uint64_t*)&cgen_var_579, 1 * 8);
7908 uint64_t cgen_var_580;
7909 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_580, 1);
7910 countingStream->write((uint64_t*)&cgen_var_580, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007911 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007912 uint64_t cgen_var_581;
7913 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_581, 1);
7914 countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007915 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7916 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7917 {
7918 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007919 }
7920 }
7921 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7922 countingStream->rewind();
7923 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
7924 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
7925 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007926 uint64_t cgen_var_582;
7927 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_582, 1);
7928 stream->write((uint64_t*)&cgen_var_582, 1 * 8);
7929 uint64_t cgen_var_583;
7930 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_583, 1);
7931 stream->write((uint64_t*)&cgen_var_583, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007932 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007933 uint64_t cgen_var_584;
7934 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
7935 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007936 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007937 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7938 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007939 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007940 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007941 mImpl->log("finish vkCmdCopyImageToBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007942}
7943
7944void VkEncoder::vkCmdUpdateBuffer(
7945 VkCommandBuffer commandBuffer,
7946 VkBuffer dstBuffer,
7947 VkDeviceSize dstOffset,
7948 VkDeviceSize dataSize,
7949 const void* pData)
7950{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007951 mImpl->log("start vkCmdUpdateBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007952 auto stream = mImpl->stream();
7953 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007954 auto resources = mImpl->resources();
7955 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007956 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007957 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007958 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007959 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007960 VkDeviceSize local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007961 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007962 local_commandBuffer = commandBuffer;
7963 local_dstBuffer = dstBuffer;
7964 local_dstOffset = dstOffset;
7965 local_dataSize = dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007966 local_pData = nullptr;
7967 if (pData)
7968 {
7969 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
7970 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007971 countingStream->rewind();
7972 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007973 uint64_t cgen_var_585;
7974 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
7975 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
7976 uint64_t cgen_var_586;
7977 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_586, 1);
7978 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007979 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7980 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7981 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007982 }
7983 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7984 countingStream->rewind();
7985 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
7986 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
7987 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007988 uint64_t cgen_var_587;
7989 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
7990 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
7991 uint64_t cgen_var_588;
7992 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_588, 1);
7993 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007994 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7995 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7996 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007997 mImpl->log("finish vkCmdUpdateBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007998}
7999
8000void VkEncoder::vkCmdFillBuffer(
8001 VkCommandBuffer commandBuffer,
8002 VkBuffer dstBuffer,
8003 VkDeviceSize dstOffset,
8004 VkDeviceSize size,
8005 uint32_t data)
8006{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008007 mImpl->log("start vkCmdFillBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008008 auto stream = mImpl->stream();
8009 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008010 auto resources = mImpl->resources();
8011 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008012 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008013 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008014 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008015 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008016 VkDeviceSize local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008017 uint32_t local_data;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008018 local_commandBuffer = commandBuffer;
8019 local_dstBuffer = dstBuffer;
8020 local_dstOffset = dstOffset;
8021 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008022 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008023 countingStream->rewind();
8024 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008025 uint64_t cgen_var_589;
8026 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
8027 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
8028 uint64_t cgen_var_590;
8029 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_590, 1);
8030 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008031 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8032 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
8033 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008034 }
8035 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8036 countingStream->rewind();
8037 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
8038 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
8039 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008040 uint64_t cgen_var_591;
8041 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
8042 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
8043 uint64_t cgen_var_592;
8044 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_592, 1);
8045 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008046 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8047 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
8048 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008049 mImpl->log("finish vkCmdFillBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008050}
8051
8052void VkEncoder::vkCmdClearColorImage(
8053 VkCommandBuffer commandBuffer,
8054 VkImage image,
8055 VkImageLayout imageLayout,
8056 const VkClearColorValue* pColor,
8057 uint32_t rangeCount,
8058 const VkImageSubresourceRange* pRanges)
8059{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008060 mImpl->log("start vkCmdClearColorImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008061 auto stream = mImpl->stream();
8062 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008063 auto resources = mImpl->resources();
8064 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008065 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008066 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008067 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008068 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008069 VkClearColorValue* local_pColor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008070 uint32_t local_rangeCount;
8071 VkImageSubresourceRange* local_pRanges;
8072 local_commandBuffer = commandBuffer;
8073 local_image = image;
8074 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008075 local_pColor = nullptr;
8076 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008077 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008078 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
8079 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
8080 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008081 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008082 local_pRanges = nullptr;
8083 if (pRanges)
8084 {
8085 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008086 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8087 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008088 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
8089 }
8090 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008091 if (local_pColor)
8092 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008093 transform_tohost_VkClearColorValue(mImpl->resources(), (VkClearColorValue*)(local_pColor));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008094 }
8095 if (local_pRanges)
8096 {
8097 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8098 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008099 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008100 }
8101 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008102 countingStream->rewind();
8103 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008104 uint64_t cgen_var_593;
8105 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
8106 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
8107 uint64_t cgen_var_594;
8108 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_594, 1);
8109 countingStream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008110 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8111 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
8112 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8113 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8114 {
8115 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008116 }
8117 }
8118 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8119 countingStream->rewind();
8120 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
8121 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
8122 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008123 uint64_t cgen_var_595;
8124 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
8125 stream->write((uint64_t*)&cgen_var_595, 1 * 8);
8126 uint64_t cgen_var_596;
8127 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_596, 1);
8128 stream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008129 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8130 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
8131 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008132 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8133 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008134 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008135 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008136 mImpl->log("finish vkCmdClearColorImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008137}
8138
8139void VkEncoder::vkCmdClearDepthStencilImage(
8140 VkCommandBuffer commandBuffer,
8141 VkImage image,
8142 VkImageLayout imageLayout,
8143 const VkClearDepthStencilValue* pDepthStencil,
8144 uint32_t rangeCount,
8145 const VkImageSubresourceRange* pRanges)
8146{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008147 mImpl->log("start vkCmdClearDepthStencilImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008148 auto stream = mImpl->stream();
8149 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008150 auto resources = mImpl->resources();
8151 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008152 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008153 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008154 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008155 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008156 VkClearDepthStencilValue* local_pDepthStencil;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008157 uint32_t local_rangeCount;
8158 VkImageSubresourceRange* local_pRanges;
8159 local_commandBuffer = commandBuffer;
8160 local_image = image;
8161 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008162 local_pDepthStencil = nullptr;
8163 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008164 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008165 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
8166 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
8167 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008168 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008169 local_pRanges = nullptr;
8170 if (pRanges)
8171 {
8172 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008173 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8174 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008175 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
8176 }
8177 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008178 if (local_pDepthStencil)
8179 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008180 transform_tohost_VkClearDepthStencilValue(mImpl->resources(), (VkClearDepthStencilValue*)(local_pDepthStencil));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008181 }
8182 if (local_pRanges)
8183 {
8184 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8185 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008186 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008187 }
8188 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008189 countingStream->rewind();
8190 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008191 uint64_t cgen_var_597;
8192 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_597, 1);
8193 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
8194 uint64_t cgen_var_598;
8195 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_598, 1);
8196 countingStream->write((uint64_t*)&cgen_var_598, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008197 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8198 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8199 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8200 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8201 {
8202 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008203 }
8204 }
8205 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8206 countingStream->rewind();
8207 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
8208 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
8209 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008210 uint64_t cgen_var_599;
8211 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_599, 1);
8212 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
8213 uint64_t cgen_var_600;
8214 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_600, 1);
8215 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008216 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8217 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8218 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008219 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8220 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008221 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008222 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008223 mImpl->log("finish vkCmdClearDepthStencilImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008224}
8225
8226void VkEncoder::vkCmdClearAttachments(
8227 VkCommandBuffer commandBuffer,
8228 uint32_t attachmentCount,
8229 const VkClearAttachment* pAttachments,
8230 uint32_t rectCount,
8231 const VkClearRect* pRects)
8232{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008233 mImpl->log("start vkCmdClearAttachments");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008234 auto stream = mImpl->stream();
8235 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008236 auto resources = mImpl->resources();
8237 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008238 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008239 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008240 uint32_t local_attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008241 VkClearAttachment* local_pAttachments;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008242 uint32_t local_rectCount;
8243 VkClearRect* local_pRects;
8244 local_commandBuffer = commandBuffer;
8245 local_attachmentCount = attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008246 local_pAttachments = nullptr;
8247 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008248 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008249 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008250 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8251 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008252 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008253 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008254 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008255 local_rectCount = rectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008256 local_pRects = nullptr;
8257 if (pRects)
8258 {
8259 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008260 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8261 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008262 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
8263 }
8264 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008265 if (local_pAttachments)
8266 {
8267 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8268 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008269 transform_tohost_VkClearAttachment(mImpl->resources(), (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008270 }
8271 }
8272 if (local_pRects)
8273 {
8274 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8275 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008276 transform_tohost_VkClearRect(mImpl->resources(), (VkClearRect*)(local_pRects + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008277 }
8278 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008279 countingStream->rewind();
8280 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008281 uint64_t cgen_var_601;
8282 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
8283 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008284 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
8285 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8286 {
8287 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
8288 }
8289 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
8290 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8291 {
8292 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008293 }
8294 }
8295 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8296 countingStream->rewind();
8297 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
8298 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
8299 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008300 uint64_t cgen_var_602;
8301 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_602, 1);
8302 stream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008303 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008304 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8305 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008306 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008307 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008308 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008309 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8310 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008311 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008312 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008313 mImpl->log("finish vkCmdClearAttachments");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008314}
8315
8316void VkEncoder::vkCmdResolveImage(
8317 VkCommandBuffer commandBuffer,
8318 VkImage srcImage,
8319 VkImageLayout srcImageLayout,
8320 VkImage dstImage,
8321 VkImageLayout dstImageLayout,
8322 uint32_t regionCount,
8323 const VkImageResolve* pRegions)
8324{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008325 mImpl->log("start vkCmdResolveImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008326 auto stream = mImpl->stream();
8327 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008328 auto resources = mImpl->resources();
8329 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008330 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008331 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008332 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008333 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008334 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008335 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008336 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008337 VkImageResolve* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008338 local_commandBuffer = commandBuffer;
8339 local_srcImage = srcImage;
8340 local_srcImageLayout = srcImageLayout;
8341 local_dstImage = dstImage;
8342 local_dstImageLayout = dstImageLayout;
8343 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008344 local_pRegions = nullptr;
8345 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008346 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008347 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008348 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8349 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008350 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
8351 }
8352 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008353 if (local_pRegions)
8354 {
8355 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8356 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008357 transform_tohost_VkImageResolve(mImpl->resources(), (VkImageResolve*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008358 }
8359 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008360 countingStream->rewind();
8361 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008362 uint64_t cgen_var_603;
8363 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
8364 countingStream->write((uint64_t*)&cgen_var_603, 1 * 8);
8365 uint64_t cgen_var_604;
8366 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_604, 1);
8367 countingStream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008368 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008369 uint64_t cgen_var_605;
8370 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_605, 1);
8371 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008372 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8373 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8374 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8375 {
8376 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008377 }
8378 }
8379 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8380 countingStream->rewind();
8381 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
8382 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
8383 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008384 uint64_t cgen_var_606;
8385 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_606, 1);
8386 stream->write((uint64_t*)&cgen_var_606, 1 * 8);
8387 uint64_t cgen_var_607;
8388 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_607, 1);
8389 stream->write((uint64_t*)&cgen_var_607, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008390 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008391 uint64_t cgen_var_608;
8392 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_608, 1);
8393 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008394 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8395 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008396 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8397 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008398 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008399 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008400 mImpl->log("finish vkCmdResolveImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008401}
8402
8403void VkEncoder::vkCmdSetEvent(
8404 VkCommandBuffer commandBuffer,
8405 VkEvent event,
8406 VkPipelineStageFlags stageMask)
8407{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008408 mImpl->log("start vkCmdSetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008409 auto stream = mImpl->stream();
8410 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008411 auto resources = mImpl->resources();
8412 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008413 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008414 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008415 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008416 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008417 local_commandBuffer = commandBuffer;
8418 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008419 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008420 countingStream->rewind();
8421 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008422 uint64_t cgen_var_609;
8423 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
8424 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
8425 uint64_t cgen_var_610;
8426 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_610, 1);
8427 countingStream->write((uint64_t*)&cgen_var_610, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008428 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008429 }
8430 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8431 countingStream->rewind();
8432 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
8433 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
8434 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008435 uint64_t cgen_var_611;
8436 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
8437 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
8438 uint64_t cgen_var_612;
8439 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_612, 1);
8440 stream->write((uint64_t*)&cgen_var_612, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008441 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008442 mImpl->log("finish vkCmdSetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008443}
8444
8445void VkEncoder::vkCmdResetEvent(
8446 VkCommandBuffer commandBuffer,
8447 VkEvent event,
8448 VkPipelineStageFlags stageMask)
8449{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008450 mImpl->log("start vkCmdResetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008451 auto stream = mImpl->stream();
8452 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008453 auto resources = mImpl->resources();
8454 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008455 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008456 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008457 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008458 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008459 local_commandBuffer = commandBuffer;
8460 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008461 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008462 countingStream->rewind();
8463 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008464 uint64_t cgen_var_613;
8465 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
8466 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
8467 uint64_t cgen_var_614;
8468 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_614, 1);
8469 countingStream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008470 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008471 }
8472 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8473 countingStream->rewind();
8474 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
8475 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
8476 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008477 uint64_t cgen_var_615;
8478 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
8479 stream->write((uint64_t*)&cgen_var_615, 1 * 8);
8480 uint64_t cgen_var_616;
8481 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_616, 1);
8482 stream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008483 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008484 mImpl->log("finish vkCmdResetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008485}
8486
8487void VkEncoder::vkCmdWaitEvents(
8488 VkCommandBuffer commandBuffer,
8489 uint32_t eventCount,
8490 const VkEvent* pEvents,
8491 VkPipelineStageFlags srcStageMask,
8492 VkPipelineStageFlags dstStageMask,
8493 uint32_t memoryBarrierCount,
8494 const VkMemoryBarrier* pMemoryBarriers,
8495 uint32_t bufferMemoryBarrierCount,
8496 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8497 uint32_t imageMemoryBarrierCount,
8498 const VkImageMemoryBarrier* pImageMemoryBarriers)
8499{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008500 mImpl->log("start vkCmdWaitEvents");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008501 auto stream = mImpl->stream();
8502 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008503 auto resources = mImpl->resources();
8504 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008505 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008506 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008507 uint32_t local_eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008508 VkEvent* local_pEvents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008509 VkPipelineStageFlags local_srcStageMask;
8510 VkPipelineStageFlags local_dstStageMask;
8511 uint32_t local_memoryBarrierCount;
8512 VkMemoryBarrier* local_pMemoryBarriers;
8513 uint32_t local_bufferMemoryBarrierCount;
8514 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8515 uint32_t local_imageMemoryBarrierCount;
8516 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8517 local_commandBuffer = commandBuffer;
8518 local_eventCount = eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008519 local_pEvents = nullptr;
8520 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008521 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008522 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
8523 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008524 local_srcStageMask = srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008525 local_dstStageMask = dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008526 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008527 local_pMemoryBarriers = nullptr;
8528 if (pMemoryBarriers)
8529 {
8530 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008531 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8532 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008533 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008534 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008535 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008536 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008537 local_pBufferMemoryBarriers = nullptr;
8538 if (pBufferMemoryBarriers)
8539 {
8540 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008541 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8542 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008543 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008544 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008545 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008546 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008547 local_pImageMemoryBarriers = nullptr;
8548 if (pImageMemoryBarriers)
8549 {
8550 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008551 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8552 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008553 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8554 }
8555 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008556 if (local_pMemoryBarriers)
8557 {
8558 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8559 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008560 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008561 }
8562 }
8563 if (local_pBufferMemoryBarriers)
8564 {
8565 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8566 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008567 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008568 }
8569 }
8570 if (local_pImageMemoryBarriers)
8571 {
8572 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8573 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008574 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008575 }
8576 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008577 countingStream->rewind();
8578 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008579 uint64_t cgen_var_617;
8580 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
8581 countingStream->write((uint64_t*)&cgen_var_617, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008582 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008583 if (((eventCount)))
8584 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008585 uint64_t* cgen_var_618;
8586 countingStream->alloc((void**)&cgen_var_618, ((eventCount)) * 8);
8587 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_618, ((eventCount)));
8588 countingStream->write((uint64_t*)cgen_var_618, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008589 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008590 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8591 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8592 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8593 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8594 {
8595 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8596 }
8597 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8598 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8599 {
8600 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8601 }
8602 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8603 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8604 {
8605 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008606 }
8607 }
8608 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8609 countingStream->rewind();
8610 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
8611 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
8612 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008613 uint64_t cgen_var_619;
8614 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
8615 stream->write((uint64_t*)&cgen_var_619, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008616 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008617 if (((eventCount)))
8618 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008619 uint64_t* cgen_var_620;
8620 stream->alloc((void**)&cgen_var_620, ((eventCount)) * 8);
8621 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_620, ((eventCount)));
8622 stream->write((uint64_t*)cgen_var_620, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008623 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008624 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8625 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8626 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008627 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8628 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008629 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008630 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008631 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008632 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8633 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008634 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008635 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008636 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008637 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8638 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008639 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008640 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008641 mImpl->log("finish vkCmdWaitEvents");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008642}
8643
8644void VkEncoder::vkCmdPipelineBarrier(
8645 VkCommandBuffer commandBuffer,
8646 VkPipelineStageFlags srcStageMask,
8647 VkPipelineStageFlags dstStageMask,
8648 VkDependencyFlags dependencyFlags,
8649 uint32_t memoryBarrierCount,
8650 const VkMemoryBarrier* pMemoryBarriers,
8651 uint32_t bufferMemoryBarrierCount,
8652 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8653 uint32_t imageMemoryBarrierCount,
8654 const VkImageMemoryBarrier* pImageMemoryBarriers)
8655{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008656 mImpl->log("start vkCmdPipelineBarrier");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008657 auto stream = mImpl->stream();
8658 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008659 auto resources = mImpl->resources();
8660 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008661 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008662 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008663 VkPipelineStageFlags local_srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008664 VkPipelineStageFlags local_dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008665 VkDependencyFlags local_dependencyFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008666 uint32_t local_memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008667 VkMemoryBarrier* local_pMemoryBarriers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008668 uint32_t local_bufferMemoryBarrierCount;
8669 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8670 uint32_t local_imageMemoryBarrierCount;
8671 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8672 local_commandBuffer = commandBuffer;
8673 local_srcStageMask = srcStageMask;
8674 local_dstStageMask = dstStageMask;
8675 local_dependencyFlags = dependencyFlags;
8676 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008677 local_pMemoryBarriers = nullptr;
8678 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008679 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008680 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008681 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8682 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008683 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008684 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008685 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008686 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008687 local_pBufferMemoryBarriers = nullptr;
8688 if (pBufferMemoryBarriers)
8689 {
8690 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008691 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8692 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008693 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008694 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008695 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008696 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008697 local_pImageMemoryBarriers = nullptr;
8698 if (pImageMemoryBarriers)
8699 {
8700 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008701 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8702 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008703 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8704 }
8705 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008706 if (local_pMemoryBarriers)
8707 {
8708 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8709 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008710 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008711 }
8712 }
8713 if (local_pBufferMemoryBarriers)
8714 {
8715 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8716 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008717 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008718 }
8719 }
8720 if (local_pImageMemoryBarriers)
8721 {
8722 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8723 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008724 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008725 }
8726 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008727 countingStream->rewind();
8728 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008729 uint64_t cgen_var_621;
8730 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
8731 countingStream->write((uint64_t*)&cgen_var_621, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008732 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8733 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8734 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
8735 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8736 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8737 {
8738 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8739 }
8740 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8741 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8742 {
8743 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8744 }
8745 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8746 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8747 {
8748 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008749 }
8750 }
8751 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8752 countingStream->rewind();
8753 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
8754 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
8755 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008756 uint64_t cgen_var_622;
8757 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_622, 1);
8758 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008759 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8760 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8761 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
8762 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008763 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8764 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008765 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008766 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008767 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008768 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8769 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008770 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008771 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008772 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008773 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8774 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008775 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008776 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008777 mImpl->log("finish vkCmdPipelineBarrier");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008778}
8779
8780void VkEncoder::vkCmdBeginQuery(
8781 VkCommandBuffer commandBuffer,
8782 VkQueryPool queryPool,
8783 uint32_t query,
8784 VkQueryControlFlags flags)
8785{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008786 mImpl->log("start vkCmdBeginQuery");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008787 auto stream = mImpl->stream();
8788 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008789 auto resources = mImpl->resources();
8790 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008791 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008792 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008793 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008794 uint32_t local_query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008795 VkQueryControlFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008796 local_commandBuffer = commandBuffer;
8797 local_queryPool = queryPool;
8798 local_query = query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008799 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008800 countingStream->rewind();
8801 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008802 uint64_t cgen_var_623;
8803 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
8804 countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
8805 uint64_t cgen_var_624;
8806 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
8807 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008808 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
8809 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008810 }
8811 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8812 countingStream->rewind();
8813 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
8814 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
8815 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008816 uint64_t cgen_var_625;
8817 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
8818 stream->write((uint64_t*)&cgen_var_625, 1 * 8);
8819 uint64_t cgen_var_626;
8820 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
8821 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008822 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
8823 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008824 mImpl->log("finish vkCmdBeginQuery");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008825}
8826
8827void VkEncoder::vkCmdEndQuery(
8828 VkCommandBuffer commandBuffer,
8829 VkQueryPool queryPool,
8830 uint32_t query)
8831{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008832 mImpl->log("start vkCmdEndQuery");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008833 auto stream = mImpl->stream();
8834 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008835 auto resources = mImpl->resources();
8836 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008837 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008838 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008839 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008840 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008841 local_commandBuffer = commandBuffer;
8842 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008843 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008844 countingStream->rewind();
8845 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008846 uint64_t cgen_var_627;
8847 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
8848 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
8849 uint64_t cgen_var_628;
8850 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
8851 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008852 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008853 }
8854 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8855 countingStream->rewind();
8856 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
8857 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
8858 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008859 uint64_t cgen_var_629;
8860 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
8861 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
8862 uint64_t cgen_var_630;
8863 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
8864 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008865 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008866 mImpl->log("finish vkCmdEndQuery");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008867}
8868
8869void VkEncoder::vkCmdResetQueryPool(
8870 VkCommandBuffer commandBuffer,
8871 VkQueryPool queryPool,
8872 uint32_t firstQuery,
8873 uint32_t queryCount)
8874{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008875 mImpl->log("start vkCmdResetQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008876 auto stream = mImpl->stream();
8877 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008878 auto resources = mImpl->resources();
8879 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008880 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008881 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008882 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008883 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008884 uint32_t local_queryCount;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008885 local_commandBuffer = commandBuffer;
8886 local_queryPool = queryPool;
8887 local_firstQuery = firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008888 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008889 countingStream->rewind();
8890 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008891 uint64_t cgen_var_631;
8892 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
8893 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
8894 uint64_t cgen_var_632;
8895 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
8896 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008897 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8898 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008899 }
8900 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8901 countingStream->rewind();
8902 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
8903 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
8904 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008905 uint64_t cgen_var_633;
8906 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_633, 1);
8907 stream->write((uint64_t*)&cgen_var_633, 1 * 8);
8908 uint64_t cgen_var_634;
8909 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_634, 1);
8910 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008911 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8912 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008913 mImpl->log("finish vkCmdResetQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008914}
8915
8916void VkEncoder::vkCmdWriteTimestamp(
8917 VkCommandBuffer commandBuffer,
8918 VkPipelineStageFlagBits pipelineStage,
8919 VkQueryPool queryPool,
8920 uint32_t query)
8921{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008922 mImpl->log("start vkCmdWriteTimestamp");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008923 auto stream = mImpl->stream();
8924 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008925 auto resources = mImpl->resources();
8926 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008927 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008928 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008929 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008930 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008931 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008932 local_commandBuffer = commandBuffer;
8933 local_pipelineStage = pipelineStage;
8934 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008935 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008936 countingStream->rewind();
8937 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008938 uint64_t cgen_var_635;
8939 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_635, 1);
8940 countingStream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008941 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008942 uint64_t cgen_var_636;
8943 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_636, 1);
8944 countingStream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008945 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008946 }
8947 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8948 countingStream->rewind();
8949 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
8950 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
8951 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008952 uint64_t cgen_var_637;
8953 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
8954 stream->write((uint64_t*)&cgen_var_637, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008955 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008956 uint64_t cgen_var_638;
8957 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_638, 1);
8958 stream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008959 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008960 mImpl->log("finish vkCmdWriteTimestamp");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008961}
8962
8963void VkEncoder::vkCmdCopyQueryPoolResults(
8964 VkCommandBuffer commandBuffer,
8965 VkQueryPool queryPool,
8966 uint32_t firstQuery,
8967 uint32_t queryCount,
8968 VkBuffer dstBuffer,
8969 VkDeviceSize dstOffset,
8970 VkDeviceSize stride,
8971 VkQueryResultFlags flags)
8972{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008973 mImpl->log("start vkCmdCopyQueryPoolResults");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008974 auto stream = mImpl->stream();
8975 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008976 auto resources = mImpl->resources();
8977 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008978 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008979 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008980 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008981 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008982 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008983 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008984 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008985 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008986 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008987 local_commandBuffer = commandBuffer;
8988 local_queryPool = queryPool;
8989 local_firstQuery = firstQuery;
8990 local_queryCount = queryCount;
8991 local_dstBuffer = dstBuffer;
8992 local_dstOffset = dstOffset;
8993 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008994 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008995 countingStream->rewind();
8996 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008997 uint64_t cgen_var_639;
8998 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
8999 countingStream->write((uint64_t*)&cgen_var_639, 1 * 8);
9000 uint64_t cgen_var_640;
9001 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_640, 1);
9002 countingStream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009003 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9004 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009005 uint64_t cgen_var_641;
9006 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_641, 1);
9007 countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009008 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
9009 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
9010 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009011 }
9012 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9013 countingStream->rewind();
9014 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
9015 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
9016 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009017 uint64_t cgen_var_642;
9018 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
9019 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
9020 uint64_t cgen_var_643;
9021 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_643, 1);
9022 stream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009023 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9024 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009025 uint64_t cgen_var_644;
9026 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_644, 1);
9027 stream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009028 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
9029 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
9030 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009031 mImpl->log("finish vkCmdCopyQueryPoolResults");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009032}
9033
9034void VkEncoder::vkCmdPushConstants(
9035 VkCommandBuffer commandBuffer,
9036 VkPipelineLayout layout,
9037 VkShaderStageFlags stageFlags,
9038 uint32_t offset,
9039 uint32_t size,
9040 const void* pValues)
9041{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009042 mImpl->log("start vkCmdPushConstants");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009043 auto stream = mImpl->stream();
9044 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009045 auto resources = mImpl->resources();
9046 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009047 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009048 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009049 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009050 VkShaderStageFlags local_stageFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009051 uint32_t local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009052 uint32_t local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009053 void* local_pValues;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009054 local_commandBuffer = commandBuffer;
9055 local_layout = layout;
9056 local_stageFlags = stageFlags;
9057 local_offset = offset;
9058 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009059 local_pValues = nullptr;
9060 if (pValues)
9061 {
9062 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
9063 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009064 countingStream->rewind();
9065 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009066 uint64_t cgen_var_645;
9067 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
9068 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
9069 uint64_t cgen_var_646;
9070 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_646, 1);
9071 countingStream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009072 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
9073 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
9074 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
9075 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009076 }
9077 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9078 countingStream->rewind();
9079 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
9080 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
9081 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009082 uint64_t cgen_var_647;
9083 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
9084 stream->write((uint64_t*)&cgen_var_647, 1 * 8);
9085 uint64_t cgen_var_648;
9086 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_648, 1);
9087 stream->write((uint64_t*)&cgen_var_648, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009088 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
9089 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
9090 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
9091 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009092 mImpl->log("finish vkCmdPushConstants");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009093}
9094
9095void VkEncoder::vkCmdBeginRenderPass(
9096 VkCommandBuffer commandBuffer,
9097 const VkRenderPassBeginInfo* pRenderPassBegin,
9098 VkSubpassContents contents)
9099{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009100 mImpl->log("start vkCmdBeginRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009101 auto stream = mImpl->stream();
9102 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009103 auto resources = mImpl->resources();
9104 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009105 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009106 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009107 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009108 VkSubpassContents local_contents;
9109 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009110 local_pRenderPassBegin = nullptr;
9111 if (pRenderPassBegin)
9112 {
9113 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
9114 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9115 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009116 local_contents = contents;
Lingfeng Yang62b23322018-12-24 12:45:47 -08009117 if (local_pRenderPassBegin)
9118 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009119 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009120 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009121 countingStream->rewind();
9122 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009123 uint64_t cgen_var_649;
9124 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
9125 countingStream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009126 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9127 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009128 }
9129 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9130 countingStream->rewind();
9131 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
9132 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
9133 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009134 uint64_t cgen_var_650;
9135 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_650, 1);
9136 stream->write((uint64_t*)&cgen_var_650, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009137 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9138 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009139 mImpl->log("finish vkCmdBeginRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009140}
9141
9142void VkEncoder::vkCmdNextSubpass(
9143 VkCommandBuffer commandBuffer,
9144 VkSubpassContents contents)
9145{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009146 mImpl->log("start vkCmdNextSubpass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009147 auto stream = mImpl->stream();
9148 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009149 auto resources = mImpl->resources();
9150 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009151 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009152 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009153 VkSubpassContents local_contents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009154 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009155 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009156 countingStream->rewind();
9157 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009158 uint64_t cgen_var_651;
9159 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_651, 1);
9160 countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009161 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009162 }
9163 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9164 countingStream->rewind();
9165 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
9166 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
9167 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009168 uint64_t cgen_var_652;
9169 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_652, 1);
9170 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009171 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009172 mImpl->log("finish vkCmdNextSubpass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009173}
9174
9175void VkEncoder::vkCmdEndRenderPass(
9176 VkCommandBuffer commandBuffer)
9177{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009178 mImpl->log("start vkCmdEndRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009179 auto stream = mImpl->stream();
9180 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009181 auto resources = mImpl->resources();
9182 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009183 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009184 VkCommandBuffer local_commandBuffer;
9185 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009186 countingStream->rewind();
9187 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009188 uint64_t cgen_var_653;
9189 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_653, 1);
9190 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009191 }
9192 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9193 countingStream->rewind();
9194 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
9195 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
9196 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009197 uint64_t cgen_var_654;
9198 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_654, 1);
9199 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009200 mImpl->log("finish vkCmdEndRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009201}
9202
9203void VkEncoder::vkCmdExecuteCommands(
9204 VkCommandBuffer commandBuffer,
9205 uint32_t commandBufferCount,
9206 const VkCommandBuffer* pCommandBuffers)
9207{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009208 mImpl->log("start vkCmdExecuteCommands");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009209 auto stream = mImpl->stream();
9210 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009211 auto resources = mImpl->resources();
9212 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009213 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009214 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009215 uint32_t local_commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009216 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009217 local_commandBuffer = commandBuffer;
9218 local_commandBufferCount = commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009219 local_pCommandBuffers = nullptr;
9220 if (pCommandBuffers)
9221 {
9222 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
9223 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009224 countingStream->rewind();
9225 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009226 uint64_t cgen_var_655;
9227 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_655, 1);
9228 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009229 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009230 if (((commandBufferCount)))
9231 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009232 uint64_t* cgen_var_656;
9233 countingStream->alloc((void**)&cgen_var_656, ((commandBufferCount)) * 8);
9234 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_656, ((commandBufferCount)));
9235 countingStream->write((uint64_t*)cgen_var_656, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08009236 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009237 }
9238 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9239 countingStream->rewind();
9240 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
9241 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
9242 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009243 uint64_t cgen_var_657;
9244 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
9245 stream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009246 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009247 if (((commandBufferCount)))
9248 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009249 uint64_t* cgen_var_658;
9250 stream->alloc((void**)&cgen_var_658, ((commandBufferCount)) * 8);
9251 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_658, ((commandBufferCount)));
9252 stream->write((uint64_t*)cgen_var_658, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08009253 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009254 mImpl->log("finish vkCmdExecuteCommands");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009255}
9256
9257#endif
9258#ifdef VK_VERSION_1_1
9259VkResult VkEncoder::vkEnumerateInstanceVersion(
9260 uint32_t* pApiVersion)
9261{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009262 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08009263 vkEnumerateInstanceVersion_VkResult_return = mImpl->resources()->on_vkEnumerateInstanceVersion(this, VK_SUCCESS, pApiVersion);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009264 mImpl->log("finish vkEnumerateInstanceVersion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009265 return vkEnumerateInstanceVersion_VkResult_return;
9266}
9267
9268VkResult VkEncoder::vkBindBufferMemory2(
9269 VkDevice device,
9270 uint32_t bindInfoCount,
9271 const VkBindBufferMemoryInfo* pBindInfos)
9272{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009273 mImpl->log("start vkBindBufferMemory2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009274 auto stream = mImpl->stream();
9275 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009276 auto resources = mImpl->resources();
9277 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009278 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009279 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009280 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009281 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009282 local_device = device;
9283 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009284 local_pBindInfos = nullptr;
9285 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009286 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009287 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009288 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9289 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009290 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
9291 }
9292 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009293 if (local_pBindInfos)
9294 {
9295 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9296 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009297 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009298 }
9299 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009300 countingStream->rewind();
9301 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009302 uint64_t cgen_var_659;
9303 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_659, 1);
9304 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009305 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9306 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9307 {
9308 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009309 }
9310 }
9311 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9312 countingStream->rewind();
9313 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
9314 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
9315 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009316 uint64_t cgen_var_660;
9317 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_660, 1);
9318 stream->write((uint64_t*)&cgen_var_660, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009319 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009320 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9321 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009322 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009323 }
9324 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
9325 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009326 countingStream->clearPool();
9327 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009328 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009329 mImpl->log("finish vkBindBufferMemory2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009330 return vkBindBufferMemory2_VkResult_return;
9331}
9332
9333VkResult VkEncoder::vkBindImageMemory2(
9334 VkDevice device,
9335 uint32_t bindInfoCount,
9336 const VkBindImageMemoryInfo* pBindInfos)
9337{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009338 mImpl->log("start vkBindImageMemory2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009339 auto stream = mImpl->stream();
9340 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009341 auto resources = mImpl->resources();
9342 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009343 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009344 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009345 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009346 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009347 local_device = device;
9348 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009349 local_pBindInfos = nullptr;
9350 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009351 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009352 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009353 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9354 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009355 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
9356 }
9357 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009358 if (local_pBindInfos)
9359 {
9360 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9361 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009362 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009363 }
9364 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009365 countingStream->rewind();
9366 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009367 uint64_t cgen_var_661;
9368 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_661, 1);
9369 countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009370 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9371 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9372 {
9373 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009374 }
9375 }
9376 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9377 countingStream->rewind();
9378 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
9379 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
9380 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009381 uint64_t cgen_var_662;
9382 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_662, 1);
9383 stream->write((uint64_t*)&cgen_var_662, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009384 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009385 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9386 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009387 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009388 }
9389 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
9390 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009391 countingStream->clearPool();
9392 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009393 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009394 mImpl->log("finish vkBindImageMemory2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009395 return vkBindImageMemory2_VkResult_return;
9396}
9397
9398void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
9399 VkDevice device,
9400 uint32_t heapIndex,
9401 uint32_t localDeviceIndex,
9402 uint32_t remoteDeviceIndex,
9403 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
9404{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009405 mImpl->log("start vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009406 auto stream = mImpl->stream();
9407 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009408 auto resources = mImpl->resources();
9409 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009410 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009411 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009412 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009413 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009414 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009415 local_device = device;
9416 local_heapIndex = heapIndex;
9417 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009418 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009419 countingStream->rewind();
9420 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009421 uint64_t cgen_var_663;
9422 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_663, 1);
9423 countingStream->write((uint64_t*)&cgen_var_663, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009424 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9425 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9426 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009427 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9428 }
9429 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9430 countingStream->rewind();
9431 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
9432 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
9433 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009434 uint64_t cgen_var_664;
9435 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_664, 1);
9436 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009437 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9438 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9439 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009440 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9441 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009442 mImpl->log("finish vkGetDeviceGroupPeerMemoryFeatures");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009443}
9444
9445void VkEncoder::vkCmdSetDeviceMask(
9446 VkCommandBuffer commandBuffer,
9447 uint32_t deviceMask)
9448{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009449 mImpl->log("start vkCmdSetDeviceMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009450 auto stream = mImpl->stream();
9451 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009452 auto resources = mImpl->resources();
9453 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009454 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009455 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009456 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009457 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009458 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009459 countingStream->rewind();
9460 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009461 uint64_t cgen_var_665;
9462 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_665, 1);
9463 countingStream->write((uint64_t*)&cgen_var_665, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009464 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009465 }
9466 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9467 countingStream->rewind();
9468 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
9469 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
9470 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009471 uint64_t cgen_var_666;
9472 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_666, 1);
9473 stream->write((uint64_t*)&cgen_var_666, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009474 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009475 mImpl->log("finish vkCmdSetDeviceMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009476}
9477
9478void VkEncoder::vkCmdDispatchBase(
9479 VkCommandBuffer commandBuffer,
9480 uint32_t baseGroupX,
9481 uint32_t baseGroupY,
9482 uint32_t baseGroupZ,
9483 uint32_t groupCountX,
9484 uint32_t groupCountY,
9485 uint32_t groupCountZ)
9486{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009487 mImpl->log("start vkCmdDispatchBase");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009488 auto stream = mImpl->stream();
9489 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009490 auto resources = mImpl->resources();
9491 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009492 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009493 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009494 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009495 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009496 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009497 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009498 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009499 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009500 local_commandBuffer = commandBuffer;
9501 local_baseGroupX = baseGroupX;
9502 local_baseGroupY = baseGroupY;
9503 local_baseGroupZ = baseGroupZ;
9504 local_groupCountX = groupCountX;
9505 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009506 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009507 countingStream->rewind();
9508 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009509 uint64_t cgen_var_667;
9510 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_667, 1);
9511 countingStream->write((uint64_t*)&cgen_var_667, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009512 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9513 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9514 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9515 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9516 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9517 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009518 }
9519 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9520 countingStream->rewind();
9521 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
9522 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
9523 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009524 uint64_t cgen_var_668;
9525 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_668, 1);
9526 stream->write((uint64_t*)&cgen_var_668, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009527 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9528 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9529 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9530 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9531 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9532 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009533 mImpl->log("finish vkCmdDispatchBase");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009534}
9535
9536VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
9537 VkInstance instance,
9538 uint32_t* pPhysicalDeviceGroupCount,
9539 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
9540{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009541 mImpl->log("start vkEnumeratePhysicalDeviceGroups");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009542 auto stream = mImpl->stream();
9543 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009544 auto resources = mImpl->resources();
9545 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009546 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009547 VkInstance local_instance;
9548 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009549 countingStream->rewind();
9550 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009551 uint64_t cgen_var_669;
9552 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_669, 1);
9553 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009554 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009555 uint64_t cgen_var_670 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
9556 countingStream->putBe64(cgen_var_670);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009557 if (pPhysicalDeviceGroupCount)
9558 {
9559 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9560 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009561 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009562 uint64_t cgen_var_671 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
9563 countingStream->putBe64(cgen_var_671);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009564 if (pPhysicalDeviceGroupProperties)
9565 {
9566 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9567 {
9568 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9569 }
9570 }
9571 }
9572 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9573 countingStream->rewind();
9574 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
9575 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
9576 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009577 uint64_t cgen_var_672;
9578 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_672, 1);
9579 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009580 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009581 uint64_t cgen_var_673 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
9582 stream->putBe64(cgen_var_673);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009583 if (pPhysicalDeviceGroupCount)
9584 {
9585 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9586 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009587 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009588 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
9589 stream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009590 if (pPhysicalDeviceGroupProperties)
9591 {
9592 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9593 {
9594 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9595 }
9596 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009597 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009598 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009599 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009600 if (pPhysicalDeviceGroupCount)
9601 {
9602 if (!(check_pPhysicalDeviceGroupCount))
9603 {
9604 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
9605 }
9606 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9607 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009608 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009609 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009610 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009611 if (pPhysicalDeviceGroupProperties)
9612 {
9613 if (!(check_pPhysicalDeviceGroupProperties))
9614 {
9615 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
9616 }
9617 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9618 {
9619 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9620 }
9621 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08009622 if (pPhysicalDeviceGroupProperties)
9623 {
9624 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9625 {
9626 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9627 }
9628 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009629 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
9630 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009631 countingStream->clearPool();
9632 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009633 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009634 mImpl->log("finish vkEnumeratePhysicalDeviceGroups");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009635 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
9636}
9637
9638void VkEncoder::vkGetImageMemoryRequirements2(
9639 VkDevice device,
9640 const VkImageMemoryRequirementsInfo2* pInfo,
9641 VkMemoryRequirements2* pMemoryRequirements)
9642{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009643 mImpl->log("start vkGetImageMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009644 auto stream = mImpl->stream();
9645 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009646 auto resources = mImpl->resources();
9647 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009648 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009649 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009650 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009651 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009652 local_pInfo = nullptr;
9653 if (pInfo)
9654 {
9655 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
9656 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
9657 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009658 if (local_pInfo)
9659 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009660 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009661 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009662 countingStream->rewind();
9663 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009664 uint64_t cgen_var_677;
9665 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_677, 1);
9666 countingStream->write((uint64_t*)&cgen_var_677, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009667 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009668 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
9669 }
9670 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9671 countingStream->rewind();
9672 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
9673 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
9674 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009675 uint64_t cgen_var_678;
9676 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_678, 1);
9677 stream->write((uint64_t*)&cgen_var_678, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009678 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009679 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9680 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009681 if (pMemoryRequirements)
9682 {
9683 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
9684 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009685 mImpl->log("finish vkGetImageMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009686}
9687
9688void VkEncoder::vkGetBufferMemoryRequirements2(
9689 VkDevice device,
9690 const VkBufferMemoryRequirementsInfo2* pInfo,
9691 VkMemoryRequirements2* pMemoryRequirements)
9692{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009693 mImpl->log("start vkGetBufferMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009694 auto stream = mImpl->stream();
9695 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009696 auto resources = mImpl->resources();
9697 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009698 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009699 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009700 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009701 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009702 local_pInfo = nullptr;
9703 if (pInfo)
9704 {
9705 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
9706 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
9707 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009708 if (local_pInfo)
9709 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009710 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009711 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009712 countingStream->rewind();
9713 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009714 uint64_t cgen_var_679;
9715 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_679, 1);
9716 countingStream->write((uint64_t*)&cgen_var_679, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009717 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009718 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
9719 }
9720 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9721 countingStream->rewind();
9722 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
9723 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
9724 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009725 uint64_t cgen_var_680;
9726 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_680, 1);
9727 stream->write((uint64_t*)&cgen_var_680, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009728 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009729 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9730 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009731 if (pMemoryRequirements)
9732 {
9733 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
9734 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009735 mImpl->log("finish vkGetBufferMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009736}
9737
9738void VkEncoder::vkGetImageSparseMemoryRequirements2(
9739 VkDevice device,
9740 const VkImageSparseMemoryRequirementsInfo2* pInfo,
9741 uint32_t* pSparseMemoryRequirementCount,
9742 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
9743{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009744 mImpl->log("start vkGetImageSparseMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009745 auto stream = mImpl->stream();
9746 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009747 auto resources = mImpl->resources();
9748 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009749 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009750 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009751 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009752 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009753 local_pInfo = nullptr;
9754 if (pInfo)
9755 {
9756 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
9757 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
9758 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009759 if (local_pInfo)
9760 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009761 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009762 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009763 countingStream->rewind();
9764 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009765 uint64_t cgen_var_681;
9766 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_681, 1);
9767 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009768 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009769 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009770 uint64_t cgen_var_682 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
9771 countingStream->putBe64(cgen_var_682);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009772 if (pSparseMemoryRequirementCount)
9773 {
9774 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9775 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009776 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009777 uint64_t cgen_var_683 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
9778 countingStream->putBe64(cgen_var_683);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009779 if (pSparseMemoryRequirements)
9780 {
9781 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9782 {
9783 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9784 }
9785 }
9786 }
9787 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9788 countingStream->rewind();
9789 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
9790 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
9791 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009792 uint64_t cgen_var_684;
9793 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_684, 1);
9794 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009795 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009796 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009797 uint64_t cgen_var_685 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
9798 stream->putBe64(cgen_var_685);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009799 if (pSparseMemoryRequirementCount)
9800 {
9801 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9802 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009803 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009804 uint64_t cgen_var_686 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
9805 stream->putBe64(cgen_var_686);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009806 if (pSparseMemoryRequirements)
9807 {
9808 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9809 {
9810 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9811 }
9812 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009813 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009814 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009815 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009816 if (pSparseMemoryRequirementCount)
9817 {
9818 if (!(check_pSparseMemoryRequirementCount))
9819 {
9820 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
9821 }
9822 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9823 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009824 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009825 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009826 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009827 if (pSparseMemoryRequirements)
9828 {
9829 if (!(check_pSparseMemoryRequirements))
9830 {
9831 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
9832 }
9833 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9834 {
9835 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9836 }
9837 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08009838 if (pSparseMemoryRequirements)
9839 {
9840 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9841 {
9842 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9843 }
9844 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009845 mImpl->log("finish vkGetImageSparseMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009846}
9847
9848void VkEncoder::vkGetPhysicalDeviceFeatures2(
9849 VkPhysicalDevice physicalDevice,
9850 VkPhysicalDeviceFeatures2* pFeatures)
9851{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009852 mImpl->log("start vkGetPhysicalDeviceFeatures2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009853 auto stream = mImpl->stream();
9854 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009855 auto resources = mImpl->resources();
9856 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009857 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009858 VkPhysicalDevice local_physicalDevice;
9859 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009860 countingStream->rewind();
9861 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009862 uint64_t cgen_var_689;
9863 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_689, 1);
9864 countingStream->write((uint64_t*)&cgen_var_689, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009865 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
9866 }
9867 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9868 countingStream->rewind();
9869 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
9870 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
9871 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009872 uint64_t cgen_var_690;
9873 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
9874 stream->write((uint64_t*)&cgen_var_690, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009875 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
9876 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009877 if (pFeatures)
9878 {
9879 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
9880 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009881 mImpl->log("finish vkGetPhysicalDeviceFeatures2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009882}
9883
9884void VkEncoder::vkGetPhysicalDeviceProperties2(
9885 VkPhysicalDevice physicalDevice,
9886 VkPhysicalDeviceProperties2* pProperties)
9887{
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009888 mImpl->log("start vkGetPhysicalDeviceProperties2");
9889 auto stream = mImpl->stream();
9890 auto countingStream = mImpl->countingStream();
9891 auto resources = mImpl->resources();
9892 auto pool = mImpl->pool();
9893 stream->setHandleMapping(resources->unwrapMapping());
9894 VkPhysicalDevice local_physicalDevice;
9895 local_physicalDevice = physicalDevice;
9896 countingStream->rewind();
9897 {
9898 uint64_t cgen_var_691;
9899 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_691, 1);
9900 countingStream->write((uint64_t*)&cgen_var_691, 1 * 8);
9901 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
9902 }
9903 uint32_t packetSize_vkGetPhysicalDeviceProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9904 countingStream->rewind();
9905 uint32_t opcode_vkGetPhysicalDeviceProperties2 = OP_vkGetPhysicalDeviceProperties2;
9906 stream->write(&opcode_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
9907 stream->write(&packetSize_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
9908 uint64_t cgen_var_692;
9909 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_692, 1);
9910 stream->write((uint64_t*)&cgen_var_692, 1 * 8);
9911 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
9912 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
9913 if (pProperties)
9914 {
9915 transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
9916 }
9917 mImpl->log("finish vkGetPhysicalDeviceProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009918}
9919
9920void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
9921 VkPhysicalDevice physicalDevice,
9922 VkFormat format,
9923 VkFormatProperties2* pFormatProperties)
9924{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009925 mImpl->log("start vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009926 auto stream = mImpl->stream();
9927 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009928 auto resources = mImpl->resources();
9929 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009930 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009931 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009932 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009933 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009934 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009935 countingStream->rewind();
9936 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009937 uint64_t cgen_var_693;
9938 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_693, 1);
9939 countingStream->write((uint64_t*)&cgen_var_693, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009940 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009941 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
9942 }
9943 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9944 countingStream->rewind();
9945 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
9946 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
9947 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009948 uint64_t cgen_var_694;
9949 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_694, 1);
9950 stream->write((uint64_t*)&cgen_var_694, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009951 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009952 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
9953 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009954 if (pFormatProperties)
9955 {
9956 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
9957 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009958 mImpl->log("finish vkGetPhysicalDeviceFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009959}
9960
9961VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
9962 VkPhysicalDevice physicalDevice,
9963 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
9964 VkImageFormatProperties2* pImageFormatProperties)
9965{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009966 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009967 auto stream = mImpl->stream();
9968 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009969 auto resources = mImpl->resources();
9970 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009971 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009972 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009973 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009974 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009975 local_pImageFormatInfo = nullptr;
9976 if (pImageFormatInfo)
9977 {
9978 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
9979 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
9980 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009981 if (local_pImageFormatInfo)
9982 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009983 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009984 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009985 countingStream->rewind();
9986 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009987 uint64_t cgen_var_695;
9988 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
9989 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009990 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009991 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
9992 }
9993 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9994 countingStream->rewind();
9995 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
9996 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
9997 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009998 uint64_t cgen_var_696;
9999 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
10000 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010001 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010002 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
10003 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010004 if (pImageFormatProperties)
10005 {
10006 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
10007 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010008 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
10009 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010010 countingStream->clearPool();
10011 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010012 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010013 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010014 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
10015}
10016
10017void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
10018 VkPhysicalDevice physicalDevice,
10019 uint32_t* pQueueFamilyPropertyCount,
10020 VkQueueFamilyProperties2* pQueueFamilyProperties)
10021{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010022 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010023 auto stream = mImpl->stream();
10024 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010025 auto resources = mImpl->resources();
10026 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010027 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010028 VkPhysicalDevice local_physicalDevice;
10029 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010030 countingStream->rewind();
10031 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010032 uint64_t cgen_var_697;
10033 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
10034 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010035 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010036 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
10037 countingStream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010038 if (pQueueFamilyPropertyCount)
10039 {
10040 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10041 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010042 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010043 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
10044 countingStream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010045 if (pQueueFamilyProperties)
10046 {
10047 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10048 {
10049 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10050 }
10051 }
10052 }
10053 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10054 countingStream->rewind();
10055 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
10056 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
10057 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010058 uint64_t cgen_var_700;
10059 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
10060 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010061 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010062 uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
10063 stream->putBe64(cgen_var_701);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010064 if (pQueueFamilyPropertyCount)
10065 {
10066 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10067 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010068 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010069 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
10070 stream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010071 if (pQueueFamilyProperties)
10072 {
10073 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10074 {
10075 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10076 }
10077 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010078 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010079 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010080 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010081 if (pQueueFamilyPropertyCount)
10082 {
10083 if (!(check_pQueueFamilyPropertyCount))
10084 {
10085 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
10086 }
10087 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10088 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010089 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010090 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010091 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010092 if (pQueueFamilyProperties)
10093 {
10094 if (!(check_pQueueFamilyProperties))
10095 {
10096 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
10097 }
10098 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10099 {
10100 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10101 }
10102 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010103 if (pQueueFamilyProperties)
10104 {
10105 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10106 {
10107 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10108 }
10109 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010110 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010111}
10112
10113void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
10114 VkPhysicalDevice physicalDevice,
10115 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
10116{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010117 mImpl->log("start vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010118 auto stream = mImpl->stream();
10119 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010120 auto resources = mImpl->resources();
10121 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010122 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010123 VkPhysicalDevice local_physicalDevice;
10124 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010125 countingStream->rewind();
10126 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010127 uint64_t cgen_var_705;
10128 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_705, 1);
10129 countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010130 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10131 }
10132 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10133 countingStream->rewind();
10134 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
10135 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
10136 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010137 uint64_t cgen_var_706;
10138 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_706, 1);
10139 stream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010140 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10141 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010142 if (pMemoryProperties)
10143 {
10144 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10145 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010146 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010147 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010148}
10149
10150void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
10151 VkPhysicalDevice physicalDevice,
10152 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
10153 uint32_t* pPropertyCount,
10154 VkSparseImageFormatProperties2* pProperties)
10155{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010156 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010157 auto stream = mImpl->stream();
10158 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010159 auto resources = mImpl->resources();
10160 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010161 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010162 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010163 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010164 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010165 local_pFormatInfo = nullptr;
10166 if (pFormatInfo)
10167 {
10168 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
10169 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
10170 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010171 if (local_pFormatInfo)
10172 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010173 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010174 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010175 countingStream->rewind();
10176 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010177 uint64_t cgen_var_707;
10178 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_707, 1);
10179 countingStream->write((uint64_t*)&cgen_var_707, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010180 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010181 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010182 uint64_t cgen_var_708 = (uint64_t)(uintptr_t)pPropertyCount;
10183 countingStream->putBe64(cgen_var_708);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010184 if (pPropertyCount)
10185 {
10186 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10187 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010188 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010189 uint64_t cgen_var_709 = (uint64_t)(uintptr_t)pProperties;
10190 countingStream->putBe64(cgen_var_709);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010191 if (pProperties)
10192 {
10193 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10194 {
10195 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
10196 }
10197 }
10198 }
10199 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10200 countingStream->rewind();
10201 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
10202 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
10203 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010204 uint64_t cgen_var_710;
10205 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_710, 1);
10206 stream->write((uint64_t*)&cgen_var_710, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010207 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010208 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010209 uint64_t cgen_var_711 = (uint64_t)(uintptr_t)pPropertyCount;
10210 stream->putBe64(cgen_var_711);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010211 if (pPropertyCount)
10212 {
10213 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10214 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010215 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010216 uint64_t cgen_var_712 = (uint64_t)(uintptr_t)pProperties;
10217 stream->putBe64(cgen_var_712);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010218 if (pProperties)
10219 {
10220 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10221 {
10222 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10223 }
10224 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010225 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010226 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010227 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010228 if (pPropertyCount)
10229 {
10230 if (!(check_pPropertyCount))
10231 {
10232 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10233 }
10234 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10235 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010236 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010237 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010238 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010239 if (pProperties)
10240 {
10241 if (!(check_pProperties))
10242 {
10243 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10244 }
10245 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10246 {
10247 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10248 }
10249 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010250 if (pProperties)
10251 {
10252 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10253 {
10254 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
10255 }
10256 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010257 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010258}
10259
10260void VkEncoder::vkTrimCommandPool(
10261 VkDevice device,
10262 VkCommandPool commandPool,
10263 VkCommandPoolTrimFlags flags)
10264{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010265 mImpl->log("start vkTrimCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010266 auto stream = mImpl->stream();
10267 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010268 auto resources = mImpl->resources();
10269 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010270 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010271 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010272 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010273 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010274 local_device = device;
10275 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010276 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010277 countingStream->rewind();
10278 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010279 uint64_t cgen_var_715;
10280 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_715, 1);
10281 countingStream->write((uint64_t*)&cgen_var_715, 1 * 8);
10282 uint64_t cgen_var_716;
10283 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_716, 1);
10284 countingStream->write((uint64_t*)&cgen_var_716, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010285 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010286 }
10287 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10288 countingStream->rewind();
10289 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
10290 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
10291 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010292 uint64_t cgen_var_717;
10293 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
10294 stream->write((uint64_t*)&cgen_var_717, 1 * 8);
10295 uint64_t cgen_var_718;
10296 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_718, 1);
10297 stream->write((uint64_t*)&cgen_var_718, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010298 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010299 mImpl->log("finish vkTrimCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010300}
10301
10302void VkEncoder::vkGetDeviceQueue2(
10303 VkDevice device,
10304 const VkDeviceQueueInfo2* pQueueInfo,
10305 VkQueue* pQueue)
10306{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010307 mImpl->log("start vkGetDeviceQueue2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010308 auto stream = mImpl->stream();
10309 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010310 auto resources = mImpl->resources();
10311 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010312 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010313 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010314 VkDeviceQueueInfo2* local_pQueueInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010315 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010316 local_pQueueInfo = nullptr;
10317 if (pQueueInfo)
10318 {
10319 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
10320 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
10321 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010322 if (local_pQueueInfo)
10323 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010324 transform_tohost_VkDeviceQueueInfo2(mImpl->resources(), (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010325 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010326 countingStream->rewind();
10327 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010328 uint64_t cgen_var_719;
10329 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_719, 1);
10330 countingStream->write((uint64_t*)&cgen_var_719, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010331 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010332 uint64_t cgen_var_720;
10333 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_720, 1);
10334 countingStream->write((uint64_t*)&cgen_var_720, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010335 }
10336 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10337 countingStream->rewind();
10338 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
10339 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
10340 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010341 uint64_t cgen_var_721;
10342 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
10343 stream->write((uint64_t*)&cgen_var_721, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010344 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -080010345 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010346 uint64_t cgen_var_722;
10347 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_722, 1);
10348 stream->write((uint64_t*)&cgen_var_722, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010349 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010350 uint64_t cgen_var_723;
10351 stream->read((uint64_t*)&cgen_var_723, 8);
10352 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_723, (VkQueue*)pQueue, 1);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010353 mImpl->log("finish vkGetDeviceQueue2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010354}
10355
10356VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
10357 VkDevice device,
10358 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
10359 const VkAllocationCallbacks* pAllocator,
10360 VkSamplerYcbcrConversion* pYcbcrConversion)
10361{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010362 mImpl->log("start vkCreateSamplerYcbcrConversion");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010363 auto stream = mImpl->stream();
10364 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010365 auto resources = mImpl->resources();
10366 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010367 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010368 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010369 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010370 VkAllocationCallbacks* local_pAllocator;
10371 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010372 local_pCreateInfo = nullptr;
10373 if (pCreateInfo)
10374 {
10375 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
10376 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
10377 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010378 local_pAllocator = nullptr;
10379 if (pAllocator)
10380 {
10381 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10382 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10383 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010384 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010385 if (local_pCreateInfo)
10386 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010387 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010388 }
10389 if (local_pAllocator)
10390 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010391 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010392 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010393 countingStream->rewind();
10394 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010395 uint64_t cgen_var_724;
10396 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
10397 countingStream->write((uint64_t*)&cgen_var_724, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010398 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010399 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010400 uint64_t cgen_var_725 = (uint64_t)(uintptr_t)local_pAllocator;
10401 countingStream->putBe64(cgen_var_725);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010402 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010403 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010404 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010405 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010406 uint64_t cgen_var_726;
10407 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_726, 1);
10408 countingStream->write((uint64_t*)&cgen_var_726, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010409 }
10410 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10411 countingStream->rewind();
10412 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
10413 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
10414 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010415 uint64_t cgen_var_727;
10416 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
10417 stream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010418 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010419 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010420 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
10421 stream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010422 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010423 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010424 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010425 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010426 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010427 uint64_t cgen_var_729;
10428 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_729, 1);
10429 stream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010430 stream->setHandleMapping(resources->unwrapMapping());
10431 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010432 uint64_t cgen_var_730;
10433 stream->read((uint64_t*)&cgen_var_730, 8);
10434 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_730, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010435 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010436 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
10437 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010438 countingStream->clearPool();
10439 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010440 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010441 mImpl->log("finish vkCreateSamplerYcbcrConversion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010442 return vkCreateSamplerYcbcrConversion_VkResult_return;
10443}
10444
10445void VkEncoder::vkDestroySamplerYcbcrConversion(
10446 VkDevice device,
10447 VkSamplerYcbcrConversion ycbcrConversion,
10448 const VkAllocationCallbacks* pAllocator)
10449{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010450 mImpl->log("start vkDestroySamplerYcbcrConversion");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010451 auto stream = mImpl->stream();
10452 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010453 auto resources = mImpl->resources();
10454 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010455 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010456 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010457 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010458 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010459 local_device = device;
10460 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010461 local_pAllocator = nullptr;
10462 if (pAllocator)
10463 {
10464 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10465 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10466 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010467 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010468 if (local_pAllocator)
10469 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010470 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010471 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010472 countingStream->rewind();
10473 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010474 uint64_t cgen_var_731;
10475 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_731, 1);
10476 countingStream->write((uint64_t*)&cgen_var_731, 1 * 8);
10477 uint64_t cgen_var_732;
10478 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_732, 1);
10479 countingStream->write((uint64_t*)&cgen_var_732, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010480 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010481 uint64_t cgen_var_733 = (uint64_t)(uintptr_t)local_pAllocator;
10482 countingStream->putBe64(cgen_var_733);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010483 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010484 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010485 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010486 }
10487 }
10488 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10489 countingStream->rewind();
10490 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
10491 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
10492 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010493 uint64_t cgen_var_734;
10494 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
10495 stream->write((uint64_t*)&cgen_var_734, 1 * 8);
10496 uint64_t cgen_var_735;
10497 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_735, 1);
10498 stream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010499 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010500 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
10501 stream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010502 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010503 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010504 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010505 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010506 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010507 mImpl->log("finish vkDestroySamplerYcbcrConversion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010508}
10509
10510VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
10511 VkDevice device,
10512 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
10513 const VkAllocationCallbacks* pAllocator,
10514 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
10515{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010516 mImpl->log("start vkCreateDescriptorUpdateTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010517 auto stream = mImpl->stream();
10518 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010519 auto resources = mImpl->resources();
10520 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010521 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010522 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010523 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010524 VkAllocationCallbacks* local_pAllocator;
10525 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010526 local_pCreateInfo = nullptr;
10527 if (pCreateInfo)
10528 {
10529 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
10530 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
10531 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010532 local_pAllocator = nullptr;
10533 if (pAllocator)
10534 {
10535 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10536 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10537 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010538 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010539 if (local_pCreateInfo)
10540 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010541 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010542 }
10543 if (local_pAllocator)
10544 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010545 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010546 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010547 countingStream->rewind();
10548 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010549 uint64_t cgen_var_737;
10550 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
10551 countingStream->write((uint64_t*)&cgen_var_737, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010552 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010553 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010554 uint64_t cgen_var_738 = (uint64_t)(uintptr_t)local_pAllocator;
10555 countingStream->putBe64(cgen_var_738);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010556 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010557 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010558 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010559 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010560 uint64_t cgen_var_739;
10561 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_739, 1);
10562 countingStream->write((uint64_t*)&cgen_var_739, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010563 }
10564 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10565 countingStream->rewind();
10566 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
10567 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
10568 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010569 uint64_t cgen_var_740;
10570 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
10571 stream->write((uint64_t*)&cgen_var_740, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010572 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010573 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010574 uint64_t cgen_var_741 = (uint64_t)(uintptr_t)local_pAllocator;
10575 stream->putBe64(cgen_var_741);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010576 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010577 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010578 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010579 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010580 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010581 uint64_t cgen_var_742;
10582 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_742, 1);
10583 stream->write((uint64_t*)&cgen_var_742, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010584 stream->setHandleMapping(resources->unwrapMapping());
10585 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010586 uint64_t cgen_var_743;
10587 stream->read((uint64_t*)&cgen_var_743, 8);
10588 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_743, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010589 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010590 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
10591 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010592 countingStream->clearPool();
10593 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010594 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010595 mImpl->log("finish vkCreateDescriptorUpdateTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010596 return vkCreateDescriptorUpdateTemplate_VkResult_return;
10597}
10598
10599void VkEncoder::vkDestroyDescriptorUpdateTemplate(
10600 VkDevice device,
10601 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
10602 const VkAllocationCallbacks* pAllocator)
10603{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010604 mImpl->log("start vkDestroyDescriptorUpdateTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010605 auto stream = mImpl->stream();
10606 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010607 auto resources = mImpl->resources();
10608 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010609 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010610 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010611 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010612 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010613 local_device = device;
10614 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010615 local_pAllocator = nullptr;
10616 if (pAllocator)
10617 {
10618 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10619 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10620 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010621 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010622 if (local_pAllocator)
10623 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010624 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010625 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010626 countingStream->rewind();
10627 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010628 uint64_t cgen_var_744;
10629 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
10630 countingStream->write((uint64_t*)&cgen_var_744, 1 * 8);
10631 uint64_t cgen_var_745;
10632 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_745, 1);
10633 countingStream->write((uint64_t*)&cgen_var_745, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010634 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010635 uint64_t cgen_var_746 = (uint64_t)(uintptr_t)local_pAllocator;
10636 countingStream->putBe64(cgen_var_746);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010637 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010638 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010639 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010640 }
10641 }
10642 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10643 countingStream->rewind();
10644 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
10645 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
10646 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010647 uint64_t cgen_var_747;
10648 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_747, 1);
10649 stream->write((uint64_t*)&cgen_var_747, 1 * 8);
10650 uint64_t cgen_var_748;
10651 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_748, 1);
10652 stream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010653 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010654 uint64_t cgen_var_749 = (uint64_t)(uintptr_t)local_pAllocator;
10655 stream->putBe64(cgen_var_749);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010656 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010657 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010658 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010659 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010660 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010661 mImpl->log("finish vkDestroyDescriptorUpdateTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010662}
10663
10664void VkEncoder::vkUpdateDescriptorSetWithTemplate(
10665 VkDevice device,
10666 VkDescriptorSet descriptorSet,
10667 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
10668 const void* pData)
10669{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010670 mImpl->log("start vkUpdateDescriptorSetWithTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010671 auto stream = mImpl->stream();
10672 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010673 auto resources = mImpl->resources();
10674 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010675 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010676 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010677 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010678 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010679 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010680 local_device = device;
10681 local_descriptorSet = descriptorSet;
10682 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010683 local_pData = nullptr;
10684 if (pData)
10685 {
10686 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
10687 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010688 countingStream->rewind();
10689 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010690 uint64_t cgen_var_750;
10691 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_750, 1);
10692 countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
10693 uint64_t cgen_var_751;
10694 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_751, 1);
10695 countingStream->write((uint64_t*)&cgen_var_751, 1 * 8);
10696 uint64_t cgen_var_752;
10697 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_752, 1);
10698 countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010699 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010700 uint64_t cgen_var_753 = (uint64_t)(uintptr_t)local_pData;
10701 countingStream->putBe64(cgen_var_753);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010702 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010703 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010704 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010705 }
10706 }
10707 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10708 countingStream->rewind();
10709 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
10710 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
10711 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010712 uint64_t cgen_var_754;
10713 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
10714 stream->write((uint64_t*)&cgen_var_754, 1 * 8);
10715 uint64_t cgen_var_755;
10716 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_755, 1);
10717 stream->write((uint64_t*)&cgen_var_755, 1 * 8);
10718 uint64_t cgen_var_756;
10719 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_756, 1);
10720 stream->write((uint64_t*)&cgen_var_756, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010721 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010722 uint64_t cgen_var_757 = (uint64_t)(uintptr_t)local_pData;
10723 stream->putBe64(cgen_var_757);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010724 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010725 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010726 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010727 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010728 mImpl->log("finish vkUpdateDescriptorSetWithTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010729}
10730
10731void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
10732 VkPhysicalDevice physicalDevice,
10733 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
10734 VkExternalBufferProperties* pExternalBufferProperties)
10735{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010736 mImpl->log("start vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010737 auto stream = mImpl->stream();
10738 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010739 auto resources = mImpl->resources();
10740 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010741 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010742 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010743 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010744 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010745 local_pExternalBufferInfo = nullptr;
10746 if (pExternalBufferInfo)
10747 {
10748 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
10749 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
10750 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010751 if (local_pExternalBufferInfo)
10752 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010753 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010754 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010755 countingStream->rewind();
10756 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010757 uint64_t cgen_var_758;
10758 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_758, 1);
10759 countingStream->write((uint64_t*)&cgen_var_758, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010760 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010761 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10762 }
10763 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10764 countingStream->rewind();
10765 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
10766 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
10767 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010768 uint64_t cgen_var_759;
10769 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_759, 1);
10770 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010771 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010772 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10773 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010774 if (pExternalBufferProperties)
10775 {
10776 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
10777 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010778 mImpl->log("finish vkGetPhysicalDeviceExternalBufferProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010779}
10780
10781void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
10782 VkPhysicalDevice physicalDevice,
10783 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
10784 VkExternalFenceProperties* pExternalFenceProperties)
10785{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010786 mImpl->log("start vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010787 auto stream = mImpl->stream();
10788 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010789 auto resources = mImpl->resources();
10790 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010791 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010792 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010793 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010794 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010795 local_pExternalFenceInfo = nullptr;
10796 if (pExternalFenceInfo)
10797 {
10798 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
10799 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
10800 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010801 if (local_pExternalFenceInfo)
10802 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010803 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010804 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010805 countingStream->rewind();
10806 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010807 uint64_t cgen_var_760;
10808 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_760, 1);
10809 countingStream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010810 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010811 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10812 }
10813 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10814 countingStream->rewind();
10815 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
10816 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
10817 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010818 uint64_t cgen_var_761;
10819 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_761, 1);
10820 stream->write((uint64_t*)&cgen_var_761, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010821 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010822 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10823 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010824 if (pExternalFenceProperties)
10825 {
10826 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
10827 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010828 mImpl->log("finish vkGetPhysicalDeviceExternalFenceProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010829}
10830
10831void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
10832 VkPhysicalDevice physicalDevice,
10833 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
10834 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
10835{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010836 mImpl->log("start vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010837 auto stream = mImpl->stream();
10838 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010839 auto resources = mImpl->resources();
10840 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010841 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010842 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010843 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010844 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010845 local_pExternalSemaphoreInfo = nullptr;
10846 if (pExternalSemaphoreInfo)
10847 {
10848 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
10849 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
10850 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010851 if (local_pExternalSemaphoreInfo)
10852 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010853 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010854 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010855 countingStream->rewind();
10856 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010857 uint64_t cgen_var_762;
10858 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
10859 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010860 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010861 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10862 }
10863 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10864 countingStream->rewind();
10865 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
10866 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
10867 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010868 uint64_t cgen_var_763;
10869 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_763, 1);
10870 stream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010871 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010872 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10873 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010874 if (pExternalSemaphoreProperties)
10875 {
10876 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10877 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010878 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphoreProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010879}
10880
10881void VkEncoder::vkGetDescriptorSetLayoutSupport(
10882 VkDevice device,
10883 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
10884 VkDescriptorSetLayoutSupport* pSupport)
10885{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010886 mImpl->log("start vkGetDescriptorSetLayoutSupport");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010887 auto stream = mImpl->stream();
10888 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010889 auto resources = mImpl->resources();
10890 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010891 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010892 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010893 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010894 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010895 local_pCreateInfo = nullptr;
10896 if (pCreateInfo)
10897 {
10898 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
10899 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
10900 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010901 if (local_pCreateInfo)
10902 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010903 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010904 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010905 countingStream->rewind();
10906 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010907 uint64_t cgen_var_764;
10908 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_764, 1);
10909 countingStream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010910 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010911 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
10912 }
10913 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10914 countingStream->rewind();
10915 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
10916 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
10917 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010918 uint64_t cgen_var_765;
10919 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_765, 1);
10920 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010921 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010922 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
10923 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010924 if (pSupport)
10925 {
10926 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
10927 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010928 mImpl->log("finish vkGetDescriptorSetLayoutSupport");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010929}
10930
10931#endif
10932#ifdef VK_KHR_surface
10933void VkEncoder::vkDestroySurfaceKHR(
10934 VkInstance instance,
10935 VkSurfaceKHR surface,
10936 const VkAllocationCallbacks* pAllocator)
10937{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010938 mImpl->log("start vkDestroySurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010939 auto stream = mImpl->stream();
10940 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010941 auto resources = mImpl->resources();
10942 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010943 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010944 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010945 VkSurfaceKHR local_surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010946 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010947 local_instance = instance;
10948 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010949 local_pAllocator = nullptr;
10950 if (pAllocator)
10951 {
10952 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10953 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10954 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010955 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010956 if (local_pAllocator)
10957 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010958 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010959 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010960 countingStream->rewind();
10961 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010962 uint64_t cgen_var_766;
10963 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_766, 1);
10964 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
10965 uint64_t cgen_var_767;
10966 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
10967 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010968 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010969 uint64_t cgen_var_768 = (uint64_t)(uintptr_t)local_pAllocator;
10970 countingStream->putBe64(cgen_var_768);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010971 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010972 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010973 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010974 }
10975 }
10976 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10977 countingStream->rewind();
10978 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
10979 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
10980 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010981 uint64_t cgen_var_769;
10982 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_769, 1);
10983 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
10984 uint64_t cgen_var_770;
10985 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_770, 1);
10986 stream->write((uint64_t*)&cgen_var_770, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010987 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010988 uint64_t cgen_var_771 = (uint64_t)(uintptr_t)local_pAllocator;
10989 stream->putBe64(cgen_var_771);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010990 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010991 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010992 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010993 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010994 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010995 mImpl->log("finish vkDestroySurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010996}
10997
10998VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
10999 VkPhysicalDevice physicalDevice,
11000 uint32_t queueFamilyIndex,
11001 VkSurfaceKHR surface,
11002 VkBool32* pSupported)
11003{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011004 mImpl->log("start vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011005 auto stream = mImpl->stream();
11006 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011007 auto resources = mImpl->resources();
11008 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011009 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011010 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011011 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011012 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011013 local_physicalDevice = physicalDevice;
11014 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011015 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011016 countingStream->rewind();
11017 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011018 uint64_t cgen_var_772;
11019 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_772, 1);
11020 countingStream->write((uint64_t*)&cgen_var_772, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011021 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011022 uint64_t cgen_var_773;
11023 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_773, 1);
11024 countingStream->write((uint64_t*)&cgen_var_773, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011025 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
11026 }
11027 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11028 countingStream->rewind();
11029 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
11030 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
11031 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011032 uint64_t cgen_var_774;
11033 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
11034 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011035 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011036 uint64_t cgen_var_775;
11037 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
11038 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011039 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
11040 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
11041 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
11042 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011043 countingStream->clearPool();
11044 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011045 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011046 mImpl->log("finish vkGetPhysicalDeviceSurfaceSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011047 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
11048}
11049
11050VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
11051 VkPhysicalDevice physicalDevice,
11052 VkSurfaceKHR surface,
11053 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
11054{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011055 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011056 auto stream = mImpl->stream();
11057 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011058 auto resources = mImpl->resources();
11059 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011060 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011061 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011062 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011063 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011064 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011065 countingStream->rewind();
11066 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011067 uint64_t cgen_var_776;
11068 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_776, 1);
11069 countingStream->write((uint64_t*)&cgen_var_776, 1 * 8);
11070 uint64_t cgen_var_777;
11071 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_777, 1);
11072 countingStream->write((uint64_t*)&cgen_var_777, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011073 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11074 }
11075 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11076 countingStream->rewind();
11077 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
11078 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
11079 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011080 uint64_t cgen_var_778;
11081 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_778, 1);
11082 stream->write((uint64_t*)&cgen_var_778, 1 * 8);
11083 uint64_t cgen_var_779;
11084 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_779, 1);
11085 stream->write((uint64_t*)&cgen_var_779, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011086 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11087 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011088 if (pSurfaceCapabilities)
11089 {
11090 transform_fromhost_VkSurfaceCapabilitiesKHR(mImpl->resources(), (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11091 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011092 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
11093 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011094 countingStream->clearPool();
11095 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011096 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011097 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011098 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
11099}
11100
11101VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
11102 VkPhysicalDevice physicalDevice,
11103 VkSurfaceKHR surface,
11104 uint32_t* pSurfaceFormatCount,
11105 VkSurfaceFormatKHR* pSurfaceFormats)
11106{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011107 mImpl->log("start vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011108 auto stream = mImpl->stream();
11109 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011110 auto resources = mImpl->resources();
11111 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011112 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011113 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011114 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011115 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011116 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011117 countingStream->rewind();
11118 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011119 uint64_t cgen_var_780;
11120 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
11121 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
11122 uint64_t cgen_var_781;
11123 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
11124 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011125 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011126 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11127 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011128 if (pSurfaceFormatCount)
11129 {
11130 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11131 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011132 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011133 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pSurfaceFormats;
11134 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011135 if (pSurfaceFormats)
11136 {
11137 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11138 {
11139 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11140 }
11141 }
11142 }
11143 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11144 countingStream->rewind();
11145 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
11146 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
11147 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011148 uint64_t cgen_var_784;
11149 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
11150 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
11151 uint64_t cgen_var_785;
11152 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
11153 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011154 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011155 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11156 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011157 if (pSurfaceFormatCount)
11158 {
11159 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11160 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011161 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011162 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pSurfaceFormats;
11163 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011164 if (pSurfaceFormats)
11165 {
11166 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11167 {
11168 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11169 }
11170 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011171 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011172 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011173 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011174 if (pSurfaceFormatCount)
11175 {
11176 if (!(check_pSurfaceFormatCount))
11177 {
11178 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
11179 }
11180 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11181 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011182 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011183 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011184 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011185 if (pSurfaceFormats)
11186 {
11187 if (!(check_pSurfaceFormats))
11188 {
11189 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
11190 }
11191 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11192 {
11193 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11194 }
11195 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011196 if (pSurfaceFormats)
11197 {
11198 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11199 {
11200 transform_fromhost_VkSurfaceFormatKHR(mImpl->resources(), (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11201 }
11202 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011203 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
11204 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011205 countingStream->clearPool();
11206 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011207 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011208 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormatsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011209 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
11210}
11211
11212VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
11213 VkPhysicalDevice physicalDevice,
11214 VkSurfaceKHR surface,
11215 uint32_t* pPresentModeCount,
11216 VkPresentModeKHR* pPresentModes)
11217{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011218 mImpl->log("start vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011219 auto stream = mImpl->stream();
11220 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011221 auto resources = mImpl->resources();
11222 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011223 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011224 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011225 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011226 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011227 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011228 countingStream->rewind();
11229 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011230 uint64_t cgen_var_790;
11231 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_790, 1);
11232 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
11233 uint64_t cgen_var_791;
11234 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_791, 1);
11235 countingStream->write((uint64_t*)&cgen_var_791, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011236 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011237 uint64_t cgen_var_792 = (uint64_t)(uintptr_t)pPresentModeCount;
11238 countingStream->putBe64(cgen_var_792);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011239 if (pPresentModeCount)
11240 {
11241 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11242 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011243 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011244 uint64_t cgen_var_793 = (uint64_t)(uintptr_t)pPresentModes;
11245 countingStream->putBe64(cgen_var_793);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011246 if (pPresentModes)
11247 {
11248 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11249 }
11250 }
11251 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11252 countingStream->rewind();
11253 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
11254 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
11255 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011256 uint64_t cgen_var_794;
11257 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_794, 1);
11258 stream->write((uint64_t*)&cgen_var_794, 1 * 8);
11259 uint64_t cgen_var_795;
11260 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_795, 1);
11261 stream->write((uint64_t*)&cgen_var_795, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011262 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011263 uint64_t cgen_var_796 = (uint64_t)(uintptr_t)pPresentModeCount;
11264 stream->putBe64(cgen_var_796);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011265 if (pPresentModeCount)
11266 {
11267 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11268 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011269 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011270 uint64_t cgen_var_797 = (uint64_t)(uintptr_t)pPresentModes;
11271 stream->putBe64(cgen_var_797);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011272 if (pPresentModes)
11273 {
11274 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11275 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011276 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011277 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011278 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011279 if (pPresentModeCount)
11280 {
11281 if (!(check_pPresentModeCount))
11282 {
11283 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
11284 }
11285 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11286 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011287 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011288 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011289 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011290 if (pPresentModes)
11291 {
11292 if (!(check_pPresentModes))
11293 {
11294 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
11295 }
11296 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11297 }
11298 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11299 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011300 countingStream->clearPool();
11301 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011302 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011303 mImpl->log("finish vkGetPhysicalDeviceSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011304 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
11305}
11306
11307#endif
11308#ifdef VK_KHR_swapchain
11309VkResult VkEncoder::vkCreateSwapchainKHR(
11310 VkDevice device,
11311 const VkSwapchainCreateInfoKHR* pCreateInfo,
11312 const VkAllocationCallbacks* pAllocator,
11313 VkSwapchainKHR* pSwapchain)
11314{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011315 mImpl->log("start vkCreateSwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011316 auto stream = mImpl->stream();
11317 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011318 auto resources = mImpl->resources();
11319 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011320 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011321 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011322 VkSwapchainCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011323 VkAllocationCallbacks* local_pAllocator;
11324 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011325 local_pCreateInfo = nullptr;
11326 if (pCreateInfo)
11327 {
11328 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
11329 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
11330 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011331 local_pAllocator = nullptr;
11332 if (pAllocator)
11333 {
11334 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11335 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11336 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011337 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011338 if (local_pCreateInfo)
11339 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011340 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011341 }
11342 if (local_pAllocator)
11343 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011344 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011345 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011346 countingStream->rewind();
11347 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011348 uint64_t cgen_var_800;
11349 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
11350 countingStream->write((uint64_t*)&cgen_var_800, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011351 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011352 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011353 uint64_t cgen_var_801 = (uint64_t)(uintptr_t)local_pAllocator;
11354 countingStream->putBe64(cgen_var_801);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011355 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011356 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011357 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011358 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011359 uint64_t cgen_var_802;
11360 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_802, 1);
11361 countingStream->write((uint64_t*)&cgen_var_802, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011362 }
11363 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11364 countingStream->rewind();
11365 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
11366 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
11367 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011368 uint64_t cgen_var_803;
11369 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
11370 stream->write((uint64_t*)&cgen_var_803, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011371 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011372 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011373 uint64_t cgen_var_804 = (uint64_t)(uintptr_t)local_pAllocator;
11374 stream->putBe64(cgen_var_804);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011375 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011376 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011377 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011378 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011379 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011380 uint64_t cgen_var_805;
11381 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_805, 1);
11382 stream->write((uint64_t*)&cgen_var_805, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011383 stream->setHandleMapping(resources->unwrapMapping());
11384 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011385 uint64_t cgen_var_806;
11386 stream->read((uint64_t*)&cgen_var_806, 8);
11387 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_806, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011388 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011389 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
11390 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011391 countingStream->clearPool();
11392 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011393 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011394 mImpl->log("finish vkCreateSwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011395 return vkCreateSwapchainKHR_VkResult_return;
11396}
11397
11398void VkEncoder::vkDestroySwapchainKHR(
11399 VkDevice device,
11400 VkSwapchainKHR swapchain,
11401 const VkAllocationCallbacks* pAllocator)
11402{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011403 mImpl->log("start vkDestroySwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011404 auto stream = mImpl->stream();
11405 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011406 auto resources = mImpl->resources();
11407 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011408 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011409 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011410 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011411 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011412 local_device = device;
11413 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011414 local_pAllocator = nullptr;
11415 if (pAllocator)
11416 {
11417 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11418 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11419 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011420 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011421 if (local_pAllocator)
11422 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011423 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011424 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011425 countingStream->rewind();
11426 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011427 uint64_t cgen_var_807;
11428 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_807, 1);
11429 countingStream->write((uint64_t*)&cgen_var_807, 1 * 8);
11430 uint64_t cgen_var_808;
11431 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_808, 1);
11432 countingStream->write((uint64_t*)&cgen_var_808, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011433 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011434 uint64_t cgen_var_809 = (uint64_t)(uintptr_t)local_pAllocator;
11435 countingStream->putBe64(cgen_var_809);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011436 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011437 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011438 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011439 }
11440 }
11441 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11442 countingStream->rewind();
11443 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
11444 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
11445 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011446 uint64_t cgen_var_810;
11447 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_810, 1);
11448 stream->write((uint64_t*)&cgen_var_810, 1 * 8);
11449 uint64_t cgen_var_811;
11450 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_811, 1);
11451 stream->write((uint64_t*)&cgen_var_811, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011452 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011453 uint64_t cgen_var_812 = (uint64_t)(uintptr_t)local_pAllocator;
11454 stream->putBe64(cgen_var_812);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011455 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011456 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011457 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011458 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011459 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011460 mImpl->log("finish vkDestroySwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011461}
11462
11463VkResult VkEncoder::vkGetSwapchainImagesKHR(
11464 VkDevice device,
11465 VkSwapchainKHR swapchain,
11466 uint32_t* pSwapchainImageCount,
11467 VkImage* pSwapchainImages)
11468{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011469 mImpl->log("start vkGetSwapchainImagesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011470 auto stream = mImpl->stream();
11471 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011472 auto resources = mImpl->resources();
11473 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011474 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011475 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011476 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011477 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011478 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011479 countingStream->rewind();
11480 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011481 uint64_t cgen_var_813;
11482 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_813, 1);
11483 countingStream->write((uint64_t*)&cgen_var_813, 1 * 8);
11484 uint64_t cgen_var_814;
11485 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_814, 1);
11486 countingStream->write((uint64_t*)&cgen_var_814, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011487 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011488 uint64_t cgen_var_815 = (uint64_t)(uintptr_t)pSwapchainImageCount;
11489 countingStream->putBe64(cgen_var_815);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011490 if (pSwapchainImageCount)
11491 {
11492 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11493 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011494 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011495 uint64_t cgen_var_816 = (uint64_t)(uintptr_t)pSwapchainImages;
11496 countingStream->putBe64(cgen_var_816);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011497 if (pSwapchainImages)
11498 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011499 if ((*(pSwapchainImageCount)))
11500 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011501 uint64_t* cgen_var_817;
11502 countingStream->alloc((void**)&cgen_var_817, (*(pSwapchainImageCount)) * 8);
11503 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_817, (*(pSwapchainImageCount)));
11504 countingStream->write((uint64_t*)cgen_var_817, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011505 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011506 }
11507 }
11508 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11509 countingStream->rewind();
11510 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
11511 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
11512 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011513 uint64_t cgen_var_818;
11514 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_818, 1);
11515 stream->write((uint64_t*)&cgen_var_818, 1 * 8);
11516 uint64_t cgen_var_819;
11517 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_819, 1);
11518 stream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011519 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011520 uint64_t cgen_var_820 = (uint64_t)(uintptr_t)pSwapchainImageCount;
11521 stream->putBe64(cgen_var_820);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011522 if (pSwapchainImageCount)
11523 {
11524 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11525 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011526 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011527 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011528 uint64_t cgen_var_821 = (uint64_t)(uintptr_t)pSwapchainImages;
11529 stream->putBe64(cgen_var_821);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011530 if (pSwapchainImages)
11531 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011532 if ((*(pSwapchainImageCount)))
11533 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011534 uint64_t* cgen_var_822;
11535 stream->alloc((void**)&cgen_var_822, (*(pSwapchainImageCount)) * 8);
11536 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_822, (*(pSwapchainImageCount)));
11537 stream->write((uint64_t*)cgen_var_822, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011538 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011539 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011540 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011541 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011542 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011543 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011544 if (pSwapchainImageCount)
11545 {
11546 if (!(check_pSwapchainImageCount))
11547 {
11548 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
11549 }
11550 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11551 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011552 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011553 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011554 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011555 if (pSwapchainImages)
11556 {
11557 if (!(check_pSwapchainImages))
11558 {
11559 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
11560 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011561 if ((*(pSwapchainImageCount)))
11562 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011563 uint64_t* cgen_var_825;
11564 stream->alloc((void**)&cgen_var_825, (*(pSwapchainImageCount)) * 8);
11565 stream->read((uint64_t*)cgen_var_825, (*(pSwapchainImageCount)) * 8);
11566 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_825, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011567 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011568 }
11569 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
11570 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011571 countingStream->clearPool();
11572 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011573 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011574 mImpl->log("finish vkGetSwapchainImagesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011575 return vkGetSwapchainImagesKHR_VkResult_return;
11576}
11577
11578VkResult VkEncoder::vkAcquireNextImageKHR(
11579 VkDevice device,
11580 VkSwapchainKHR swapchain,
11581 uint64_t timeout,
11582 VkSemaphore semaphore,
11583 VkFence fence,
11584 uint32_t* pImageIndex)
11585{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011586 mImpl->log("start vkAcquireNextImageKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011587 auto stream = mImpl->stream();
11588 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011589 auto resources = mImpl->resources();
11590 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011591 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011592 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011593 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011594 uint64_t local_timeout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011595 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011596 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011597 local_device = device;
11598 local_swapchain = swapchain;
11599 local_timeout = timeout;
11600 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011601 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011602 countingStream->rewind();
11603 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011604 uint64_t cgen_var_826;
11605 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
11606 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
11607 uint64_t cgen_var_827;
11608 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_827, 1);
11609 countingStream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011610 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011611 uint64_t cgen_var_828;
11612 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_828, 1);
11613 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
11614 uint64_t cgen_var_829;
11615 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_829, 1);
11616 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011617 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11618 }
11619 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11620 countingStream->rewind();
11621 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
11622 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
11623 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011624 uint64_t cgen_var_830;
11625 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_830, 1);
11626 stream->write((uint64_t*)&cgen_var_830, 1 * 8);
11627 uint64_t cgen_var_831;
11628 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_831, 1);
11629 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011630 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011631 uint64_t cgen_var_832;
11632 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_832, 1);
11633 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
11634 uint64_t cgen_var_833;
11635 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_833, 1);
11636 stream->write((uint64_t*)&cgen_var_833, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011637 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11638 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
11639 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
11640 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011641 countingStream->clearPool();
11642 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011643 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011644 mImpl->log("finish vkAcquireNextImageKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011645 return vkAcquireNextImageKHR_VkResult_return;
11646}
11647
11648VkResult VkEncoder::vkQueuePresentKHR(
11649 VkQueue queue,
11650 const VkPresentInfoKHR* pPresentInfo)
11651{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011652 mImpl->log("start vkQueuePresentKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011653 auto stream = mImpl->stream();
11654 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011655 auto resources = mImpl->resources();
11656 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011657 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011658 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011659 VkPresentInfoKHR* local_pPresentInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011660 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011661 local_pPresentInfo = nullptr;
11662 if (pPresentInfo)
11663 {
11664 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
11665 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
11666 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011667 if (local_pPresentInfo)
11668 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011669 transform_tohost_VkPresentInfoKHR(mImpl->resources(), (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011670 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011671 countingStream->rewind();
11672 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011673 uint64_t cgen_var_834;
11674 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_834, 1);
11675 countingStream->write((uint64_t*)&cgen_var_834, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011676 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011677 }
11678 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11679 countingStream->rewind();
11680 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
11681 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
11682 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011683 uint64_t cgen_var_835;
11684 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_835, 1);
11685 stream->write((uint64_t*)&cgen_var_835, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011686 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011687 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
11688 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011689 countingStream->clearPool();
11690 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011691 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011692 mImpl->log("finish vkQueuePresentKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011693 return vkQueuePresentKHR_VkResult_return;
11694}
11695
11696VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
11697 VkDevice device,
11698 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
11699{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011700 mImpl->log("start vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011701 auto stream = mImpl->stream();
11702 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011703 auto resources = mImpl->resources();
11704 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011705 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011706 VkDevice local_device;
11707 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011708 countingStream->rewind();
11709 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011710 uint64_t cgen_var_836;
11711 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_836, 1);
11712 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011713 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11714 }
11715 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11716 countingStream->rewind();
11717 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
11718 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
11719 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011720 uint64_t cgen_var_837;
11721 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_837, 1);
11722 stream->write((uint64_t*)&cgen_var_837, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011723 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11724 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011725 if (pDeviceGroupPresentCapabilities)
11726 {
11727 transform_fromhost_VkDeviceGroupPresentCapabilitiesKHR(mImpl->resources(), (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11728 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011729 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
11730 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011731 countingStream->clearPool();
11732 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011733 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011734 mImpl->log("finish vkGetDeviceGroupPresentCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011735 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
11736}
11737
11738VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
11739 VkDevice device,
11740 VkSurfaceKHR surface,
11741 VkDeviceGroupPresentModeFlagsKHR* pModes)
11742{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011743 mImpl->log("start vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011744 auto stream = mImpl->stream();
11745 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011746 auto resources = mImpl->resources();
11747 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011748 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011749 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011750 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011751 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011752 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011753 countingStream->rewind();
11754 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011755 uint64_t cgen_var_838;
11756 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_838, 1);
11757 countingStream->write((uint64_t*)&cgen_var_838, 1 * 8);
11758 uint64_t cgen_var_839;
11759 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_839, 1);
11760 countingStream->write((uint64_t*)&cgen_var_839, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011761 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011762 uint64_t cgen_var_840 = (uint64_t)(uintptr_t)pModes;
11763 countingStream->putBe64(cgen_var_840);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011764 if (pModes)
11765 {
11766 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11767 }
11768 }
11769 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11770 countingStream->rewind();
11771 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
11772 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
11773 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011774 uint64_t cgen_var_841;
11775 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_841, 1);
11776 stream->write((uint64_t*)&cgen_var_841, 1 * 8);
11777 uint64_t cgen_var_842;
11778 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_842, 1);
11779 stream->write((uint64_t*)&cgen_var_842, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011780 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011781 uint64_t cgen_var_843 = (uint64_t)(uintptr_t)pModes;
11782 stream->putBe64(cgen_var_843);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011783 if (pModes)
11784 {
11785 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11786 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011787 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011788 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011789 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011790 if (pModes)
11791 {
11792 if (!(check_pModes))
11793 {
11794 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
11795 }
11796 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11797 }
11798 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11799 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011800 countingStream->clearPool();
11801 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011802 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011803 mImpl->log("finish vkGetDeviceGroupSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011804 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
11805}
11806
11807VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
11808 VkPhysicalDevice physicalDevice,
11809 VkSurfaceKHR surface,
11810 uint32_t* pRectCount,
11811 VkRect2D* pRects)
11812{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011813 mImpl->log("start vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011814 auto stream = mImpl->stream();
11815 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011816 auto resources = mImpl->resources();
11817 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011818 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011819 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011820 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011821 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011822 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011823 countingStream->rewind();
11824 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011825 uint64_t cgen_var_845;
11826 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_845, 1);
11827 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
11828 uint64_t cgen_var_846;
11829 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_846, 1);
11830 countingStream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011831 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011832 uint64_t cgen_var_847 = (uint64_t)(uintptr_t)pRectCount;
11833 countingStream->putBe64(cgen_var_847);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011834 if (pRectCount)
11835 {
11836 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11837 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011838 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011839 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pRects;
11840 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011841 if (pRects)
11842 {
11843 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11844 {
11845 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
11846 }
11847 }
11848 }
11849 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11850 countingStream->rewind();
11851 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
11852 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
11853 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011854 uint64_t cgen_var_849;
11855 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_849, 1);
11856 stream->write((uint64_t*)&cgen_var_849, 1 * 8);
11857 uint64_t cgen_var_850;
11858 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_850, 1);
11859 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011860 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011861 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pRectCount;
11862 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011863 if (pRectCount)
11864 {
11865 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11866 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011867 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011868 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pRects;
11869 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011870 if (pRects)
11871 {
11872 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11873 {
11874 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11875 }
11876 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011877 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011878 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011879 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011880 if (pRectCount)
11881 {
11882 if (!(check_pRectCount))
11883 {
11884 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
11885 }
11886 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
11887 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011888 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011889 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011890 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011891 if (pRects)
11892 {
11893 if (!(check_pRects))
11894 {
11895 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
11896 }
11897 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11898 {
11899 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11900 }
11901 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011902 if (pRects)
11903 {
11904 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11905 {
11906 transform_fromhost_VkRect2D(mImpl->resources(), (VkRect2D*)(pRects + i));
11907 }
11908 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011909 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
11910 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011911 countingStream->clearPool();
11912 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011913 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011914 mImpl->log("finish vkGetPhysicalDevicePresentRectanglesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011915 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
11916}
11917
11918VkResult VkEncoder::vkAcquireNextImage2KHR(
11919 VkDevice device,
11920 const VkAcquireNextImageInfoKHR* pAcquireInfo,
11921 uint32_t* pImageIndex)
11922{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011923 mImpl->log("start vkAcquireNextImage2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011924 auto stream = mImpl->stream();
11925 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011926 auto resources = mImpl->resources();
11927 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011928 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011929 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011930 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011931 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011932 local_pAcquireInfo = nullptr;
11933 if (pAcquireInfo)
11934 {
11935 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
11936 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
11937 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011938 if (local_pAcquireInfo)
11939 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011940 transform_tohost_VkAcquireNextImageInfoKHR(mImpl->resources(), (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011941 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011942 countingStream->rewind();
11943 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011944 uint64_t cgen_var_855;
11945 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_855, 1);
11946 countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011947 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011948 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11949 }
11950 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11951 countingStream->rewind();
11952 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
11953 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
11954 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011955 uint64_t cgen_var_856;
11956 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_856, 1);
11957 stream->write((uint64_t*)&cgen_var_856, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011958 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011959 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11960 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
11961 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
11962 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011963 countingStream->clearPool();
11964 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011965 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011966 mImpl->log("finish vkAcquireNextImage2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011967 return vkAcquireNextImage2KHR_VkResult_return;
11968}
11969
11970#endif
11971#ifdef VK_KHR_display
11972VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
11973 VkPhysicalDevice physicalDevice,
11974 uint32_t* pPropertyCount,
11975 VkDisplayPropertiesKHR* pProperties)
11976{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011977 mImpl->log("start vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011978 auto stream = mImpl->stream();
11979 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011980 auto resources = mImpl->resources();
11981 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011982 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011983 VkPhysicalDevice local_physicalDevice;
11984 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011985 countingStream->rewind();
11986 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011987 uint64_t cgen_var_857;
11988 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_857, 1);
11989 countingStream->write((uint64_t*)&cgen_var_857, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011990 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011991 uint64_t cgen_var_858 = (uint64_t)(uintptr_t)pPropertyCount;
11992 countingStream->putBe64(cgen_var_858);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011993 if (pPropertyCount)
11994 {
11995 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11996 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011997 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011998 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pProperties;
11999 countingStream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012000 if (pProperties)
12001 {
12002 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12003 {
12004 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
12005 }
12006 }
12007 }
12008 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12009 countingStream->rewind();
12010 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
12011 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
12012 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012013 uint64_t cgen_var_860;
12014 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_860, 1);
12015 stream->write((uint64_t*)&cgen_var_860, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012016 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012017 uint64_t cgen_var_861 = (uint64_t)(uintptr_t)pPropertyCount;
12018 stream->putBe64(cgen_var_861);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012019 if (pPropertyCount)
12020 {
12021 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12022 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012023 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012024 uint64_t cgen_var_862 = (uint64_t)(uintptr_t)pProperties;
12025 stream->putBe64(cgen_var_862);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012026 if (pProperties)
12027 {
12028 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12029 {
12030 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12031 }
12032 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012033 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012034 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012035 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012036 if (pPropertyCount)
12037 {
12038 if (!(check_pPropertyCount))
12039 {
12040 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12041 }
12042 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12043 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012044 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012045 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012046 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012047 if (pProperties)
12048 {
12049 if (!(check_pProperties))
12050 {
12051 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12052 }
12053 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12054 {
12055 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12056 }
12057 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012058 if (pProperties)
12059 {
12060 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12061 {
12062 transform_fromhost_VkDisplayPropertiesKHR(mImpl->resources(), (VkDisplayPropertiesKHR*)(pProperties + i));
12063 }
12064 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012065 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
12066 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012067 countingStream->clearPool();
12068 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012069 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012070 mImpl->log("finish vkGetPhysicalDeviceDisplayPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012071 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
12072}
12073
12074VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
12075 VkPhysicalDevice physicalDevice,
12076 uint32_t* pPropertyCount,
12077 VkDisplayPlanePropertiesKHR* pProperties)
12078{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012079 mImpl->log("start vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012080 auto stream = mImpl->stream();
12081 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012082 auto resources = mImpl->resources();
12083 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012084 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012085 VkPhysicalDevice local_physicalDevice;
12086 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012087 countingStream->rewind();
12088 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012089 uint64_t cgen_var_865;
12090 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_865, 1);
12091 countingStream->write((uint64_t*)&cgen_var_865, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012092 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012093 uint64_t cgen_var_866 = (uint64_t)(uintptr_t)pPropertyCount;
12094 countingStream->putBe64(cgen_var_866);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012095 if (pPropertyCount)
12096 {
12097 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12098 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012099 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012100 uint64_t cgen_var_867 = (uint64_t)(uintptr_t)pProperties;
12101 countingStream->putBe64(cgen_var_867);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012102 if (pProperties)
12103 {
12104 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12105 {
12106 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12107 }
12108 }
12109 }
12110 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12111 countingStream->rewind();
12112 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
12113 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
12114 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012115 uint64_t cgen_var_868;
12116 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_868, 1);
12117 stream->write((uint64_t*)&cgen_var_868, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012118 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012119 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pPropertyCount;
12120 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012121 if (pPropertyCount)
12122 {
12123 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12124 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012125 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012126 uint64_t cgen_var_870 = (uint64_t)(uintptr_t)pProperties;
12127 stream->putBe64(cgen_var_870);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012128 if (pProperties)
12129 {
12130 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12131 {
12132 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12133 }
12134 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012135 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012136 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012137 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012138 if (pPropertyCount)
12139 {
12140 if (!(check_pPropertyCount))
12141 {
12142 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12143 }
12144 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12145 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012146 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012147 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012148 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012149 if (pProperties)
12150 {
12151 if (!(check_pProperties))
12152 {
12153 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12154 }
12155 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12156 {
12157 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12158 }
12159 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012160 if (pProperties)
12161 {
12162 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12163 {
12164 transform_fromhost_VkDisplayPlanePropertiesKHR(mImpl->resources(), (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12165 }
12166 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012167 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
12168 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012169 countingStream->clearPool();
12170 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012171 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012172 mImpl->log("finish vkGetPhysicalDeviceDisplayPlanePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012173 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
12174}
12175
12176VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
12177 VkPhysicalDevice physicalDevice,
12178 uint32_t planeIndex,
12179 uint32_t* pDisplayCount,
12180 VkDisplayKHR* pDisplays)
12181{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012182 mImpl->log("start vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012183 auto stream = mImpl->stream();
12184 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012185 auto resources = mImpl->resources();
12186 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012187 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012188 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012189 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012190 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012191 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012192 countingStream->rewind();
12193 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012194 uint64_t cgen_var_873;
12195 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_873, 1);
12196 countingStream->write((uint64_t*)&cgen_var_873, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012197 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012198 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012199 uint64_t cgen_var_874 = (uint64_t)(uintptr_t)pDisplayCount;
12200 countingStream->putBe64(cgen_var_874);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012201 if (pDisplayCount)
12202 {
12203 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12204 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012205 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012206 uint64_t cgen_var_875 = (uint64_t)(uintptr_t)pDisplays;
12207 countingStream->putBe64(cgen_var_875);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012208 if (pDisplays)
12209 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012210 if ((*(pDisplayCount)))
12211 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012212 uint64_t* cgen_var_876;
12213 countingStream->alloc((void**)&cgen_var_876, (*(pDisplayCount)) * 8);
12214 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_876, (*(pDisplayCount)));
12215 countingStream->write((uint64_t*)cgen_var_876, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012216 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012217 }
12218 }
12219 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12220 countingStream->rewind();
12221 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
12222 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
12223 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012224 uint64_t cgen_var_877;
12225 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_877, 1);
12226 stream->write((uint64_t*)&cgen_var_877, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012227 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012228 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012229 uint64_t cgen_var_878 = (uint64_t)(uintptr_t)pDisplayCount;
12230 stream->putBe64(cgen_var_878);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012231 if (pDisplayCount)
12232 {
12233 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12234 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012235 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012236 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012237 uint64_t cgen_var_879 = (uint64_t)(uintptr_t)pDisplays;
12238 stream->putBe64(cgen_var_879);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012239 if (pDisplays)
12240 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012241 if ((*(pDisplayCount)))
12242 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012243 uint64_t* cgen_var_880;
12244 stream->alloc((void**)&cgen_var_880, (*(pDisplayCount)) * 8);
12245 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_880, (*(pDisplayCount)));
12246 stream->write((uint64_t*)cgen_var_880, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012247 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012248 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012249 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012250 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012251 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012252 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012253 if (pDisplayCount)
12254 {
12255 if (!(check_pDisplayCount))
12256 {
12257 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
12258 }
12259 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
12260 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012261 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012262 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012263 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012264 if (pDisplays)
12265 {
12266 if (!(check_pDisplays))
12267 {
12268 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
12269 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012270 if ((*(pDisplayCount)))
12271 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012272 uint64_t* cgen_var_883;
12273 stream->alloc((void**)&cgen_var_883, (*(pDisplayCount)) * 8);
12274 stream->read((uint64_t*)cgen_var_883, (*(pDisplayCount)) * 8);
12275 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_883, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012276 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012277 }
12278 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
12279 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012280 countingStream->clearPool();
12281 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012282 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012283 mImpl->log("finish vkGetDisplayPlaneSupportedDisplaysKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012284 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
12285}
12286
12287VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
12288 VkPhysicalDevice physicalDevice,
12289 VkDisplayKHR display,
12290 uint32_t* pPropertyCount,
12291 VkDisplayModePropertiesKHR* pProperties)
12292{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012293 mImpl->log("start vkGetDisplayModePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012294 auto stream = mImpl->stream();
12295 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012296 auto resources = mImpl->resources();
12297 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012298 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012299 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012300 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012301 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012302 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012303 countingStream->rewind();
12304 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012305 uint64_t cgen_var_884;
12306 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
12307 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
12308 uint64_t cgen_var_885;
12309 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
12310 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012311 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012312 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)pPropertyCount;
12313 countingStream->putBe64(cgen_var_886);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012314 if (pPropertyCount)
12315 {
12316 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12317 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012318 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012319 uint64_t cgen_var_887 = (uint64_t)(uintptr_t)pProperties;
12320 countingStream->putBe64(cgen_var_887);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012321 if (pProperties)
12322 {
12323 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12324 {
12325 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12326 }
12327 }
12328 }
12329 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12330 countingStream->rewind();
12331 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
12332 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
12333 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012334 uint64_t cgen_var_888;
12335 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
12336 stream->write((uint64_t*)&cgen_var_888, 1 * 8);
12337 uint64_t cgen_var_889;
12338 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
12339 stream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012340 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012341 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)pPropertyCount;
12342 stream->putBe64(cgen_var_890);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012343 if (pPropertyCount)
12344 {
12345 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12346 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012347 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012348 uint64_t cgen_var_891 = (uint64_t)(uintptr_t)pProperties;
12349 stream->putBe64(cgen_var_891);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012350 if (pProperties)
12351 {
12352 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12353 {
12354 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12355 }
12356 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012357 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012358 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012359 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012360 if (pPropertyCount)
12361 {
12362 if (!(check_pPropertyCount))
12363 {
12364 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12365 }
12366 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12367 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012368 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012369 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012370 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012371 if (pProperties)
12372 {
12373 if (!(check_pProperties))
12374 {
12375 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12376 }
12377 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12378 {
12379 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12380 }
12381 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012382 if (pProperties)
12383 {
12384 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12385 {
12386 transform_fromhost_VkDisplayModePropertiesKHR(mImpl->resources(), (VkDisplayModePropertiesKHR*)(pProperties + i));
12387 }
12388 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012389 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
12390 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012391 countingStream->clearPool();
12392 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012393 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012394 mImpl->log("finish vkGetDisplayModePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012395 return vkGetDisplayModePropertiesKHR_VkResult_return;
12396}
12397
12398VkResult VkEncoder::vkCreateDisplayModeKHR(
12399 VkPhysicalDevice physicalDevice,
12400 VkDisplayKHR display,
12401 const VkDisplayModeCreateInfoKHR* pCreateInfo,
12402 const VkAllocationCallbacks* pAllocator,
12403 VkDisplayModeKHR* pMode)
12404{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012405 mImpl->log("start vkCreateDisplayModeKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012406 auto stream = mImpl->stream();
12407 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012408 auto resources = mImpl->resources();
12409 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012410 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012411 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012412 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012413 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012414 VkAllocationCallbacks* local_pAllocator;
12415 local_physicalDevice = physicalDevice;
12416 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012417 local_pCreateInfo = nullptr;
12418 if (pCreateInfo)
12419 {
12420 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
12421 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
12422 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012423 local_pAllocator = nullptr;
12424 if (pAllocator)
12425 {
12426 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12427 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12428 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012429 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012430 if (local_pCreateInfo)
12431 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012432 transform_tohost_VkDisplayModeCreateInfoKHR(mImpl->resources(), (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012433 }
12434 if (local_pAllocator)
12435 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012436 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012437 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012438 countingStream->rewind();
12439 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012440 uint64_t cgen_var_894;
12441 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_894, 1);
12442 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
12443 uint64_t cgen_var_895;
12444 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_895, 1);
12445 countingStream->write((uint64_t*)&cgen_var_895, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012446 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012447 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012448 uint64_t cgen_var_896 = (uint64_t)(uintptr_t)local_pAllocator;
12449 countingStream->putBe64(cgen_var_896);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012450 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012451 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012452 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012453 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012454 uint64_t cgen_var_897;
12455 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_897, 1);
12456 countingStream->write((uint64_t*)&cgen_var_897, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012457 }
12458 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12459 countingStream->rewind();
12460 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
12461 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
12462 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012463 uint64_t cgen_var_898;
12464 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_898, 1);
12465 stream->write((uint64_t*)&cgen_var_898, 1 * 8);
12466 uint64_t cgen_var_899;
12467 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_899, 1);
12468 stream->write((uint64_t*)&cgen_var_899, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012469 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012470 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012471 uint64_t cgen_var_900 = (uint64_t)(uintptr_t)local_pAllocator;
12472 stream->putBe64(cgen_var_900);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012473 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012474 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012475 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012476 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012477 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012478 uint64_t cgen_var_901;
12479 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_901, 1);
12480 stream->write((uint64_t*)&cgen_var_901, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012481 stream->setHandleMapping(resources->unwrapMapping());
12482 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012483 uint64_t cgen_var_902;
12484 stream->read((uint64_t*)&cgen_var_902, 8);
12485 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_902, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012486 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012487 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
12488 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012489 countingStream->clearPool();
12490 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012491 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012492 mImpl->log("finish vkCreateDisplayModeKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012493 return vkCreateDisplayModeKHR_VkResult_return;
12494}
12495
12496VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
12497 VkPhysicalDevice physicalDevice,
12498 VkDisplayModeKHR mode,
12499 uint32_t planeIndex,
12500 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
12501{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012502 mImpl->log("start vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012503 auto stream = mImpl->stream();
12504 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012505 auto resources = mImpl->resources();
12506 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012507 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012508 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012509 VkDisplayModeKHR local_mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012510 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012511 local_physicalDevice = physicalDevice;
12512 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012513 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012514 countingStream->rewind();
12515 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012516 uint64_t cgen_var_903;
12517 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_903, 1);
12518 countingStream->write((uint64_t*)&cgen_var_903, 1 * 8);
12519 uint64_t cgen_var_904;
12520 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_904, 1);
12521 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012522 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012523 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12524 }
12525 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12526 countingStream->rewind();
12527 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
12528 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
12529 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012530 uint64_t cgen_var_905;
12531 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_905, 1);
12532 stream->write((uint64_t*)&cgen_var_905, 1 * 8);
12533 uint64_t cgen_var_906;
12534 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_906, 1);
12535 stream->write((uint64_t*)&cgen_var_906, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012536 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012537 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12538 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080012539 if (pCapabilities)
12540 {
12541 transform_fromhost_VkDisplayPlaneCapabilitiesKHR(mImpl->resources(), (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12542 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012543 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
12544 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012545 countingStream->clearPool();
12546 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012547 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012548 mImpl->log("finish vkGetDisplayPlaneCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012549 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
12550}
12551
12552VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
12553 VkInstance instance,
12554 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
12555 const VkAllocationCallbacks* pAllocator,
12556 VkSurfaceKHR* pSurface)
12557{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012558 mImpl->log("start vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012559 auto stream = mImpl->stream();
12560 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012561 auto resources = mImpl->resources();
12562 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012563 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012564 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012565 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012566 VkAllocationCallbacks* local_pAllocator;
12567 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012568 local_pCreateInfo = nullptr;
12569 if (pCreateInfo)
12570 {
12571 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
12572 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
12573 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012574 local_pAllocator = nullptr;
12575 if (pAllocator)
12576 {
12577 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12578 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12579 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012580 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012581 if (local_pCreateInfo)
12582 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012583 transform_tohost_VkDisplaySurfaceCreateInfoKHR(mImpl->resources(), (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012584 }
12585 if (local_pAllocator)
12586 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012587 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012588 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012589 countingStream->rewind();
12590 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012591 uint64_t cgen_var_907;
12592 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_907, 1);
12593 countingStream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012594 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012595 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012596 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
12597 countingStream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012598 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012599 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012600 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012601 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012602 uint64_t cgen_var_909;
12603 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_909, 1);
12604 countingStream->write((uint64_t*)&cgen_var_909, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012605 }
12606 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12607 countingStream->rewind();
12608 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
12609 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
12610 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012611 uint64_t cgen_var_910;
12612 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_910, 1);
12613 stream->write((uint64_t*)&cgen_var_910, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012614 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012615 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012616 uint64_t cgen_var_911 = (uint64_t)(uintptr_t)local_pAllocator;
12617 stream->putBe64(cgen_var_911);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012618 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012619 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012620 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012621 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012622 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012623 uint64_t cgen_var_912;
12624 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_912, 1);
12625 stream->write((uint64_t*)&cgen_var_912, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012626 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012627 uint64_t cgen_var_913;
12628 stream->read((uint64_t*)&cgen_var_913, 8);
12629 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_913, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012630 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
12631 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012632 countingStream->clearPool();
12633 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012634 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012635 mImpl->log("finish vkCreateDisplayPlaneSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012636 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
12637}
12638
12639#endif
12640#ifdef VK_KHR_display_swapchain
12641VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
12642 VkDevice device,
12643 uint32_t swapchainCount,
12644 const VkSwapchainCreateInfoKHR* pCreateInfos,
12645 const VkAllocationCallbacks* pAllocator,
12646 VkSwapchainKHR* pSwapchains)
12647{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012648 mImpl->log("start vkCreateSharedSwapchainsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012649 auto stream = mImpl->stream();
12650 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012651 auto resources = mImpl->resources();
12652 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012653 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012654 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012655 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012656 VkSwapchainCreateInfoKHR* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012657 VkAllocationCallbacks* local_pAllocator;
12658 local_device = device;
12659 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012660 local_pCreateInfos = nullptr;
12661 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012662 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012663 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012664 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12665 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012666 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012667 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012668 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012669 local_pAllocator = nullptr;
12670 if (pAllocator)
12671 {
12672 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12673 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12674 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012675 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012676 if (local_pCreateInfos)
12677 {
12678 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12679 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012680 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012681 }
12682 }
12683 if (local_pAllocator)
12684 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012685 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012686 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012687 countingStream->rewind();
12688 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012689 uint64_t cgen_var_914;
12690 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_914, 1);
12691 countingStream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012692 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
12693 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12694 {
12695 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
12696 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012697 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012698 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
12699 countingStream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012700 if (local_pAllocator)
12701 {
12702 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012703 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012704 if (((swapchainCount)))
12705 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012706 uint64_t* cgen_var_916;
12707 countingStream->alloc((void**)&cgen_var_916, ((swapchainCount)) * 8);
12708 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_916, ((swapchainCount)));
12709 countingStream->write((uint64_t*)cgen_var_916, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012710 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012711 }
12712 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12713 countingStream->rewind();
12714 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
12715 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
12716 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012717 uint64_t cgen_var_917;
12718 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_917, 1);
12719 stream->write((uint64_t*)&cgen_var_917, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012720 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012721 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12722 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012723 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012724 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012725 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012726 uint64_t cgen_var_918 = (uint64_t)(uintptr_t)local_pAllocator;
12727 stream->putBe64(cgen_var_918);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012728 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012729 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012730 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012731 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012732 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080012733 if (((swapchainCount)))
12734 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012735 uint64_t* cgen_var_919;
12736 stream->alloc((void**)&cgen_var_919, ((swapchainCount)) * 8);
12737 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_919, ((swapchainCount)));
12738 stream->write((uint64_t*)cgen_var_919, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012739 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012740 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080012741 if (((swapchainCount)))
12742 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012743 uint64_t* cgen_var_920;
12744 stream->alloc((void**)&cgen_var_920, ((swapchainCount)) * 8);
12745 stream->read((uint64_t*)cgen_var_920, ((swapchainCount)) * 8);
12746 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_920, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012747 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012748 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
12749 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012750 countingStream->clearPool();
12751 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012752 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012753 mImpl->log("finish vkCreateSharedSwapchainsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012754 return vkCreateSharedSwapchainsKHR_VkResult_return;
12755}
12756
12757#endif
12758#ifdef VK_KHR_xlib_surface
12759VkResult VkEncoder::vkCreateXlibSurfaceKHR(
12760 VkInstance instance,
12761 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
12762 const VkAllocationCallbacks* pAllocator,
12763 VkSurfaceKHR* pSurface)
12764{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012765 mImpl->log("start vkCreateXlibSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012766 auto stream = mImpl->stream();
12767 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012768 auto resources = mImpl->resources();
12769 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012770 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012771 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012772 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012773 VkAllocationCallbacks* local_pAllocator;
12774 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012775 local_pCreateInfo = nullptr;
12776 if (pCreateInfo)
12777 {
12778 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
12779 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
12780 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012781 local_pAllocator = nullptr;
12782 if (pAllocator)
12783 {
12784 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12785 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12786 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012787 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012788 if (local_pCreateInfo)
12789 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012790 transform_tohost_VkXlibSurfaceCreateInfoKHR(mImpl->resources(), (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012791 }
12792 if (local_pAllocator)
12793 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012794 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012795 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012796 countingStream->rewind();
12797 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012798 uint64_t cgen_var_921;
12799 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_921, 1);
12800 countingStream->write((uint64_t*)&cgen_var_921, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012801 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012802 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012803 uint64_t cgen_var_922 = (uint64_t)(uintptr_t)local_pAllocator;
12804 countingStream->putBe64(cgen_var_922);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012805 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012806 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012807 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012808 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012809 uint64_t cgen_var_923;
12810 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_923, 1);
12811 countingStream->write((uint64_t*)&cgen_var_923, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012812 }
12813 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12814 countingStream->rewind();
12815 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
12816 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
12817 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012818 uint64_t cgen_var_924;
12819 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_924, 1);
12820 stream->write((uint64_t*)&cgen_var_924, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012821 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012822 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012823 uint64_t cgen_var_925 = (uint64_t)(uintptr_t)local_pAllocator;
12824 stream->putBe64(cgen_var_925);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012825 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012826 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012827 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012828 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012829 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012830 uint64_t cgen_var_926;
12831 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_926, 1);
12832 stream->write((uint64_t*)&cgen_var_926, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012833 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012834 uint64_t cgen_var_927;
12835 stream->read((uint64_t*)&cgen_var_927, 8);
12836 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_927, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012837 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
12838 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012839 countingStream->clearPool();
12840 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012841 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012842 mImpl->log("finish vkCreateXlibSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012843 return vkCreateXlibSurfaceKHR_VkResult_return;
12844}
12845
12846VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
12847 VkPhysicalDevice physicalDevice,
12848 uint32_t queueFamilyIndex,
12849 Display* dpy,
12850 VisualID visualID)
12851{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012852 mImpl->log("start vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012853 auto stream = mImpl->stream();
12854 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012855 auto resources = mImpl->resources();
12856 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012857 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012858 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012859 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012860 VisualID local_visualID;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012861 local_physicalDevice = physicalDevice;
12862 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012863 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012864 countingStream->rewind();
12865 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012866 uint64_t cgen_var_928;
12867 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
12868 countingStream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012869 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012870 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012871 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012872 }
12873 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12874 countingStream->rewind();
12875 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
12876 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
12877 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012878 uint64_t cgen_var_929;
12879 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_929, 1);
12880 stream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012881 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012882 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012883 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012884 stream->read((Display*)dpy, sizeof(Display));
12885 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12886 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012887 countingStream->clearPool();
12888 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012889 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012890 mImpl->log("finish vkGetPhysicalDeviceXlibPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012891 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
12892}
12893
12894#endif
12895#ifdef VK_KHR_xcb_surface
12896VkResult VkEncoder::vkCreateXcbSurfaceKHR(
12897 VkInstance instance,
12898 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
12899 const VkAllocationCallbacks* pAllocator,
12900 VkSurfaceKHR* pSurface)
12901{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012902 mImpl->log("start vkCreateXcbSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012903 auto stream = mImpl->stream();
12904 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012905 auto resources = mImpl->resources();
12906 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012907 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012908 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012909 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012910 VkAllocationCallbacks* local_pAllocator;
12911 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012912 local_pCreateInfo = nullptr;
12913 if (pCreateInfo)
12914 {
12915 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
12916 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
12917 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012918 local_pAllocator = nullptr;
12919 if (pAllocator)
12920 {
12921 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12922 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12923 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012924 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012925 if (local_pCreateInfo)
12926 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012927 transform_tohost_VkXcbSurfaceCreateInfoKHR(mImpl->resources(), (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012928 }
12929 if (local_pAllocator)
12930 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012931 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012932 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012933 countingStream->rewind();
12934 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012935 uint64_t cgen_var_930;
12936 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_930, 1);
12937 countingStream->write((uint64_t*)&cgen_var_930, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012938 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012939 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012940 uint64_t cgen_var_931 = (uint64_t)(uintptr_t)local_pAllocator;
12941 countingStream->putBe64(cgen_var_931);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012942 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012943 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012944 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012945 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012946 uint64_t cgen_var_932;
12947 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_932, 1);
12948 countingStream->write((uint64_t*)&cgen_var_932, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012949 }
12950 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12951 countingStream->rewind();
12952 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
12953 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
12954 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012955 uint64_t cgen_var_933;
12956 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_933, 1);
12957 stream->write((uint64_t*)&cgen_var_933, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012958 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012959 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012960 uint64_t cgen_var_934 = (uint64_t)(uintptr_t)local_pAllocator;
12961 stream->putBe64(cgen_var_934);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012962 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012963 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012964 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012965 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012966 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012967 uint64_t cgen_var_935;
12968 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_935, 1);
12969 stream->write((uint64_t*)&cgen_var_935, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012970 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012971 uint64_t cgen_var_936;
12972 stream->read((uint64_t*)&cgen_var_936, 8);
12973 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_936, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012974 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
12975 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012976 countingStream->clearPool();
12977 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012978 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012979 mImpl->log("finish vkCreateXcbSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012980 return vkCreateXcbSurfaceKHR_VkResult_return;
12981}
12982
12983VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
12984 VkPhysicalDevice physicalDevice,
12985 uint32_t queueFamilyIndex,
12986 xcb_connection_t* connection,
12987 xcb_visualid_t visual_id)
12988{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012989 mImpl->log("start vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012990 auto stream = mImpl->stream();
12991 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012992 auto resources = mImpl->resources();
12993 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012994 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012995 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012996 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012997 xcb_visualid_t local_visual_id;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012998 local_physicalDevice = physicalDevice;
12999 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013000 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013001 countingStream->rewind();
13002 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013003 uint64_t cgen_var_937;
13004 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
13005 countingStream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013006 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013007 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013008 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013009 }
13010 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13011 countingStream->rewind();
13012 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
13013 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
13014 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013015 uint64_t cgen_var_938;
13016 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_938, 1);
13017 stream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013018 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013019 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013020 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013021 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
13022 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13023 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013024 countingStream->clearPool();
13025 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013026 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013027 mImpl->log("finish vkGetPhysicalDeviceXcbPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013028 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
13029}
13030
13031#endif
13032#ifdef VK_KHR_wayland_surface
13033VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
13034 VkInstance instance,
13035 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
13036 const VkAllocationCallbacks* pAllocator,
13037 VkSurfaceKHR* pSurface)
13038{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013039 mImpl->log("start vkCreateWaylandSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013040 auto stream = mImpl->stream();
13041 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013042 auto resources = mImpl->resources();
13043 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013044 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013045 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013046 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013047 VkAllocationCallbacks* local_pAllocator;
13048 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013049 local_pCreateInfo = nullptr;
13050 if (pCreateInfo)
13051 {
13052 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
13053 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
13054 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013055 local_pAllocator = nullptr;
13056 if (pAllocator)
13057 {
13058 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13059 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13060 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013061 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013062 if (local_pCreateInfo)
13063 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013064 transform_tohost_VkWaylandSurfaceCreateInfoKHR(mImpl->resources(), (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013065 }
13066 if (local_pAllocator)
13067 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013068 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013069 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013070 countingStream->rewind();
13071 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013072 uint64_t cgen_var_939;
13073 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_939, 1);
13074 countingStream->write((uint64_t*)&cgen_var_939, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013075 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013076 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013077 uint64_t cgen_var_940 = (uint64_t)(uintptr_t)local_pAllocator;
13078 countingStream->putBe64(cgen_var_940);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013079 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013080 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013081 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013082 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013083 uint64_t cgen_var_941;
13084 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_941, 1);
13085 countingStream->write((uint64_t*)&cgen_var_941, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013086 }
13087 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13088 countingStream->rewind();
13089 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
13090 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
13091 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013092 uint64_t cgen_var_942;
13093 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_942, 1);
13094 stream->write((uint64_t*)&cgen_var_942, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013095 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013096 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013097 uint64_t cgen_var_943 = (uint64_t)(uintptr_t)local_pAllocator;
13098 stream->putBe64(cgen_var_943);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013099 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013100 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013101 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013102 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013103 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013104 uint64_t cgen_var_944;
13105 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_944, 1);
13106 stream->write((uint64_t*)&cgen_var_944, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013107 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013108 uint64_t cgen_var_945;
13109 stream->read((uint64_t*)&cgen_var_945, 8);
13110 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_945, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013111 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
13112 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013113 countingStream->clearPool();
13114 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013115 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013116 mImpl->log("finish vkCreateWaylandSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013117 return vkCreateWaylandSurfaceKHR_VkResult_return;
13118}
13119
13120VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
13121 VkPhysicalDevice physicalDevice,
13122 uint32_t queueFamilyIndex,
13123 wl_display* display)
13124{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013125 mImpl->log("start vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013126 auto stream = mImpl->stream();
13127 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013128 auto resources = mImpl->resources();
13129 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013130 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013131 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013132 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013133 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013134 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013135 countingStream->rewind();
13136 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013137 uint64_t cgen_var_946;
13138 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
13139 countingStream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013140 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013141 countingStream->write((wl_display*)display, sizeof(wl_display));
13142 }
13143 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13144 countingStream->rewind();
13145 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
13146 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
13147 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013148 uint64_t cgen_var_947;
13149 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_947, 1);
13150 stream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013151 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013152 stream->write((wl_display*)display, sizeof(wl_display));
13153 stream->read((wl_display*)display, sizeof(wl_display));
13154 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13155 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013156 countingStream->clearPool();
13157 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013158 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013159 mImpl->log("finish vkGetPhysicalDeviceWaylandPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013160 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
13161}
13162
13163#endif
13164#ifdef VK_KHR_mir_surface
13165VkResult VkEncoder::vkCreateMirSurfaceKHR(
13166 VkInstance instance,
13167 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
13168 const VkAllocationCallbacks* pAllocator,
13169 VkSurfaceKHR* pSurface)
13170{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013171 mImpl->log("start vkCreateMirSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013172 auto stream = mImpl->stream();
13173 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013174 auto resources = mImpl->resources();
13175 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013176 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013177 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013178 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013179 VkAllocationCallbacks* local_pAllocator;
13180 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013181 local_pCreateInfo = nullptr;
13182 if (pCreateInfo)
13183 {
13184 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
13185 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
13186 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013187 local_pAllocator = nullptr;
13188 if (pAllocator)
13189 {
13190 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13191 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13192 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013193 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013194 if (local_pCreateInfo)
13195 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013196 transform_tohost_VkMirSurfaceCreateInfoKHR(mImpl->resources(), (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013197 }
13198 if (local_pAllocator)
13199 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013200 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013201 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013202 countingStream->rewind();
13203 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013204 uint64_t cgen_var_948;
13205 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_948, 1);
13206 countingStream->write((uint64_t*)&cgen_var_948, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013207 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013208 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013209 uint64_t cgen_var_949 = (uint64_t)(uintptr_t)local_pAllocator;
13210 countingStream->putBe64(cgen_var_949);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013211 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013212 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013213 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013214 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013215 uint64_t cgen_var_950;
13216 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_950, 1);
13217 countingStream->write((uint64_t*)&cgen_var_950, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013218 }
13219 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13220 countingStream->rewind();
13221 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
13222 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
13223 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013224 uint64_t cgen_var_951;
13225 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_951, 1);
13226 stream->write((uint64_t*)&cgen_var_951, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013227 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013228 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013229 uint64_t cgen_var_952 = (uint64_t)(uintptr_t)local_pAllocator;
13230 stream->putBe64(cgen_var_952);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013231 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013232 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013233 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013234 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013235 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013236 uint64_t cgen_var_953;
13237 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_953, 1);
13238 stream->write((uint64_t*)&cgen_var_953, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013239 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013240 uint64_t cgen_var_954;
13241 stream->read((uint64_t*)&cgen_var_954, 8);
13242 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_954, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013243 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
13244 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013245 countingStream->clearPool();
13246 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013247 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013248 mImpl->log("finish vkCreateMirSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013249 return vkCreateMirSurfaceKHR_VkResult_return;
13250}
13251
13252VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
13253 VkPhysicalDevice physicalDevice,
13254 uint32_t queueFamilyIndex,
13255 MirConnection* connection)
13256{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013257 mImpl->log("start vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013258 auto stream = mImpl->stream();
13259 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013260 auto resources = mImpl->resources();
13261 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013262 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013263 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013264 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013265 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013266 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013267 countingStream->rewind();
13268 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013269 uint64_t cgen_var_955;
13270 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_955, 1);
13271 countingStream->write((uint64_t*)&cgen_var_955, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013272 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013273 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
13274 }
13275 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13276 countingStream->rewind();
13277 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
13278 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
13279 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013280 uint64_t cgen_var_956;
13281 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_956, 1);
13282 stream->write((uint64_t*)&cgen_var_956, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013283 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013284 stream->write((MirConnection*)connection, sizeof(MirConnection));
13285 stream->read((MirConnection*)connection, sizeof(MirConnection));
13286 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13287 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013288 countingStream->clearPool();
13289 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013290 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013291 mImpl->log("finish vkGetPhysicalDeviceMirPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013292 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
13293}
13294
13295#endif
13296#ifdef VK_KHR_android_surface
13297VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
13298 VkInstance instance,
13299 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
13300 const VkAllocationCallbacks* pAllocator,
13301 VkSurfaceKHR* pSurface)
13302{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013303 mImpl->log("start vkCreateAndroidSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013304 auto stream = mImpl->stream();
13305 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013306 auto resources = mImpl->resources();
13307 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013308 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013309 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013310 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013311 VkAllocationCallbacks* local_pAllocator;
13312 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013313 local_pCreateInfo = nullptr;
13314 if (pCreateInfo)
13315 {
13316 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
13317 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
13318 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013319 local_pAllocator = nullptr;
13320 if (pAllocator)
13321 {
13322 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13323 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13324 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013325 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013326 if (local_pCreateInfo)
13327 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013328 transform_tohost_VkAndroidSurfaceCreateInfoKHR(mImpl->resources(), (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013329 }
13330 if (local_pAllocator)
13331 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013332 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013333 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013334 countingStream->rewind();
13335 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013336 uint64_t cgen_var_957;
13337 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
13338 countingStream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013339 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013340 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013341 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
13342 countingStream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013343 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013344 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013345 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013346 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013347 uint64_t cgen_var_959;
13348 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
13349 countingStream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013350 }
13351 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13352 countingStream->rewind();
13353 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
13354 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
13355 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013356 uint64_t cgen_var_960;
13357 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_960, 1);
13358 stream->write((uint64_t*)&cgen_var_960, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013359 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013360 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013361 uint64_t cgen_var_961 = (uint64_t)(uintptr_t)local_pAllocator;
13362 stream->putBe64(cgen_var_961);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013363 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013364 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013365 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013366 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013367 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013368 uint64_t cgen_var_962;
13369 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_962, 1);
13370 stream->write((uint64_t*)&cgen_var_962, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013371 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013372 uint64_t cgen_var_963;
13373 stream->read((uint64_t*)&cgen_var_963, 8);
13374 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_963, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013375 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
13376 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013377 countingStream->clearPool();
13378 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013379 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013380 mImpl->log("finish vkCreateAndroidSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013381 return vkCreateAndroidSurfaceKHR_VkResult_return;
13382}
13383
13384#endif
13385#ifdef VK_KHR_win32_surface
13386VkResult VkEncoder::vkCreateWin32SurfaceKHR(
13387 VkInstance instance,
13388 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
13389 const VkAllocationCallbacks* pAllocator,
13390 VkSurfaceKHR* pSurface)
13391{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013392 mImpl->log("start vkCreateWin32SurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013393 auto stream = mImpl->stream();
13394 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013395 auto resources = mImpl->resources();
13396 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013397 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013398 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013399 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013400 VkAllocationCallbacks* local_pAllocator;
13401 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013402 local_pCreateInfo = nullptr;
13403 if (pCreateInfo)
13404 {
13405 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
13406 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
13407 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013408 local_pAllocator = nullptr;
13409 if (pAllocator)
13410 {
13411 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13412 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13413 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013414 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013415 if (local_pCreateInfo)
13416 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013417 transform_tohost_VkWin32SurfaceCreateInfoKHR(mImpl->resources(), (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013418 }
13419 if (local_pAllocator)
13420 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013421 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013422 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013423 countingStream->rewind();
13424 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013425 uint64_t cgen_var_964;
13426 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_964, 1);
13427 countingStream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013428 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013429 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013430 uint64_t cgen_var_965 = (uint64_t)(uintptr_t)local_pAllocator;
13431 countingStream->putBe64(cgen_var_965);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013432 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013433 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013434 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013435 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013436 uint64_t cgen_var_966;
13437 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_966, 1);
13438 countingStream->write((uint64_t*)&cgen_var_966, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013439 }
13440 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13441 countingStream->rewind();
13442 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
13443 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
13444 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013445 uint64_t cgen_var_967;
13446 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_967, 1);
13447 stream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013448 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013449 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013450 uint64_t cgen_var_968 = (uint64_t)(uintptr_t)local_pAllocator;
13451 stream->putBe64(cgen_var_968);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013452 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013453 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013454 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013455 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013456 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013457 uint64_t cgen_var_969;
13458 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_969, 1);
13459 stream->write((uint64_t*)&cgen_var_969, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013460 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013461 uint64_t cgen_var_970;
13462 stream->read((uint64_t*)&cgen_var_970, 8);
13463 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_970, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013464 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
13465 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013466 countingStream->clearPool();
13467 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013468 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013469 mImpl->log("finish vkCreateWin32SurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013470 return vkCreateWin32SurfaceKHR_VkResult_return;
13471}
13472
13473VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
13474 VkPhysicalDevice physicalDevice,
13475 uint32_t queueFamilyIndex)
13476{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013477 mImpl->log("start vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013478 auto stream = mImpl->stream();
13479 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013480 auto resources = mImpl->resources();
13481 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013482 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013483 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013484 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013485 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013486 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013487 countingStream->rewind();
13488 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013489 uint64_t cgen_var_971;
13490 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
13491 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013492 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013493 }
13494 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13495 countingStream->rewind();
13496 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
13497 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
13498 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013499 uint64_t cgen_var_972;
13500 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_972, 1);
13501 stream->write((uint64_t*)&cgen_var_972, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013502 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013503 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
13504 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013505 countingStream->clearPool();
13506 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013507 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013508 mImpl->log("finish vkGetPhysicalDeviceWin32PresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013509 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
13510}
13511
13512#endif
13513#ifdef VK_KHR_sampler_mirror_clamp_to_edge
13514#endif
13515#ifdef VK_KHR_multiview
13516#endif
13517#ifdef VK_KHR_get_physical_device_properties2
13518void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
13519 VkPhysicalDevice physicalDevice,
13520 VkPhysicalDeviceFeatures2* pFeatures)
13521{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013522 mImpl->log("start vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013523 auto stream = mImpl->stream();
13524 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013525 auto resources = mImpl->resources();
13526 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013527 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013528 VkPhysicalDevice local_physicalDevice;
13529 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013530 countingStream->rewind();
13531 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013532 uint64_t cgen_var_973;
13533 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_973, 1);
13534 countingStream->write((uint64_t*)&cgen_var_973, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013535 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
13536 }
13537 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13538 countingStream->rewind();
13539 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
13540 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
13541 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013542 uint64_t cgen_var_974;
13543 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
13544 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013545 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
13546 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013547 if (pFeatures)
13548 {
13549 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
13550 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013551 mImpl->log("finish vkGetPhysicalDeviceFeatures2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013552}
13553
13554void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
13555 VkPhysicalDevice physicalDevice,
13556 VkPhysicalDeviceProperties2* pProperties)
13557{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013558 mImpl->log("start vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013559 auto stream = mImpl->stream();
13560 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013561 auto resources = mImpl->resources();
13562 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013563 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013564 VkPhysicalDevice local_physicalDevice;
13565 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013566 countingStream->rewind();
13567 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013568 uint64_t cgen_var_975;
13569 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_975, 1);
13570 countingStream->write((uint64_t*)&cgen_var_975, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013571 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
13572 }
13573 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13574 countingStream->rewind();
13575 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
13576 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
13577 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013578 uint64_t cgen_var_976;
13579 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_976, 1);
13580 stream->write((uint64_t*)&cgen_var_976, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013581 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
13582 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013583 if (pProperties)
13584 {
13585 transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
13586 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013587 mImpl->log("finish vkGetPhysicalDeviceProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013588}
13589
13590void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
13591 VkPhysicalDevice physicalDevice,
13592 VkFormat format,
13593 VkFormatProperties2* pFormatProperties)
13594{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013595 mImpl->log("start vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013596 auto stream = mImpl->stream();
13597 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013598 auto resources = mImpl->resources();
13599 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013600 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013601 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013602 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013603 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013604 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013605 countingStream->rewind();
13606 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013607 uint64_t cgen_var_977;
13608 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_977, 1);
13609 countingStream->write((uint64_t*)&cgen_var_977, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013610 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013611 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
13612 }
13613 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13614 countingStream->rewind();
13615 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
13616 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
13617 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013618 uint64_t cgen_var_978;
13619 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_978, 1);
13620 stream->write((uint64_t*)&cgen_var_978, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013621 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013622 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
13623 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013624 if (pFormatProperties)
13625 {
13626 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
13627 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013628 mImpl->log("finish vkGetPhysicalDeviceFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013629}
13630
13631VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
13632 VkPhysicalDevice physicalDevice,
13633 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
13634 VkImageFormatProperties2* pImageFormatProperties)
13635{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013636 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013637 auto stream = mImpl->stream();
13638 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013639 auto resources = mImpl->resources();
13640 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013641 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013642 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013643 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013644 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013645 local_pImageFormatInfo = nullptr;
13646 if (pImageFormatInfo)
13647 {
13648 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
13649 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
13650 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013651 if (local_pImageFormatInfo)
13652 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013653 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013654 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013655 countingStream->rewind();
13656 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013657 uint64_t cgen_var_979;
13658 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
13659 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013660 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013661 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
13662 }
13663 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13664 countingStream->rewind();
13665 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
13666 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
13667 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013668 uint64_t cgen_var_980;
13669 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
13670 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013671 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013672 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
13673 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013674 if (pImageFormatProperties)
13675 {
13676 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
13677 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013678 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
13679 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013680 countingStream->clearPool();
13681 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013682 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013683 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013684 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
13685}
13686
13687void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
13688 VkPhysicalDevice physicalDevice,
13689 uint32_t* pQueueFamilyPropertyCount,
13690 VkQueueFamilyProperties2* pQueueFamilyProperties)
13691{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013692 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013693 auto stream = mImpl->stream();
13694 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013695 auto resources = mImpl->resources();
13696 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013697 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013698 VkPhysicalDevice local_physicalDevice;
13699 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013700 countingStream->rewind();
13701 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013702 uint64_t cgen_var_981;
13703 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
13704 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013705 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013706 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
13707 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013708 if (pQueueFamilyPropertyCount)
13709 {
13710 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13711 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013712 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013713 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
13714 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013715 if (pQueueFamilyProperties)
13716 {
13717 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13718 {
13719 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13720 }
13721 }
13722 }
13723 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13724 countingStream->rewind();
13725 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
13726 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
13727 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013728 uint64_t cgen_var_984;
13729 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
13730 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013731 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013732 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
13733 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013734 if (pQueueFamilyPropertyCount)
13735 {
13736 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13737 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013738 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013739 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
13740 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013741 if (pQueueFamilyProperties)
13742 {
13743 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13744 {
13745 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13746 }
13747 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013748 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013749 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013750 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013751 if (pQueueFamilyPropertyCount)
13752 {
13753 if (!(check_pQueueFamilyPropertyCount))
13754 {
13755 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
13756 }
13757 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13758 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013759 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013760 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013761 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013762 if (pQueueFamilyProperties)
13763 {
13764 if (!(check_pQueueFamilyProperties))
13765 {
13766 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
13767 }
13768 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13769 {
13770 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13771 }
13772 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080013773 if (pQueueFamilyProperties)
13774 {
13775 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13776 {
13777 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13778 }
13779 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013780 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013781}
13782
13783void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
13784 VkPhysicalDevice physicalDevice,
13785 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
13786{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013787 mImpl->log("start vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013788 auto stream = mImpl->stream();
13789 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013790 auto resources = mImpl->resources();
13791 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013792 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013793 VkPhysicalDevice local_physicalDevice;
13794 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013795 countingStream->rewind();
13796 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013797 uint64_t cgen_var_989;
13798 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_989, 1);
13799 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013800 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13801 }
13802 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13803 countingStream->rewind();
13804 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
13805 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
13806 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013807 uint64_t cgen_var_990;
13808 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_990, 1);
13809 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013810 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13811 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013812 if (pMemoryProperties)
13813 {
13814 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13815 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013816 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2KHR(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013817 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013818}
13819
13820void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
13821 VkPhysicalDevice physicalDevice,
13822 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
13823 uint32_t* pPropertyCount,
13824 VkSparseImageFormatProperties2* pProperties)
13825{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013826 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013827 auto stream = mImpl->stream();
13828 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013829 auto resources = mImpl->resources();
13830 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013831 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013832 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013833 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013834 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013835 local_pFormatInfo = nullptr;
13836 if (pFormatInfo)
13837 {
13838 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
13839 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
13840 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013841 if (local_pFormatInfo)
13842 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013843 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013844 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013845 countingStream->rewind();
13846 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013847 uint64_t cgen_var_991;
13848 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_991, 1);
13849 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013850 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013851 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013852 uint64_t cgen_var_992 = (uint64_t)(uintptr_t)pPropertyCount;
13853 countingStream->putBe64(cgen_var_992);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013854 if (pPropertyCount)
13855 {
13856 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13857 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013858 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013859 uint64_t cgen_var_993 = (uint64_t)(uintptr_t)pProperties;
13860 countingStream->putBe64(cgen_var_993);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013861 if (pProperties)
13862 {
13863 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13864 {
13865 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
13866 }
13867 }
13868 }
13869 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13870 countingStream->rewind();
13871 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
13872 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
13873 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013874 uint64_t cgen_var_994;
13875 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_994, 1);
13876 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013877 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013878 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013879 uint64_t cgen_var_995 = (uint64_t)(uintptr_t)pPropertyCount;
13880 stream->putBe64(cgen_var_995);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013881 if (pPropertyCount)
13882 {
13883 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13884 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013885 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013886 uint64_t cgen_var_996 = (uint64_t)(uintptr_t)pProperties;
13887 stream->putBe64(cgen_var_996);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013888 if (pProperties)
13889 {
13890 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13891 {
13892 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13893 }
13894 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013895 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013896 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013897 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013898 if (pPropertyCount)
13899 {
13900 if (!(check_pPropertyCount))
13901 {
13902 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
13903 }
13904 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
13905 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013906 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013907 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013908 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013909 if (pProperties)
13910 {
13911 if (!(check_pProperties))
13912 {
13913 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
13914 }
13915 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13916 {
13917 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13918 }
13919 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080013920 if (pProperties)
13921 {
13922 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13923 {
13924 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
13925 }
13926 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013927 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013928}
13929
13930#endif
13931#ifdef VK_KHR_device_group
13932void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
13933 VkDevice device,
13934 uint32_t heapIndex,
13935 uint32_t localDeviceIndex,
13936 uint32_t remoteDeviceIndex,
13937 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
13938{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013939 mImpl->log("start vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013940 auto stream = mImpl->stream();
13941 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013942 auto resources = mImpl->resources();
13943 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013944 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013945 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013946 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013947 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013948 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013949 local_device = device;
13950 local_heapIndex = heapIndex;
13951 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013952 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013953 countingStream->rewind();
13954 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013955 uint64_t cgen_var_999;
13956 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_999, 1);
13957 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013958 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13959 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13960 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013961 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13962 }
13963 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13964 countingStream->rewind();
13965 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
13966 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
13967 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013968 uint64_t cgen_var_1000;
13969 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1000, 1);
13970 stream->write((uint64_t*)&cgen_var_1000, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013971 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13972 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13973 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013974 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13975 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013976 mImpl->log("finish vkGetDeviceGroupPeerMemoryFeaturesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013977}
13978
13979void VkEncoder::vkCmdSetDeviceMaskKHR(
13980 VkCommandBuffer commandBuffer,
13981 uint32_t deviceMask)
13982{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013983 mImpl->log("start vkCmdSetDeviceMaskKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013984 auto stream = mImpl->stream();
13985 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013986 auto resources = mImpl->resources();
13987 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013988 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013989 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013990 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013991 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013992 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013993 countingStream->rewind();
13994 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013995 uint64_t cgen_var_1001;
13996 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1001, 1);
13997 countingStream->write((uint64_t*)&cgen_var_1001, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013998 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013999 }
14000 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14001 countingStream->rewind();
14002 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
14003 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
14004 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014005 uint64_t cgen_var_1002;
14006 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1002, 1);
14007 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014008 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014009 mImpl->log("finish vkCmdSetDeviceMaskKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014010}
14011
14012void VkEncoder::vkCmdDispatchBaseKHR(
14013 VkCommandBuffer commandBuffer,
14014 uint32_t baseGroupX,
14015 uint32_t baseGroupY,
14016 uint32_t baseGroupZ,
14017 uint32_t groupCountX,
14018 uint32_t groupCountY,
14019 uint32_t groupCountZ)
14020{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014021 mImpl->log("start vkCmdDispatchBaseKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014022 auto stream = mImpl->stream();
14023 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014024 auto resources = mImpl->resources();
14025 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014026 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014027 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014028 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014029 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014030 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014031 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014032 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014033 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014034 local_commandBuffer = commandBuffer;
14035 local_baseGroupX = baseGroupX;
14036 local_baseGroupY = baseGroupY;
14037 local_baseGroupZ = baseGroupZ;
14038 local_groupCountX = groupCountX;
14039 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014040 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014041 countingStream->rewind();
14042 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014043 uint64_t cgen_var_1003;
14044 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1003, 1);
14045 countingStream->write((uint64_t*)&cgen_var_1003, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014046 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14047 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14048 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14049 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14050 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14051 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014052 }
14053 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14054 countingStream->rewind();
14055 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
14056 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
14057 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014058 uint64_t cgen_var_1004;
14059 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1004, 1);
14060 stream->write((uint64_t*)&cgen_var_1004, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014061 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14062 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14063 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14064 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14065 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14066 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014067 mImpl->log("finish vkCmdDispatchBaseKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014068}
14069
14070#endif
14071#ifdef VK_KHR_shader_draw_parameters
14072#endif
14073#ifdef VK_KHR_maintenance1
14074void VkEncoder::vkTrimCommandPoolKHR(
14075 VkDevice device,
14076 VkCommandPool commandPool,
14077 VkCommandPoolTrimFlags flags)
14078{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014079 mImpl->log("start vkTrimCommandPoolKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014080 auto stream = mImpl->stream();
14081 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014082 auto resources = mImpl->resources();
14083 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014084 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014085 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014086 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014087 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014088 local_device = device;
14089 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014090 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014091 countingStream->rewind();
14092 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014093 uint64_t cgen_var_1005;
14094 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1005, 1);
14095 countingStream->write((uint64_t*)&cgen_var_1005, 1 * 8);
14096 uint64_t cgen_var_1006;
14097 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1006, 1);
14098 countingStream->write((uint64_t*)&cgen_var_1006, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014099 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014100 }
14101 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14102 countingStream->rewind();
14103 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
14104 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
14105 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014106 uint64_t cgen_var_1007;
14107 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1007, 1);
14108 stream->write((uint64_t*)&cgen_var_1007, 1 * 8);
14109 uint64_t cgen_var_1008;
14110 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1008, 1);
14111 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014112 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014113 mImpl->log("finish vkTrimCommandPoolKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014114}
14115
14116#endif
14117#ifdef VK_KHR_device_group_creation
14118VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
14119 VkInstance instance,
14120 uint32_t* pPhysicalDeviceGroupCount,
14121 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
14122{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014123 mImpl->log("start vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014124 auto stream = mImpl->stream();
14125 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014126 auto resources = mImpl->resources();
14127 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014128 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014129 VkInstance local_instance;
14130 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014131 countingStream->rewind();
14132 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014133 uint64_t cgen_var_1009;
14134 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1009, 1);
14135 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014136 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014137 uint64_t cgen_var_1010 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14138 countingStream->putBe64(cgen_var_1010);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014139 if (pPhysicalDeviceGroupCount)
14140 {
14141 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14142 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014143 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014144 uint64_t cgen_var_1011 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14145 countingStream->putBe64(cgen_var_1011);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014146 if (pPhysicalDeviceGroupProperties)
14147 {
14148 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14149 {
14150 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14151 }
14152 }
14153 }
14154 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14155 countingStream->rewind();
14156 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
14157 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
14158 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014159 uint64_t cgen_var_1012;
14160 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1012, 1);
14161 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014162 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014163 uint64_t cgen_var_1013 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14164 stream->putBe64(cgen_var_1013);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014165 if (pPhysicalDeviceGroupCount)
14166 {
14167 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14168 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014169 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014170 uint64_t cgen_var_1014 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14171 stream->putBe64(cgen_var_1014);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014172 if (pPhysicalDeviceGroupProperties)
14173 {
14174 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14175 {
14176 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14177 }
14178 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014179 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014180 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014181 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014182 if (pPhysicalDeviceGroupCount)
14183 {
14184 if (!(check_pPhysicalDeviceGroupCount))
14185 {
14186 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
14187 }
14188 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14189 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014190 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014191 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014192 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014193 if (pPhysicalDeviceGroupProperties)
14194 {
14195 if (!(check_pPhysicalDeviceGroupProperties))
14196 {
14197 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
14198 }
14199 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14200 {
14201 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14202 }
14203 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080014204 if (pPhysicalDeviceGroupProperties)
14205 {
14206 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14207 {
14208 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14209 }
14210 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014211 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
14212 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014213 countingStream->clearPool();
14214 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014215 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014216 mImpl->log("finish vkEnumeratePhysicalDeviceGroupsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014217 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
14218}
14219
14220#endif
14221#ifdef VK_KHR_external_memory_capabilities
14222void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
14223 VkPhysicalDevice physicalDevice,
14224 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
14225 VkExternalBufferProperties* pExternalBufferProperties)
14226{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014227 mImpl->log("start vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014228 auto stream = mImpl->stream();
14229 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014230 auto resources = mImpl->resources();
14231 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014232 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014233 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014234 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014235 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014236 local_pExternalBufferInfo = nullptr;
14237 if (pExternalBufferInfo)
14238 {
14239 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
14240 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
14241 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014242 if (local_pExternalBufferInfo)
14243 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014244 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014245 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014246 countingStream->rewind();
14247 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014248 uint64_t cgen_var_1017;
14249 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
14250 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014251 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014252 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14253 }
14254 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14255 countingStream->rewind();
14256 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
14257 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
14258 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014259 uint64_t cgen_var_1018;
14260 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
14261 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014262 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014263 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14264 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014265 if (pExternalBufferProperties)
14266 {
14267 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
14268 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014269 mImpl->log("finish vkGetPhysicalDeviceExternalBufferPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014270}
14271
14272#endif
14273#ifdef VK_KHR_external_memory
14274#endif
14275#ifdef VK_KHR_external_memory_win32
14276VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
14277 VkDevice device,
14278 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14279 HANDLE* pHandle)
14280{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014281 mImpl->log("start vkGetMemoryWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014282 auto stream = mImpl->stream();
14283 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014284 auto resources = mImpl->resources();
14285 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014286 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014287 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014288 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014289 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014290 local_pGetWin32HandleInfo = nullptr;
14291 if (pGetWin32HandleInfo)
14292 {
14293 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
14294 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14295 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014296 if (local_pGetWin32HandleInfo)
14297 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014298 transform_tohost_VkMemoryGetWin32HandleInfoKHR(mImpl->resources(), (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014299 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014300 countingStream->rewind();
14301 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014302 uint64_t cgen_var_1019;
14303 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
14304 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014305 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014306 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14307 }
14308 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14309 countingStream->rewind();
14310 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
14311 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
14312 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014313 uint64_t cgen_var_1020;
14314 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
14315 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014316 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014317 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14318 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14319 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
14320 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014321 countingStream->clearPool();
14322 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014323 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014324 mImpl->log("finish vkGetMemoryWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014325 return vkGetMemoryWin32HandleKHR_VkResult_return;
14326}
14327
14328VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
14329 VkDevice device,
14330 VkExternalMemoryHandleTypeFlagBits handleType,
14331 HANDLE handle,
14332 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
14333{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014334 mImpl->log("start vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014335 auto stream = mImpl->stream();
14336 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014337 auto resources = mImpl->resources();
14338 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014339 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014340 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014341 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014342 HANDLE local_handle;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014343 local_device = device;
14344 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014345 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014346 countingStream->rewind();
14347 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014348 uint64_t cgen_var_1021;
14349 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
14350 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014351 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14352 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014353 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14354 }
14355 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14356 countingStream->rewind();
14357 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
14358 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
14359 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014360 uint64_t cgen_var_1022;
14361 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
14362 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014363 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14364 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014365 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14366 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014367 if (pMemoryWin32HandleProperties)
14368 {
14369 transform_fromhost_VkMemoryWin32HandlePropertiesKHR(mImpl->resources(), (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14370 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014371 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
14372 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014373 countingStream->clearPool();
14374 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014375 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014376 mImpl->log("finish vkGetMemoryWin32HandlePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014377 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
14378}
14379
14380#endif
14381#ifdef VK_KHR_external_memory_fd
14382VkResult VkEncoder::vkGetMemoryFdKHR(
14383 VkDevice device,
14384 const VkMemoryGetFdInfoKHR* pGetFdInfo,
14385 int* pFd)
14386{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014387 mImpl->log("start vkGetMemoryFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014388 auto stream = mImpl->stream();
14389 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014390 auto resources = mImpl->resources();
14391 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014392 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014393 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014394 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014395 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014396 local_pGetFdInfo = nullptr;
14397 if (pGetFdInfo)
14398 {
14399 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
14400 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
14401 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014402 if (local_pGetFdInfo)
14403 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014404 transform_tohost_VkMemoryGetFdInfoKHR(mImpl->resources(), (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014405 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014406 countingStream->rewind();
14407 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014408 uint64_t cgen_var_1023;
14409 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
14410 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014411 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014412 countingStream->write((int*)pFd, sizeof(int));
14413 }
14414 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14415 countingStream->rewind();
14416 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
14417 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
14418 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014419 uint64_t cgen_var_1024;
14420 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
14421 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014422 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014423 stream->write((int*)pFd, sizeof(int));
14424 stream->read((int*)pFd, sizeof(int));
14425 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
14426 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014427 countingStream->clearPool();
14428 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014429 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014430 mImpl->log("finish vkGetMemoryFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014431 return vkGetMemoryFdKHR_VkResult_return;
14432}
14433
14434VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
14435 VkDevice device,
14436 VkExternalMemoryHandleTypeFlagBits handleType,
14437 int fd,
14438 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
14439{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014440 mImpl->log("start vkGetMemoryFdPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014441 auto stream = mImpl->stream();
14442 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014443 auto resources = mImpl->resources();
14444 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014445 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014446 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014447 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014448 int local_fd;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014449 local_device = device;
14450 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014451 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014452 countingStream->rewind();
14453 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014454 uint64_t cgen_var_1025;
14455 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
14456 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014457 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14458 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014459 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14460 }
14461 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14462 countingStream->rewind();
14463 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
14464 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
14465 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014466 uint64_t cgen_var_1026;
14467 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
14468 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014469 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14470 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014471 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14472 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014473 if (pMemoryFdProperties)
14474 {
14475 transform_fromhost_VkMemoryFdPropertiesKHR(mImpl->resources(), (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14476 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014477 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
14478 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014479 countingStream->clearPool();
14480 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014481 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014482 mImpl->log("finish vkGetMemoryFdPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014483 return vkGetMemoryFdPropertiesKHR_VkResult_return;
14484}
14485
14486#endif
14487#ifdef VK_KHR_win32_keyed_mutex
14488#endif
14489#ifdef VK_KHR_external_semaphore_capabilities
14490void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
14491 VkPhysicalDevice physicalDevice,
14492 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
14493 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
14494{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014495 mImpl->log("start vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014496 auto stream = mImpl->stream();
14497 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014498 auto resources = mImpl->resources();
14499 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014500 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014501 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014502 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014503 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014504 local_pExternalSemaphoreInfo = nullptr;
14505 if (pExternalSemaphoreInfo)
14506 {
14507 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
14508 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
14509 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014510 if (local_pExternalSemaphoreInfo)
14511 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014512 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014513 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014514 countingStream->rewind();
14515 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014516 uint64_t cgen_var_1027;
14517 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1027, 1);
14518 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014519 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014520 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14521 }
14522 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14523 countingStream->rewind();
14524 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
14525 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
14526 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014527 uint64_t cgen_var_1028;
14528 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1028, 1);
14529 stream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014530 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014531 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14532 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014533 if (pExternalSemaphoreProperties)
14534 {
14535 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14536 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014537 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014538}
14539
14540#endif
14541#ifdef VK_KHR_external_semaphore
14542#endif
14543#ifdef VK_KHR_external_semaphore_win32
14544VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
14545 VkDevice device,
14546 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
14547{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014548 mImpl->log("start vkImportSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014549 auto stream = mImpl->stream();
14550 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014551 auto resources = mImpl->resources();
14552 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014553 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014554 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014555 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014556 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014557 local_pImportSemaphoreWin32HandleInfo = nullptr;
14558 if (pImportSemaphoreWin32HandleInfo)
14559 {
14560 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
14561 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
14562 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014563 if (local_pImportSemaphoreWin32HandleInfo)
14564 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014565 transform_tohost_VkImportSemaphoreWin32HandleInfoKHR(mImpl->resources(), (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014566 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014567 countingStream->rewind();
14568 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014569 uint64_t cgen_var_1029;
14570 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1029, 1);
14571 countingStream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014572 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014573 }
14574 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14575 countingStream->rewind();
14576 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
14577 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
14578 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014579 uint64_t cgen_var_1030;
14580 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1030, 1);
14581 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014582 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014583 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
14584 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014585 countingStream->clearPool();
14586 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014587 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014588 mImpl->log("finish vkImportSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014589 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
14590}
14591
14592VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
14593 VkDevice device,
14594 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14595 HANDLE* pHandle)
14596{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014597 mImpl->log("start vkGetSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014598 auto stream = mImpl->stream();
14599 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014600 auto resources = mImpl->resources();
14601 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014602 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014603 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014604 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014605 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014606 local_pGetWin32HandleInfo = nullptr;
14607 if (pGetWin32HandleInfo)
14608 {
14609 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
14610 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14611 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014612 if (local_pGetWin32HandleInfo)
14613 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014614 transform_tohost_VkSemaphoreGetWin32HandleInfoKHR(mImpl->resources(), (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014615 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014616 countingStream->rewind();
14617 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014618 uint64_t cgen_var_1031;
14619 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1031, 1);
14620 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014621 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014622 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14623 }
14624 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14625 countingStream->rewind();
14626 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
14627 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
14628 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014629 uint64_t cgen_var_1032;
14630 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1032, 1);
14631 stream->write((uint64_t*)&cgen_var_1032, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014632 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014633 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14634 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14635 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
14636 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014637 countingStream->clearPool();
14638 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014639 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014640 mImpl->log("finish vkGetSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014641 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
14642}
14643
14644#endif
14645#ifdef VK_KHR_external_semaphore_fd
14646VkResult VkEncoder::vkImportSemaphoreFdKHR(
14647 VkDevice device,
14648 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
14649{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014650 mImpl->log("start vkImportSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014651 auto stream = mImpl->stream();
14652 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014653 auto resources = mImpl->resources();
14654 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014655 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014656 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014657 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014658 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014659 local_pImportSemaphoreFdInfo = nullptr;
14660 if (pImportSemaphoreFdInfo)
14661 {
14662 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
14663 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
14664 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014665 if (local_pImportSemaphoreFdInfo)
14666 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014667 transform_tohost_VkImportSemaphoreFdInfoKHR(mImpl->resources(), (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014668 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014669 countingStream->rewind();
14670 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014671 uint64_t cgen_var_1033;
14672 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1033, 1);
14673 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014674 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014675 }
14676 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14677 countingStream->rewind();
14678 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
14679 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
14680 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014681 uint64_t cgen_var_1034;
14682 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1034, 1);
14683 stream->write((uint64_t*)&cgen_var_1034, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014684 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014685 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
14686 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014687 countingStream->clearPool();
14688 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014689 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014690 mImpl->log("finish vkImportSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014691 return vkImportSemaphoreFdKHR_VkResult_return;
14692}
14693
14694VkResult VkEncoder::vkGetSemaphoreFdKHR(
14695 VkDevice device,
14696 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
14697 int* pFd)
14698{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014699 mImpl->log("start vkGetSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014700 auto stream = mImpl->stream();
14701 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014702 auto resources = mImpl->resources();
14703 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014704 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014705 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014706 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014707 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014708 local_pGetFdInfo = nullptr;
14709 if (pGetFdInfo)
14710 {
14711 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
14712 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
14713 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014714 if (local_pGetFdInfo)
14715 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014716 transform_tohost_VkSemaphoreGetFdInfoKHR(mImpl->resources(), (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014717 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014718 countingStream->rewind();
14719 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014720 uint64_t cgen_var_1035;
14721 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1035, 1);
14722 countingStream->write((uint64_t*)&cgen_var_1035, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014723 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014724 countingStream->write((int*)pFd, sizeof(int));
14725 }
14726 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14727 countingStream->rewind();
14728 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
14729 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
14730 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014731 uint64_t cgen_var_1036;
14732 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1036, 1);
14733 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014734 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014735 stream->write((int*)pFd, sizeof(int));
14736 stream->read((int*)pFd, sizeof(int));
14737 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
14738 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014739 countingStream->clearPool();
14740 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014741 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014742 mImpl->log("finish vkGetSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014743 return vkGetSemaphoreFdKHR_VkResult_return;
14744}
14745
14746#endif
14747#ifdef VK_KHR_push_descriptor
14748void VkEncoder::vkCmdPushDescriptorSetKHR(
14749 VkCommandBuffer commandBuffer,
14750 VkPipelineBindPoint pipelineBindPoint,
14751 VkPipelineLayout layout,
14752 uint32_t set,
14753 uint32_t descriptorWriteCount,
14754 const VkWriteDescriptorSet* pDescriptorWrites)
14755{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014756 mImpl->log("start vkCmdPushDescriptorSetKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014757 auto stream = mImpl->stream();
14758 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014759 auto resources = mImpl->resources();
14760 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014761 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014762 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014763 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014764 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014765 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014766 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014767 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014768 local_commandBuffer = commandBuffer;
14769 local_pipelineBindPoint = pipelineBindPoint;
14770 local_layout = layout;
14771 local_set = set;
14772 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014773 local_pDescriptorWrites = nullptr;
14774 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014775 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014776 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014777 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14778 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014779 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
14780 }
14781 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014782 if (local_pDescriptorWrites)
14783 {
14784 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14785 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014786 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014787 }
14788 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014789 countingStream->rewind();
14790 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014791 uint64_t cgen_var_1037;
14792 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1037, 1);
14793 countingStream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014794 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014795 uint64_t cgen_var_1038;
14796 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1038, 1);
14797 countingStream->write((uint64_t*)&cgen_var_1038, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014798 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
14799 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
14800 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14801 {
14802 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014803 }
14804 }
14805 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14806 countingStream->rewind();
14807 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
14808 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
14809 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014810 uint64_t cgen_var_1039;
14811 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1039, 1);
14812 stream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014813 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014814 uint64_t cgen_var_1040;
14815 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1040, 1);
14816 stream->write((uint64_t*)&cgen_var_1040, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014817 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
14818 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014819 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14820 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014821 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014822 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014823 mImpl->log("finish vkCmdPushDescriptorSetKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014824}
14825
14826void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
14827 VkCommandBuffer commandBuffer,
14828 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14829 VkPipelineLayout layout,
14830 uint32_t set,
14831 const void* pData)
14832{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014833 mImpl->log("start vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014834 auto stream = mImpl->stream();
14835 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014836 auto resources = mImpl->resources();
14837 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014838 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014839 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014840 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014841 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014842 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014843 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014844 local_commandBuffer = commandBuffer;
14845 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
14846 local_layout = layout;
14847 local_set = set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014848 local_pData = nullptr;
14849 if (pData)
14850 {
14851 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
14852 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014853 countingStream->rewind();
14854 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014855 uint64_t cgen_var_1041;
14856 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1041, 1);
14857 countingStream->write((uint64_t*)&cgen_var_1041, 1 * 8);
14858 uint64_t cgen_var_1042;
14859 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1042, 1);
14860 countingStream->write((uint64_t*)&cgen_var_1042, 1 * 8);
14861 uint64_t cgen_var_1043;
14862 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1043, 1);
14863 countingStream->write((uint64_t*)&cgen_var_1043, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014864 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014865 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014866 uint64_t cgen_var_1044 = (uint64_t)(uintptr_t)local_pData;
14867 countingStream->putBe64(cgen_var_1044);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014868 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014869 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014870 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014871 }
14872 }
14873 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14874 countingStream->rewind();
14875 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
14876 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
14877 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014878 uint64_t cgen_var_1045;
14879 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1045, 1);
14880 stream->write((uint64_t*)&cgen_var_1045, 1 * 8);
14881 uint64_t cgen_var_1046;
14882 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1046, 1);
14883 stream->write((uint64_t*)&cgen_var_1046, 1 * 8);
14884 uint64_t cgen_var_1047;
14885 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1047, 1);
14886 stream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014887 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014888 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014889 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pData;
14890 stream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014891 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014892 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014893 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014894 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014895 mImpl->log("finish vkCmdPushDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014896}
14897
14898#endif
14899#ifdef VK_KHR_16bit_storage
14900#endif
14901#ifdef VK_KHR_incremental_present
14902#endif
14903#ifdef VK_KHR_descriptor_update_template
14904VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
14905 VkDevice device,
14906 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
14907 const VkAllocationCallbacks* pAllocator,
14908 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
14909{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014910 mImpl->log("start vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014911 auto stream = mImpl->stream();
14912 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014913 auto resources = mImpl->resources();
14914 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014915 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014916 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014917 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014918 VkAllocationCallbacks* local_pAllocator;
14919 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014920 local_pCreateInfo = nullptr;
14921 if (pCreateInfo)
14922 {
14923 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
14924 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
14925 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014926 local_pAllocator = nullptr;
14927 if (pAllocator)
14928 {
14929 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14930 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14931 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014932 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014933 if (local_pCreateInfo)
14934 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014935 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014936 }
14937 if (local_pAllocator)
14938 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014939 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014940 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014941 countingStream->rewind();
14942 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014943 uint64_t cgen_var_1049;
14944 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
14945 countingStream->write((uint64_t*)&cgen_var_1049, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014946 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014947 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014948 uint64_t cgen_var_1050 = (uint64_t)(uintptr_t)local_pAllocator;
14949 countingStream->putBe64(cgen_var_1050);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014950 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014951 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014952 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014953 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014954 uint64_t cgen_var_1051;
14955 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1051, 1);
14956 countingStream->write((uint64_t*)&cgen_var_1051, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014957 }
14958 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14959 countingStream->rewind();
14960 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
14961 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
14962 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014963 uint64_t cgen_var_1052;
14964 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
14965 stream->write((uint64_t*)&cgen_var_1052, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014966 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014967 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014968 uint64_t cgen_var_1053 = (uint64_t)(uintptr_t)local_pAllocator;
14969 stream->putBe64(cgen_var_1053);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014970 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014971 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014972 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014973 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014974 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014975 uint64_t cgen_var_1054;
14976 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1054, 1);
14977 stream->write((uint64_t*)&cgen_var_1054, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014978 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014979 uint64_t cgen_var_1055;
14980 stream->read((uint64_t*)&cgen_var_1055, 8);
14981 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1055, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014982 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
14983 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014984 countingStream->clearPool();
14985 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014986 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014987 mImpl->log("finish vkCreateDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014988 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
14989}
14990
14991void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
14992 VkDevice device,
14993 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14994 const VkAllocationCallbacks* pAllocator)
14995{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014996 mImpl->log("start vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014997 auto stream = mImpl->stream();
14998 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014999 auto resources = mImpl->resources();
15000 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015001 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015002 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015003 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015004 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015005 local_device = device;
15006 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015007 local_pAllocator = nullptr;
15008 if (pAllocator)
15009 {
15010 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15011 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15012 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015013 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015014 if (local_pAllocator)
15015 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015016 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015017 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015018 countingStream->rewind();
15019 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015020 uint64_t cgen_var_1056;
15021 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
15022 countingStream->write((uint64_t*)&cgen_var_1056, 1 * 8);
15023 uint64_t cgen_var_1057;
15024 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1057, 1);
15025 countingStream->write((uint64_t*)&cgen_var_1057, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015026 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015027 uint64_t cgen_var_1058 = (uint64_t)(uintptr_t)local_pAllocator;
15028 countingStream->putBe64(cgen_var_1058);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015029 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015030 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015031 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015032 }
15033 }
15034 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15035 countingStream->rewind();
15036 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
15037 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
15038 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015039 uint64_t cgen_var_1059;
15040 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1059, 1);
15041 stream->write((uint64_t*)&cgen_var_1059, 1 * 8);
15042 uint64_t cgen_var_1060;
15043 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1060, 1);
15044 stream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015045 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015046 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
15047 stream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015048 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015049 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015050 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015051 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015052 mImpl->log("finish vkDestroyDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015053}
15054
15055void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
15056 VkDevice device,
15057 VkDescriptorSet descriptorSet,
15058 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15059 const void* pData)
15060{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015061 mImpl->log("start vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015062 auto stream = mImpl->stream();
15063 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015064 auto resources = mImpl->resources();
15065 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015066 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015067 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015068 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015069 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015070 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015071 local_device = device;
15072 local_descriptorSet = descriptorSet;
15073 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015074 local_pData = nullptr;
15075 if (pData)
15076 {
15077 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
15078 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015079 countingStream->rewind();
15080 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015081 uint64_t cgen_var_1062;
15082 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1062, 1);
15083 countingStream->write((uint64_t*)&cgen_var_1062, 1 * 8);
15084 uint64_t cgen_var_1063;
15085 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1063, 1);
15086 countingStream->write((uint64_t*)&cgen_var_1063, 1 * 8);
15087 uint64_t cgen_var_1064;
15088 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1064, 1);
15089 countingStream->write((uint64_t*)&cgen_var_1064, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015090 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015091 uint64_t cgen_var_1065 = (uint64_t)(uintptr_t)local_pData;
15092 countingStream->putBe64(cgen_var_1065);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015093 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015094 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015095 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015096 }
15097 }
15098 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15099 countingStream->rewind();
15100 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
15101 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
15102 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015103 uint64_t cgen_var_1066;
15104 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1066, 1);
15105 stream->write((uint64_t*)&cgen_var_1066, 1 * 8);
15106 uint64_t cgen_var_1067;
15107 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1067, 1);
15108 stream->write((uint64_t*)&cgen_var_1067, 1 * 8);
15109 uint64_t cgen_var_1068;
15110 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1068, 1);
15111 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015112 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015113 uint64_t cgen_var_1069 = (uint64_t)(uintptr_t)local_pData;
15114 stream->putBe64(cgen_var_1069);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015115 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015116 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015117 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015118 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015119 mImpl->log("finish vkUpdateDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015120}
15121
15122#endif
15123#ifdef VK_KHR_create_renderpass2
15124VkResult VkEncoder::vkCreateRenderPass2KHR(
15125 VkDevice device,
15126 const VkRenderPassCreateInfo2KHR* pCreateInfo,
15127 const VkAllocationCallbacks* pAllocator,
15128 VkRenderPass* pRenderPass)
15129{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015130 mImpl->log("start vkCreateRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015131 auto stream = mImpl->stream();
15132 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015133 auto resources = mImpl->resources();
15134 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015135 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015136 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015137 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015138 VkAllocationCallbacks* local_pAllocator;
15139 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015140 local_pCreateInfo = nullptr;
15141 if (pCreateInfo)
15142 {
15143 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
15144 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
15145 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015146 local_pAllocator = nullptr;
15147 if (pAllocator)
15148 {
15149 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15150 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15151 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015152 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015153 if (local_pCreateInfo)
15154 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015155 transform_tohost_VkRenderPassCreateInfo2KHR(mImpl->resources(), (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015156 }
15157 if (local_pAllocator)
15158 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015159 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015160 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015161 countingStream->rewind();
15162 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015163 uint64_t cgen_var_1070;
15164 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1070, 1);
15165 countingStream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015166 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015167 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015168 uint64_t cgen_var_1071 = (uint64_t)(uintptr_t)local_pAllocator;
15169 countingStream->putBe64(cgen_var_1071);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015170 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015171 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015172 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015173 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015174 uint64_t cgen_var_1072;
15175 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1072, 1);
15176 countingStream->write((uint64_t*)&cgen_var_1072, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015177 }
15178 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15179 countingStream->rewind();
15180 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
15181 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
15182 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015183 uint64_t cgen_var_1073;
15184 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
15185 stream->write((uint64_t*)&cgen_var_1073, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015186 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015187 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015188 uint64_t cgen_var_1074 = (uint64_t)(uintptr_t)local_pAllocator;
15189 stream->putBe64(cgen_var_1074);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015190 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015191 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015192 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015193 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015194 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015195 uint64_t cgen_var_1075;
15196 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1075, 1);
15197 stream->write((uint64_t*)&cgen_var_1075, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015198 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015199 uint64_t cgen_var_1076;
15200 stream->read((uint64_t*)&cgen_var_1076, 8);
15201 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1076, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015202 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
15203 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015204 countingStream->clearPool();
15205 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015206 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015207 mImpl->log("finish vkCreateRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015208 return vkCreateRenderPass2KHR_VkResult_return;
15209}
15210
15211void VkEncoder::vkCmdBeginRenderPass2KHR(
15212 VkCommandBuffer commandBuffer,
15213 const VkRenderPassBeginInfo* pRenderPassBegin,
15214 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
15215{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015216 mImpl->log("start vkCmdBeginRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015217 auto stream = mImpl->stream();
15218 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015219 auto resources = mImpl->resources();
15220 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015221 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015222 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015223 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015224 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
15225 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015226 local_pRenderPassBegin = nullptr;
15227 if (pRenderPassBegin)
15228 {
15229 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
15230 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15231 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015232 local_pSubpassBeginInfo = nullptr;
15233 if (pSubpassBeginInfo)
15234 {
15235 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15236 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15237 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015238 if (local_pRenderPassBegin)
15239 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015240 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015241 }
15242 if (local_pSubpassBeginInfo)
15243 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015244 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015245 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015246 countingStream->rewind();
15247 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015248 uint64_t cgen_var_1077;
15249 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1077, 1);
15250 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015251 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15252 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015253 }
15254 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15255 countingStream->rewind();
15256 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
15257 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
15258 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015259 uint64_t cgen_var_1078;
15260 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1078, 1);
15261 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015262 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15263 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015264 mImpl->log("finish vkCmdBeginRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015265}
15266
15267void VkEncoder::vkCmdNextSubpass2KHR(
15268 VkCommandBuffer commandBuffer,
15269 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
15270 const VkSubpassEndInfoKHR* pSubpassEndInfo)
15271{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015272 mImpl->log("start vkCmdNextSubpass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015273 auto stream = mImpl->stream();
15274 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015275 auto resources = mImpl->resources();
15276 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015277 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015278 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015279 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015280 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
15281 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015282 local_pSubpassBeginInfo = nullptr;
15283 if (pSubpassBeginInfo)
15284 {
15285 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15286 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15287 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015288 local_pSubpassEndInfo = nullptr;
15289 if (pSubpassEndInfo)
15290 {
15291 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
15292 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
15293 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015294 if (local_pSubpassBeginInfo)
15295 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015296 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015297 }
15298 if (local_pSubpassEndInfo)
15299 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015300 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015301 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015302 countingStream->rewind();
15303 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015304 uint64_t cgen_var_1079;
15305 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1079, 1);
15306 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015307 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15308 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015309 }
15310 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15311 countingStream->rewind();
15312 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
15313 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
15314 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015315 uint64_t cgen_var_1080;
15316 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1080, 1);
15317 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015318 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15319 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015320 mImpl->log("finish vkCmdNextSubpass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015321}
15322
15323void VkEncoder::vkCmdEndRenderPass2KHR(
15324 VkCommandBuffer commandBuffer,
15325 const VkSubpassEndInfoKHR* pSubpassEndInfo)
15326{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015327 mImpl->log("start vkCmdEndRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015328 auto stream = mImpl->stream();
15329 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015330 auto resources = mImpl->resources();
15331 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015332 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015333 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015334 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015335 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015336 local_pSubpassEndInfo = nullptr;
15337 if (pSubpassEndInfo)
15338 {
15339 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
15340 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
15341 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015342 if (local_pSubpassEndInfo)
15343 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015344 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015345 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015346 countingStream->rewind();
15347 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015348 uint64_t cgen_var_1081;
15349 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1081, 1);
15350 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015351 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015352 }
15353 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15354 countingStream->rewind();
15355 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
15356 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
15357 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015358 uint64_t cgen_var_1082;
15359 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1082, 1);
15360 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015361 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015362 mImpl->log("finish vkCmdEndRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015363}
15364
15365#endif
15366#ifdef VK_KHR_shared_presentable_image
15367VkResult VkEncoder::vkGetSwapchainStatusKHR(
15368 VkDevice device,
15369 VkSwapchainKHR swapchain)
15370{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015371 mImpl->log("start vkGetSwapchainStatusKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015372 auto stream = mImpl->stream();
15373 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015374 auto resources = mImpl->resources();
15375 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015376 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015377 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015378 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015379 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015380 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015381 countingStream->rewind();
15382 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015383 uint64_t cgen_var_1083;
15384 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
15385 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
15386 uint64_t cgen_var_1084;
15387 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1084, 1);
15388 countingStream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015389 }
15390 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15391 countingStream->rewind();
15392 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
15393 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
15394 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015395 uint64_t cgen_var_1085;
15396 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
15397 stream->write((uint64_t*)&cgen_var_1085, 1 * 8);
15398 uint64_t cgen_var_1086;
15399 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1086, 1);
15400 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015401 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
15402 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015403 countingStream->clearPool();
15404 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015405 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015406 mImpl->log("finish vkGetSwapchainStatusKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015407 return vkGetSwapchainStatusKHR_VkResult_return;
15408}
15409
15410#endif
15411#ifdef VK_KHR_external_fence_capabilities
15412void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
15413 VkPhysicalDevice physicalDevice,
15414 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
15415 VkExternalFenceProperties* pExternalFenceProperties)
15416{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015417 mImpl->log("start vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015418 auto stream = mImpl->stream();
15419 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015420 auto resources = mImpl->resources();
15421 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015422 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015423 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015424 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015425 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015426 local_pExternalFenceInfo = nullptr;
15427 if (pExternalFenceInfo)
15428 {
15429 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
15430 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
15431 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015432 if (local_pExternalFenceInfo)
15433 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015434 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015435 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015436 countingStream->rewind();
15437 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015438 uint64_t cgen_var_1087;
15439 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
15440 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015441 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015442 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
15443 }
15444 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15445 countingStream->rewind();
15446 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
15447 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
15448 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015449 uint64_t cgen_var_1088;
15450 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
15451 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015452 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015453 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
15454 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015455 if (pExternalFenceProperties)
15456 {
15457 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
15458 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015459 mImpl->log("finish vkGetPhysicalDeviceExternalFencePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015460}
15461
15462#endif
15463#ifdef VK_KHR_external_fence
15464#endif
15465#ifdef VK_KHR_external_fence_win32
15466VkResult VkEncoder::vkImportFenceWin32HandleKHR(
15467 VkDevice device,
15468 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
15469{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015470 mImpl->log("start vkImportFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015471 auto stream = mImpl->stream();
15472 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015473 auto resources = mImpl->resources();
15474 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015475 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015476 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015477 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015478 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015479 local_pImportFenceWin32HandleInfo = nullptr;
15480 if (pImportFenceWin32HandleInfo)
15481 {
15482 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
15483 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
15484 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015485 if (local_pImportFenceWin32HandleInfo)
15486 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015487 transform_tohost_VkImportFenceWin32HandleInfoKHR(mImpl->resources(), (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015488 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015489 countingStream->rewind();
15490 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015491 uint64_t cgen_var_1089;
15492 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1089, 1);
15493 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015494 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015495 }
15496 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15497 countingStream->rewind();
15498 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
15499 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
15500 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015501 uint64_t cgen_var_1090;
15502 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1090, 1);
15503 stream->write((uint64_t*)&cgen_var_1090, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015504 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015505 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
15506 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015507 countingStream->clearPool();
15508 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015509 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015510 mImpl->log("finish vkImportFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015511 return vkImportFenceWin32HandleKHR_VkResult_return;
15512}
15513
15514VkResult VkEncoder::vkGetFenceWin32HandleKHR(
15515 VkDevice device,
15516 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
15517 HANDLE* pHandle)
15518{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015519 mImpl->log("start vkGetFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015520 auto stream = mImpl->stream();
15521 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015522 auto resources = mImpl->resources();
15523 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015524 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015525 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015526 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015527 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015528 local_pGetWin32HandleInfo = nullptr;
15529 if (pGetWin32HandleInfo)
15530 {
15531 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
15532 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
15533 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015534 if (local_pGetWin32HandleInfo)
15535 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015536 transform_tohost_VkFenceGetWin32HandleInfoKHR(mImpl->resources(), (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015537 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015538 countingStream->rewind();
15539 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015540 uint64_t cgen_var_1091;
15541 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1091, 1);
15542 countingStream->write((uint64_t*)&cgen_var_1091, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015543 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015544 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
15545 }
15546 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15547 countingStream->rewind();
15548 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
15549 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
15550 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015551 uint64_t cgen_var_1092;
15552 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1092, 1);
15553 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015554 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015555 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
15556 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
15557 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
15558 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015559 countingStream->clearPool();
15560 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015561 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015562 mImpl->log("finish vkGetFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015563 return vkGetFenceWin32HandleKHR_VkResult_return;
15564}
15565
15566#endif
15567#ifdef VK_KHR_external_fence_fd
15568VkResult VkEncoder::vkImportFenceFdKHR(
15569 VkDevice device,
15570 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
15571{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015572 mImpl->log("start vkImportFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015573 auto stream = mImpl->stream();
15574 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015575 auto resources = mImpl->resources();
15576 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015577 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015578 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015579 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015580 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015581 local_pImportFenceFdInfo = nullptr;
15582 if (pImportFenceFdInfo)
15583 {
15584 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
15585 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
15586 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015587 if (local_pImportFenceFdInfo)
15588 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015589 transform_tohost_VkImportFenceFdInfoKHR(mImpl->resources(), (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015590 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015591 countingStream->rewind();
15592 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015593 uint64_t cgen_var_1093;
15594 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1093, 1);
15595 countingStream->write((uint64_t*)&cgen_var_1093, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015596 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015597 }
15598 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15599 countingStream->rewind();
15600 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
15601 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
15602 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015603 uint64_t cgen_var_1094;
15604 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1094, 1);
15605 stream->write((uint64_t*)&cgen_var_1094, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015606 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015607 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
15608 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015609 countingStream->clearPool();
15610 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015611 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015612 mImpl->log("finish vkImportFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015613 return vkImportFenceFdKHR_VkResult_return;
15614}
15615
15616VkResult VkEncoder::vkGetFenceFdKHR(
15617 VkDevice device,
15618 const VkFenceGetFdInfoKHR* pGetFdInfo,
15619 int* pFd)
15620{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015621 mImpl->log("start vkGetFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015622 auto stream = mImpl->stream();
15623 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015624 auto resources = mImpl->resources();
15625 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015626 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015627 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015628 VkFenceGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015629 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015630 local_pGetFdInfo = nullptr;
15631 if (pGetFdInfo)
15632 {
15633 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
15634 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
15635 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015636 if (local_pGetFdInfo)
15637 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015638 transform_tohost_VkFenceGetFdInfoKHR(mImpl->resources(), (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015639 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015640 countingStream->rewind();
15641 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015642 uint64_t cgen_var_1095;
15643 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1095, 1);
15644 countingStream->write((uint64_t*)&cgen_var_1095, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015645 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015646 countingStream->write((int*)pFd, sizeof(int));
15647 }
15648 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15649 countingStream->rewind();
15650 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
15651 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
15652 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015653 uint64_t cgen_var_1096;
15654 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1096, 1);
15655 stream->write((uint64_t*)&cgen_var_1096, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015656 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015657 stream->write((int*)pFd, sizeof(int));
15658 stream->read((int*)pFd, sizeof(int));
15659 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
15660 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015661 countingStream->clearPool();
15662 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015663 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015664 mImpl->log("finish vkGetFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015665 return vkGetFenceFdKHR_VkResult_return;
15666}
15667
15668#endif
15669#ifdef VK_KHR_maintenance2
15670#endif
15671#ifdef VK_KHR_get_surface_capabilities2
15672VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
15673 VkPhysicalDevice physicalDevice,
15674 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
15675 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
15676{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015677 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015678 auto stream = mImpl->stream();
15679 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015680 auto resources = mImpl->resources();
15681 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015682 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015683 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015684 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015685 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015686 local_pSurfaceInfo = nullptr;
15687 if (pSurfaceInfo)
15688 {
15689 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
15690 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
15691 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015692 if (local_pSurfaceInfo)
15693 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015694 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015695 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015696 countingStream->rewind();
15697 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015698 uint64_t cgen_var_1097;
15699 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
15700 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015701 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015702 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15703 }
15704 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15705 countingStream->rewind();
15706 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
15707 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
15708 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015709 uint64_t cgen_var_1098;
15710 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1098, 1);
15711 stream->write((uint64_t*)&cgen_var_1098, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015712 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015713 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15714 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015715 if (pSurfaceCapabilities)
15716 {
15717 transform_fromhost_VkSurfaceCapabilities2KHR(mImpl->resources(), (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15718 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015719 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
15720 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015721 countingStream->clearPool();
15722 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015723 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015724 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015725 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
15726}
15727
15728VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
15729 VkPhysicalDevice physicalDevice,
15730 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
15731 uint32_t* pSurfaceFormatCount,
15732 VkSurfaceFormat2KHR* pSurfaceFormats)
15733{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015734 mImpl->log("start vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015735 auto stream = mImpl->stream();
15736 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015737 auto resources = mImpl->resources();
15738 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015739 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015740 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015741 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015742 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015743 local_pSurfaceInfo = nullptr;
15744 if (pSurfaceInfo)
15745 {
15746 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
15747 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
15748 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015749 if (local_pSurfaceInfo)
15750 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015751 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015752 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015753 countingStream->rewind();
15754 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015755 uint64_t cgen_var_1099;
15756 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1099, 1);
15757 countingStream->write((uint64_t*)&cgen_var_1099, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015758 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015759 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015760 uint64_t cgen_var_1100 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
15761 countingStream->putBe64(cgen_var_1100);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015762 if (pSurfaceFormatCount)
15763 {
15764 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15765 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015766 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015767 uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pSurfaceFormats;
15768 countingStream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015769 if (pSurfaceFormats)
15770 {
15771 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15772 {
15773 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15774 }
15775 }
15776 }
15777 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15778 countingStream->rewind();
15779 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
15780 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
15781 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015782 uint64_t cgen_var_1102;
15783 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1102, 1);
15784 stream->write((uint64_t*)&cgen_var_1102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015785 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015786 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015787 uint64_t cgen_var_1103 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
15788 stream->putBe64(cgen_var_1103);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015789 if (pSurfaceFormatCount)
15790 {
15791 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15792 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015793 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015794 uint64_t cgen_var_1104 = (uint64_t)(uintptr_t)pSurfaceFormats;
15795 stream->putBe64(cgen_var_1104);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015796 if (pSurfaceFormats)
15797 {
15798 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15799 {
15800 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15801 }
15802 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015803 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015804 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015805 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015806 if (pSurfaceFormatCount)
15807 {
15808 if (!(check_pSurfaceFormatCount))
15809 {
15810 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
15811 }
15812 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15813 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015814 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015815 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015816 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015817 if (pSurfaceFormats)
15818 {
15819 if (!(check_pSurfaceFormats))
15820 {
15821 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
15822 }
15823 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15824 {
15825 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15826 }
15827 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015828 if (pSurfaceFormats)
15829 {
15830 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15831 {
15832 transform_fromhost_VkSurfaceFormat2KHR(mImpl->resources(), (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15833 }
15834 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015835 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
15836 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015837 countingStream->clearPool();
15838 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015839 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015840 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormats2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015841 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
15842}
15843
15844#endif
15845#ifdef VK_KHR_variable_pointers
15846#endif
15847#ifdef VK_KHR_get_display_properties2
15848VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
15849 VkPhysicalDevice physicalDevice,
15850 uint32_t* pPropertyCount,
15851 VkDisplayProperties2KHR* pProperties)
15852{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015853 mImpl->log("start vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015854 auto stream = mImpl->stream();
15855 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015856 auto resources = mImpl->resources();
15857 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015858 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015859 VkPhysicalDevice local_physicalDevice;
15860 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015861 countingStream->rewind();
15862 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015863 uint64_t cgen_var_1107;
15864 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1107, 1);
15865 countingStream->write((uint64_t*)&cgen_var_1107, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015866 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015867 uint64_t cgen_var_1108 = (uint64_t)(uintptr_t)pPropertyCount;
15868 countingStream->putBe64(cgen_var_1108);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015869 if (pPropertyCount)
15870 {
15871 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15872 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015873 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015874 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pProperties;
15875 countingStream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015876 if (pProperties)
15877 {
15878 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15879 {
15880 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
15881 }
15882 }
15883 }
15884 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15885 countingStream->rewind();
15886 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
15887 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
15888 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015889 uint64_t cgen_var_1110;
15890 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1110, 1);
15891 stream->write((uint64_t*)&cgen_var_1110, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015892 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015893 uint64_t cgen_var_1111 = (uint64_t)(uintptr_t)pPropertyCount;
15894 stream->putBe64(cgen_var_1111);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015895 if (pPropertyCount)
15896 {
15897 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15898 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015899 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015900 uint64_t cgen_var_1112 = (uint64_t)(uintptr_t)pProperties;
15901 stream->putBe64(cgen_var_1112);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015902 if (pProperties)
15903 {
15904 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15905 {
15906 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15907 }
15908 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015909 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015910 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015911 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015912 if (pPropertyCount)
15913 {
15914 if (!(check_pPropertyCount))
15915 {
15916 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
15917 }
15918 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
15919 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015920 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015921 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015922 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015923 if (pProperties)
15924 {
15925 if (!(check_pProperties))
15926 {
15927 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
15928 }
15929 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15930 {
15931 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15932 }
15933 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015934 if (pProperties)
15935 {
15936 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15937 {
15938 transform_fromhost_VkDisplayProperties2KHR(mImpl->resources(), (VkDisplayProperties2KHR*)(pProperties + i));
15939 }
15940 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015941 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
15942 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015943 countingStream->clearPool();
15944 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015945 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015946 mImpl->log("finish vkGetPhysicalDeviceDisplayProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015947 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
15948}
15949
15950VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
15951 VkPhysicalDevice physicalDevice,
15952 uint32_t* pPropertyCount,
15953 VkDisplayPlaneProperties2KHR* pProperties)
15954{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015955 mImpl->log("start vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015956 auto stream = mImpl->stream();
15957 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015958 auto resources = mImpl->resources();
15959 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015960 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015961 VkPhysicalDevice local_physicalDevice;
15962 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015963 countingStream->rewind();
15964 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015965 uint64_t cgen_var_1115;
15966 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1115, 1);
15967 countingStream->write((uint64_t*)&cgen_var_1115, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015968 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015969 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pPropertyCount;
15970 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015971 if (pPropertyCount)
15972 {
15973 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15974 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015975 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015976 uint64_t cgen_var_1117 = (uint64_t)(uintptr_t)pProperties;
15977 countingStream->putBe64(cgen_var_1117);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015978 if (pProperties)
15979 {
15980 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15981 {
15982 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15983 }
15984 }
15985 }
15986 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15987 countingStream->rewind();
15988 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
15989 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
15990 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015991 uint64_t cgen_var_1118;
15992 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1118, 1);
15993 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015994 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015995 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
15996 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015997 if (pPropertyCount)
15998 {
15999 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16000 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016001 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016002 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
16003 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016004 if (pProperties)
16005 {
16006 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16007 {
16008 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16009 }
16010 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016011 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016012 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016013 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016014 if (pPropertyCount)
16015 {
16016 if (!(check_pPropertyCount))
16017 {
16018 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16019 }
16020 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16021 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016022 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016023 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016024 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016025 if (pProperties)
16026 {
16027 if (!(check_pProperties))
16028 {
16029 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16030 }
16031 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16032 {
16033 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16034 }
16035 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016036 if (pProperties)
16037 {
16038 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16039 {
16040 transform_fromhost_VkDisplayPlaneProperties2KHR(mImpl->resources(), (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16041 }
16042 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016043 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
16044 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016045 countingStream->clearPool();
16046 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016047 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016048 mImpl->log("finish vkGetPhysicalDeviceDisplayPlaneProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016049 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
16050}
16051
16052VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
16053 VkPhysicalDevice physicalDevice,
16054 VkDisplayKHR display,
16055 uint32_t* pPropertyCount,
16056 VkDisplayModeProperties2KHR* pProperties)
16057{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016058 mImpl->log("start vkGetDisplayModeProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016059 auto stream = mImpl->stream();
16060 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016061 auto resources = mImpl->resources();
16062 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016063 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016064 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016065 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016066 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016067 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016068 countingStream->rewind();
16069 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016070 uint64_t cgen_var_1123;
16071 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
16072 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
16073 uint64_t cgen_var_1124;
16074 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1124, 1);
16075 countingStream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016076 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016077 uint64_t cgen_var_1125 = (uint64_t)(uintptr_t)pPropertyCount;
16078 countingStream->putBe64(cgen_var_1125);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016079 if (pPropertyCount)
16080 {
16081 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16082 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016083 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016084 uint64_t cgen_var_1126 = (uint64_t)(uintptr_t)pProperties;
16085 countingStream->putBe64(cgen_var_1126);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016086 if (pProperties)
16087 {
16088 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16089 {
16090 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16091 }
16092 }
16093 }
16094 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16095 countingStream->rewind();
16096 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
16097 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
16098 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016099 uint64_t cgen_var_1127;
16100 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1127, 1);
16101 stream->write((uint64_t*)&cgen_var_1127, 1 * 8);
16102 uint64_t cgen_var_1128;
16103 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1128, 1);
16104 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016105 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016106 uint64_t cgen_var_1129 = (uint64_t)(uintptr_t)pPropertyCount;
16107 stream->putBe64(cgen_var_1129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016108 if (pPropertyCount)
16109 {
16110 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16111 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016112 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016113 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pProperties;
16114 stream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016115 if (pProperties)
16116 {
16117 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16118 {
16119 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16120 }
16121 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016122 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016123 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016124 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016125 if (pPropertyCount)
16126 {
16127 if (!(check_pPropertyCount))
16128 {
16129 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16130 }
16131 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16132 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016133 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016134 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016135 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016136 if (pProperties)
16137 {
16138 if (!(check_pProperties))
16139 {
16140 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16141 }
16142 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16143 {
16144 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16145 }
16146 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016147 if (pProperties)
16148 {
16149 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16150 {
16151 transform_fromhost_VkDisplayModeProperties2KHR(mImpl->resources(), (VkDisplayModeProperties2KHR*)(pProperties + i));
16152 }
16153 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016154 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
16155 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016156 countingStream->clearPool();
16157 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016158 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016159 mImpl->log("finish vkGetDisplayModeProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016160 return vkGetDisplayModeProperties2KHR_VkResult_return;
16161}
16162
16163VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
16164 VkPhysicalDevice physicalDevice,
16165 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
16166 VkDisplayPlaneCapabilities2KHR* pCapabilities)
16167{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016168 mImpl->log("start vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016169 auto stream = mImpl->stream();
16170 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016171 auto resources = mImpl->resources();
16172 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016173 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016174 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016175 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016176 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016177 local_pDisplayPlaneInfo = nullptr;
16178 if (pDisplayPlaneInfo)
16179 {
16180 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
16181 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
16182 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016183 if (local_pDisplayPlaneInfo)
16184 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016185 transform_tohost_VkDisplayPlaneInfo2KHR(mImpl->resources(), (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016186 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016187 countingStream->rewind();
16188 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016189 uint64_t cgen_var_1133;
16190 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1133, 1);
16191 countingStream->write((uint64_t*)&cgen_var_1133, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016192 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016193 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16194 }
16195 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16196 countingStream->rewind();
16197 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
16198 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
16199 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016200 uint64_t cgen_var_1134;
16201 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1134, 1);
16202 stream->write((uint64_t*)&cgen_var_1134, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016203 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016204 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16205 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016206 if (pCapabilities)
16207 {
16208 transform_fromhost_VkDisplayPlaneCapabilities2KHR(mImpl->resources(), (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16209 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016210 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
16211 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016212 countingStream->clearPool();
16213 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016214 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016215 mImpl->log("finish vkGetDisplayPlaneCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016216 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
16217}
16218
16219#endif
16220#ifdef VK_KHR_dedicated_allocation
16221#endif
16222#ifdef VK_KHR_storage_buffer_storage_class
16223#endif
16224#ifdef VK_KHR_relaxed_block_layout
16225#endif
16226#ifdef VK_KHR_get_memory_requirements2
16227void VkEncoder::vkGetImageMemoryRequirements2KHR(
16228 VkDevice device,
16229 const VkImageMemoryRequirementsInfo2* pInfo,
16230 VkMemoryRequirements2* pMemoryRequirements)
16231{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016232 mImpl->log("start vkGetImageMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016233 auto stream = mImpl->stream();
16234 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016235 auto resources = mImpl->resources();
16236 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016237 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016238 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016239 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016240 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016241 local_pInfo = nullptr;
16242 if (pInfo)
16243 {
16244 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
16245 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
16246 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016247 if (local_pInfo)
16248 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016249 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016250 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016251 countingStream->rewind();
16252 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016253 uint64_t cgen_var_1135;
16254 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1135, 1);
16255 countingStream->write((uint64_t*)&cgen_var_1135, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016256 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016257 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
16258 }
16259 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16260 countingStream->rewind();
16261 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
16262 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
16263 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016264 uint64_t cgen_var_1136;
16265 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1136, 1);
16266 stream->write((uint64_t*)&cgen_var_1136, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016267 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016268 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
16269 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016270 if (pMemoryRequirements)
16271 {
16272 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
16273 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016274 mImpl->log("finish vkGetImageMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016275}
16276
16277void VkEncoder::vkGetBufferMemoryRequirements2KHR(
16278 VkDevice device,
16279 const VkBufferMemoryRequirementsInfo2* pInfo,
16280 VkMemoryRequirements2* pMemoryRequirements)
16281{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016282 mImpl->log("start vkGetBufferMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016283 auto stream = mImpl->stream();
16284 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016285 auto resources = mImpl->resources();
16286 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016287 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016288 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016289 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016290 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016291 local_pInfo = nullptr;
16292 if (pInfo)
16293 {
16294 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
16295 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
16296 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016297 if (local_pInfo)
16298 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016299 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016300 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016301 countingStream->rewind();
16302 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016303 uint64_t cgen_var_1137;
16304 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
16305 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016306 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016307 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
16308 }
16309 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16310 countingStream->rewind();
16311 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
16312 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
16313 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016314 uint64_t cgen_var_1138;
16315 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1138, 1);
16316 stream->write((uint64_t*)&cgen_var_1138, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016317 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016318 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
16319 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016320 if (pMemoryRequirements)
16321 {
16322 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
16323 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016324 mImpl->log("finish vkGetBufferMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016325}
16326
16327void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
16328 VkDevice device,
16329 const VkImageSparseMemoryRequirementsInfo2* pInfo,
16330 uint32_t* pSparseMemoryRequirementCount,
16331 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
16332{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016333 mImpl->log("start vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016334 auto stream = mImpl->stream();
16335 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016336 auto resources = mImpl->resources();
16337 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016338 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016339 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016340 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016341 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016342 local_pInfo = nullptr;
16343 if (pInfo)
16344 {
16345 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
16346 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
16347 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016348 if (local_pInfo)
16349 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016350 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016351 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016352 countingStream->rewind();
16353 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016354 uint64_t cgen_var_1139;
16355 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1139, 1);
16356 countingStream->write((uint64_t*)&cgen_var_1139, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016357 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016358 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016359 uint64_t cgen_var_1140 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
16360 countingStream->putBe64(cgen_var_1140);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016361 if (pSparseMemoryRequirementCount)
16362 {
16363 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16364 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016365 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016366 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
16367 countingStream->putBe64(cgen_var_1141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016368 if (pSparseMemoryRequirements)
16369 {
16370 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16371 {
16372 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16373 }
16374 }
16375 }
16376 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16377 countingStream->rewind();
16378 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
16379 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
16380 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016381 uint64_t cgen_var_1142;
16382 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1142, 1);
16383 stream->write((uint64_t*)&cgen_var_1142, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016384 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016385 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016386 uint64_t cgen_var_1143 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
16387 stream->putBe64(cgen_var_1143);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016388 if (pSparseMemoryRequirementCount)
16389 {
16390 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16391 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016392 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016393 uint64_t cgen_var_1144 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
16394 stream->putBe64(cgen_var_1144);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016395 if (pSparseMemoryRequirements)
16396 {
16397 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16398 {
16399 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16400 }
16401 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016402 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016403 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016404 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016405 if (pSparseMemoryRequirementCount)
16406 {
16407 if (!(check_pSparseMemoryRequirementCount))
16408 {
16409 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
16410 }
16411 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16412 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016413 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016414 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016415 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016416 if (pSparseMemoryRequirements)
16417 {
16418 if (!(check_pSparseMemoryRequirements))
16419 {
16420 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
16421 }
16422 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16423 {
16424 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16425 }
16426 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016427 if (pSparseMemoryRequirements)
16428 {
16429 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16430 {
16431 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16432 }
16433 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016434 mImpl->log("finish vkGetImageSparseMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016435}
16436
16437#endif
16438#ifdef VK_KHR_image_format_list
16439#endif
16440#ifdef VK_KHR_sampler_ycbcr_conversion
16441VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
16442 VkDevice device,
16443 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
16444 const VkAllocationCallbacks* pAllocator,
16445 VkSamplerYcbcrConversion* pYcbcrConversion)
16446{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016447 mImpl->log("start vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016448 auto stream = mImpl->stream();
16449 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016450 auto resources = mImpl->resources();
16451 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016452 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016453 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016454 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016455 VkAllocationCallbacks* local_pAllocator;
16456 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016457 local_pCreateInfo = nullptr;
16458 if (pCreateInfo)
16459 {
16460 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
16461 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
16462 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016463 local_pAllocator = nullptr;
16464 if (pAllocator)
16465 {
16466 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16467 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16468 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016469 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016470 if (local_pCreateInfo)
16471 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016472 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016473 }
16474 if (local_pAllocator)
16475 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016476 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016477 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016478 countingStream->rewind();
16479 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016480 uint64_t cgen_var_1147;
16481 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
16482 countingStream->write((uint64_t*)&cgen_var_1147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016483 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016484 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016485 uint64_t cgen_var_1148 = (uint64_t)(uintptr_t)local_pAllocator;
16486 countingStream->putBe64(cgen_var_1148);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016487 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016488 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016489 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016490 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016491 uint64_t cgen_var_1149;
16492 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1149, 1);
16493 countingStream->write((uint64_t*)&cgen_var_1149, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016494 }
16495 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16496 countingStream->rewind();
16497 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
16498 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
16499 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016500 uint64_t cgen_var_1150;
16501 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
16502 stream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016503 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016504 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016505 uint64_t cgen_var_1151 = (uint64_t)(uintptr_t)local_pAllocator;
16506 stream->putBe64(cgen_var_1151);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016507 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016508 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016509 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016510 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016511 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016512 uint64_t cgen_var_1152;
16513 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1152, 1);
16514 stream->write((uint64_t*)&cgen_var_1152, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016515 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016516 uint64_t cgen_var_1153;
16517 stream->read((uint64_t*)&cgen_var_1153, 8);
16518 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1153, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016519 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
16520 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016521 countingStream->clearPool();
16522 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016523 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016524 mImpl->log("finish vkCreateSamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016525 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
16526}
16527
16528void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
16529 VkDevice device,
16530 VkSamplerYcbcrConversion ycbcrConversion,
16531 const VkAllocationCallbacks* pAllocator)
16532{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016533 mImpl->log("start vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016534 auto stream = mImpl->stream();
16535 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016536 auto resources = mImpl->resources();
16537 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016538 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016539 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016540 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016541 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016542 local_device = device;
16543 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016544 local_pAllocator = nullptr;
16545 if (pAllocator)
16546 {
16547 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16548 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16549 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016550 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016551 if (local_pAllocator)
16552 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016553 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016554 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016555 countingStream->rewind();
16556 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016557 uint64_t cgen_var_1154;
16558 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
16559 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
16560 uint64_t cgen_var_1155;
16561 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1155, 1);
16562 countingStream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016563 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016564 uint64_t cgen_var_1156 = (uint64_t)(uintptr_t)local_pAllocator;
16565 countingStream->putBe64(cgen_var_1156);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016566 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016567 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016568 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016569 }
16570 }
16571 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16572 countingStream->rewind();
16573 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
16574 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
16575 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016576 uint64_t cgen_var_1157;
16577 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1157, 1);
16578 stream->write((uint64_t*)&cgen_var_1157, 1 * 8);
16579 uint64_t cgen_var_1158;
16580 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1158, 1);
16581 stream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016582 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016583 uint64_t cgen_var_1159 = (uint64_t)(uintptr_t)local_pAllocator;
16584 stream->putBe64(cgen_var_1159);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016585 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016586 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016587 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016588 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016589 mImpl->log("finish vkDestroySamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016590}
16591
16592#endif
16593#ifdef VK_KHR_bind_memory2
16594VkResult VkEncoder::vkBindBufferMemory2KHR(
16595 VkDevice device,
16596 uint32_t bindInfoCount,
16597 const VkBindBufferMemoryInfo* pBindInfos)
16598{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016599 mImpl->log("start vkBindBufferMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016600 auto stream = mImpl->stream();
16601 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016602 auto resources = mImpl->resources();
16603 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016604 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016605 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016606 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016607 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016608 local_device = device;
16609 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016610 local_pBindInfos = nullptr;
16611 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016612 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016613 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016614 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16615 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016616 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
16617 }
16618 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016619 if (local_pBindInfos)
16620 {
16621 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16622 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016623 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016624 }
16625 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016626 countingStream->rewind();
16627 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016628 uint64_t cgen_var_1160;
16629 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1160, 1);
16630 countingStream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016631 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
16632 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16633 {
16634 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016635 }
16636 }
16637 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16638 countingStream->rewind();
16639 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
16640 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
16641 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016642 uint64_t cgen_var_1161;
16643 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1161, 1);
16644 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016645 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016646 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16647 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016648 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016649 }
16650 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
16651 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016652 countingStream->clearPool();
16653 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016654 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016655 mImpl->log("finish vkBindBufferMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016656 return vkBindBufferMemory2KHR_VkResult_return;
16657}
16658
16659VkResult VkEncoder::vkBindImageMemory2KHR(
16660 VkDevice device,
16661 uint32_t bindInfoCount,
16662 const VkBindImageMemoryInfo* pBindInfos)
16663{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016664 mImpl->log("start vkBindImageMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016665 auto stream = mImpl->stream();
16666 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016667 auto resources = mImpl->resources();
16668 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016669 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016670 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016671 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016672 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016673 local_device = device;
16674 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016675 local_pBindInfos = nullptr;
16676 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016677 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016678 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016679 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16680 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016681 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
16682 }
16683 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016684 if (local_pBindInfos)
16685 {
16686 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16687 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016688 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016689 }
16690 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016691 countingStream->rewind();
16692 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016693 uint64_t cgen_var_1162;
16694 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1162, 1);
16695 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016696 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
16697 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16698 {
16699 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016700 }
16701 }
16702 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16703 countingStream->rewind();
16704 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
16705 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
16706 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016707 uint64_t cgen_var_1163;
16708 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1163, 1);
16709 stream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016710 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016711 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16712 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016713 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016714 }
16715 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
16716 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016717 countingStream->clearPool();
16718 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016719 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016720 mImpl->log("finish vkBindImageMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016721 return vkBindImageMemory2KHR_VkResult_return;
16722}
16723
16724#endif
16725#ifdef VK_KHR_maintenance3
16726void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
16727 VkDevice device,
16728 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
16729 VkDescriptorSetLayoutSupport* pSupport)
16730{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016731 mImpl->log("start vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016732 auto stream = mImpl->stream();
16733 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016734 auto resources = mImpl->resources();
16735 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016736 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016737 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016738 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016739 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016740 local_pCreateInfo = nullptr;
16741 if (pCreateInfo)
16742 {
16743 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
16744 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
16745 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016746 if (local_pCreateInfo)
16747 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016748 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016749 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016750 countingStream->rewind();
16751 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016752 uint64_t cgen_var_1164;
16753 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1164, 1);
16754 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016755 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016756 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
16757 }
16758 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16759 countingStream->rewind();
16760 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
16761 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
16762 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016763 uint64_t cgen_var_1165;
16764 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1165, 1);
16765 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016766 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016767 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
16768 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016769 if (pSupport)
16770 {
16771 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
16772 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016773 mImpl->log("finish vkGetDescriptorSetLayoutSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016774}
16775
16776#endif
16777#ifdef VK_KHR_draw_indirect_count
16778void VkEncoder::vkCmdDrawIndirectCountKHR(
16779 VkCommandBuffer commandBuffer,
16780 VkBuffer buffer,
16781 VkDeviceSize offset,
16782 VkBuffer countBuffer,
16783 VkDeviceSize countBufferOffset,
16784 uint32_t maxDrawCount,
16785 uint32_t stride)
16786{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016787 mImpl->log("start vkCmdDrawIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016788 auto stream = mImpl->stream();
16789 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016790 auto resources = mImpl->resources();
16791 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016792 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016793 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016794 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016795 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016796 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016797 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016798 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016799 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016800 local_commandBuffer = commandBuffer;
16801 local_buffer = buffer;
16802 local_offset = offset;
16803 local_countBuffer = countBuffer;
16804 local_countBufferOffset = countBufferOffset;
16805 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016806 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016807 countingStream->rewind();
16808 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016809 uint64_t cgen_var_1166;
16810 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1166, 1);
16811 countingStream->write((uint64_t*)&cgen_var_1166, 1 * 8);
16812 uint64_t cgen_var_1167;
16813 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1167, 1);
16814 countingStream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016815 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016816 uint64_t cgen_var_1168;
16817 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1168, 1);
16818 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016819 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16820 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16821 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016822 }
16823 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16824 countingStream->rewind();
16825 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
16826 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
16827 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016828 uint64_t cgen_var_1169;
16829 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1169, 1);
16830 stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
16831 uint64_t cgen_var_1170;
16832 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1170, 1);
16833 stream->write((uint64_t*)&cgen_var_1170, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016834 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016835 uint64_t cgen_var_1171;
16836 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1171, 1);
16837 stream->write((uint64_t*)&cgen_var_1171, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016838 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16839 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16840 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016841 mImpl->log("finish vkCmdDrawIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016842}
16843
16844void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
16845 VkCommandBuffer commandBuffer,
16846 VkBuffer buffer,
16847 VkDeviceSize offset,
16848 VkBuffer countBuffer,
16849 VkDeviceSize countBufferOffset,
16850 uint32_t maxDrawCount,
16851 uint32_t stride)
16852{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016853 mImpl->log("start vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016854 auto stream = mImpl->stream();
16855 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016856 auto resources = mImpl->resources();
16857 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016858 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016859 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016860 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016861 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016862 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016863 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016864 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016865 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016866 local_commandBuffer = commandBuffer;
16867 local_buffer = buffer;
16868 local_offset = offset;
16869 local_countBuffer = countBuffer;
16870 local_countBufferOffset = countBufferOffset;
16871 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016872 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016873 countingStream->rewind();
16874 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016875 uint64_t cgen_var_1172;
16876 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1172, 1);
16877 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
16878 uint64_t cgen_var_1173;
16879 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1173, 1);
16880 countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016881 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016882 uint64_t cgen_var_1174;
16883 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1174, 1);
16884 countingStream->write((uint64_t*)&cgen_var_1174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016885 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16886 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16887 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016888 }
16889 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16890 countingStream->rewind();
16891 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
16892 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
16893 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016894 uint64_t cgen_var_1175;
16895 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1175, 1);
16896 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
16897 uint64_t cgen_var_1176;
16898 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1176, 1);
16899 stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016900 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016901 uint64_t cgen_var_1177;
16902 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1177, 1);
16903 stream->write((uint64_t*)&cgen_var_1177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016904 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16905 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16906 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016907 mImpl->log("finish vkCmdDrawIndexedIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016908}
16909
16910#endif
16911#ifdef VK_KHR_8bit_storage
16912#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080016913#ifdef VK_ANDROID_native_buffer
16914VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
16915 VkDevice device,
16916 VkFormat format,
16917 VkImageUsageFlags imageUsage,
16918 int* grallocUsage)
16919{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016920 mImpl->log("start vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080016921 auto stream = mImpl->stream();
16922 auto countingStream = mImpl->countingStream();
16923 auto resources = mImpl->resources();
16924 auto pool = mImpl->pool();
16925 stream->setHandleMapping(resources->unwrapMapping());
16926 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016927 VkFormat local_format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016928 VkImageUsageFlags local_imageUsage;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016929 local_device = device;
16930 local_format = format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016931 local_imageUsage = imageUsage;
16932 countingStream->rewind();
16933 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016934 uint64_t cgen_var_1178;
16935 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1178, 1);
16936 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016937 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
16938 countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
16939 countingStream->write((int*)grallocUsage, sizeof(int));
16940 }
16941 uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16942 countingStream->rewind();
16943 uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
16944 stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
16945 stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016946 uint64_t cgen_var_1179;
16947 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1179, 1);
16948 stream->write((uint64_t*)&cgen_var_1179, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016949 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
16950 stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
16951 stream->write((int*)grallocUsage, sizeof(int));
16952 stream->read((int*)grallocUsage, sizeof(int));
16953 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
16954 stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
16955 countingStream->clearPool();
16956 stream->clearPool();
16957 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016958 mImpl->log("finish vkGetSwapchainGrallocUsageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016959 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
16960}
16961
16962VkResult VkEncoder::vkAcquireImageANDROID(
16963 VkDevice device,
16964 VkImage image,
16965 int nativeFenceFd,
16966 VkSemaphore semaphore,
16967 VkFence fence)
16968{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016969 mImpl->log("start vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080016970 auto stream = mImpl->stream();
16971 auto countingStream = mImpl->countingStream();
16972 auto resources = mImpl->resources();
16973 auto pool = mImpl->pool();
16974 stream->setHandleMapping(resources->unwrapMapping());
16975 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016976 VkImage local_image;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016977 int local_nativeFenceFd;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016978 VkSemaphore local_semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016979 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016980 local_device = device;
16981 local_image = image;
16982 local_nativeFenceFd = nativeFenceFd;
16983 local_semaphore = semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016984 local_fence = fence;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -080016985 mImpl->resources()->unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016986 countingStream->rewind();
16987 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016988 uint64_t cgen_var_1180;
16989 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1180, 1);
16990 countingStream->write((uint64_t*)&cgen_var_1180, 1 * 8);
16991 uint64_t cgen_var_1181;
16992 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1181, 1);
16993 countingStream->write((uint64_t*)&cgen_var_1181, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016994 countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016995 uint64_t cgen_var_1182;
16996 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1182, 1);
16997 countingStream->write((uint64_t*)&cgen_var_1182, 1 * 8);
16998 uint64_t cgen_var_1183;
16999 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1183, 1);
17000 countingStream->write((uint64_t*)&cgen_var_1183, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017001 }
17002 uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17003 countingStream->rewind();
17004 uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
17005 stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
17006 stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017007 uint64_t cgen_var_1184;
17008 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1184, 1);
17009 stream->write((uint64_t*)&cgen_var_1184, 1 * 8);
17010 uint64_t cgen_var_1185;
17011 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1185, 1);
17012 stream->write((uint64_t*)&cgen_var_1185, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017013 stream->write((int*)&local_nativeFenceFd, sizeof(int));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017014 uint64_t cgen_var_1186;
17015 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1186, 1);
17016 stream->write((uint64_t*)&cgen_var_1186, 1 * 8);
17017 uint64_t cgen_var_1187;
17018 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1187, 1);
17019 stream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017020 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
17021 stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
17022 countingStream->clearPool();
17023 stream->clearPool();
17024 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017025 mImpl->log("finish vkAcquireImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017026 return vkAcquireImageANDROID_VkResult_return;
17027}
17028
17029VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
17030 VkQueue queue,
17031 uint32_t waitSemaphoreCount,
17032 const VkSemaphore* pWaitSemaphores,
17033 VkImage image,
17034 int* pNativeFenceFd)
17035{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017036 mImpl->log("start vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017037 auto stream = mImpl->stream();
17038 auto countingStream = mImpl->countingStream();
17039 auto resources = mImpl->resources();
17040 auto pool = mImpl->pool();
17041 stream->setHandleMapping(resources->unwrapMapping());
17042 VkQueue local_queue;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017043 uint32_t local_waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017044 VkSemaphore* local_pWaitSemaphores;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017045 VkImage local_image;
17046 local_queue = queue;
17047 local_waitSemaphoreCount = waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017048 local_pWaitSemaphores = nullptr;
17049 if (pWaitSemaphores)
17050 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017051 local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, ((waitSemaphoreCount)) * sizeof(const VkSemaphore));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017052 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017053 local_image = image;
17054 countingStream->rewind();
17055 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017056 uint64_t cgen_var_1188;
17057 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1188, 1);
17058 countingStream->write((uint64_t*)&cgen_var_1188, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017059 countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017060 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017061 uint64_t cgen_var_1189 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17062 countingStream->putBe64(cgen_var_1189);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017063 if (local_pWaitSemaphores)
17064 {
17065 if (((waitSemaphoreCount)))
17066 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017067 uint64_t* cgen_var_1190;
17068 countingStream->alloc((void**)&cgen_var_1190, ((waitSemaphoreCount)) * 8);
17069 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1190, ((waitSemaphoreCount)));
17070 countingStream->write((uint64_t*)cgen_var_1190, ((waitSemaphoreCount)) * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017071 }
17072 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017073 uint64_t cgen_var_1191;
17074 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1191, 1);
17075 countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017076 countingStream->write((int*)pNativeFenceFd, sizeof(int));
17077 }
17078 uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17079 countingStream->rewind();
17080 uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
17081 stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
17082 stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017083 uint64_t cgen_var_1192;
17084 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1192, 1);
17085 stream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017086 stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
17087 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017088 uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17089 stream->putBe64(cgen_var_1193);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017090 if (local_pWaitSemaphores)
17091 {
17092 if (((waitSemaphoreCount)))
17093 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017094 uint64_t* cgen_var_1194;
17095 stream->alloc((void**)&cgen_var_1194, ((waitSemaphoreCount)) * 8);
17096 stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1194, ((waitSemaphoreCount)));
17097 stream->write((uint64_t*)cgen_var_1194, ((waitSemaphoreCount)) * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017098 }
17099 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017100 uint64_t cgen_var_1195;
17101 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1195, 1);
17102 stream->write((uint64_t*)&cgen_var_1195, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017103 stream->write((int*)pNativeFenceFd, sizeof(int));
17104 stream->read((int*)pNativeFenceFd, sizeof(int));
17105 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
17106 stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
17107 countingStream->clearPool();
17108 stream->clearPool();
17109 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017110 mImpl->log("finish vkQueueSignalReleaseImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017111 return vkQueueSignalReleaseImageANDROID_VkResult_return;
17112}
17113
17114#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017115#ifdef VK_EXT_debug_report
17116VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
17117 VkInstance instance,
17118 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
17119 const VkAllocationCallbacks* pAllocator,
17120 VkDebugReportCallbackEXT* pCallback)
17121{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017122 mImpl->log("start vkCreateDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017123 auto stream = mImpl->stream();
17124 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017125 auto resources = mImpl->resources();
17126 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017127 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017128 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017129 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017130 VkAllocationCallbacks* local_pAllocator;
17131 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017132 local_pCreateInfo = nullptr;
17133 if (pCreateInfo)
17134 {
17135 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
17136 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
17137 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017138 local_pAllocator = nullptr;
17139 if (pAllocator)
17140 {
17141 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17142 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17143 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017144 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017145 if (local_pCreateInfo)
17146 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017147 transform_tohost_VkDebugReportCallbackCreateInfoEXT(mImpl->resources(), (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017148 }
17149 if (local_pAllocator)
17150 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017151 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017152 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017153 countingStream->rewind();
17154 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017155 uint64_t cgen_var_1196;
17156 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1196, 1);
17157 countingStream->write((uint64_t*)&cgen_var_1196, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017158 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017159 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017160 uint64_t cgen_var_1197 = (uint64_t)(uintptr_t)local_pAllocator;
17161 countingStream->putBe64(cgen_var_1197);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017162 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017163 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017164 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017165 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017166 uint64_t cgen_var_1198;
17167 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1198, 1);
17168 countingStream->write((uint64_t*)&cgen_var_1198, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017169 }
17170 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17171 countingStream->rewind();
17172 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
17173 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
17174 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017175 uint64_t cgen_var_1199;
17176 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1199, 1);
17177 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017178 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017179 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017180 uint64_t cgen_var_1200 = (uint64_t)(uintptr_t)local_pAllocator;
17181 stream->putBe64(cgen_var_1200);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017182 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017183 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017184 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017185 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017186 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017187 uint64_t cgen_var_1201;
17188 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1201, 1);
17189 stream->write((uint64_t*)&cgen_var_1201, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017190 stream->setHandleMapping(resources->unwrapMapping());
17191 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017192 uint64_t cgen_var_1202;
17193 stream->read((uint64_t*)&cgen_var_1202, 8);
17194 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1202, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017195 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017196 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
17197 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017198 countingStream->clearPool();
17199 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017200 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017201 mImpl->log("finish vkCreateDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017202 return vkCreateDebugReportCallbackEXT_VkResult_return;
17203}
17204
17205void VkEncoder::vkDestroyDebugReportCallbackEXT(
17206 VkInstance instance,
17207 VkDebugReportCallbackEXT callback,
17208 const VkAllocationCallbacks* pAllocator)
17209{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017210 mImpl->log("start vkDestroyDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017211 auto stream = mImpl->stream();
17212 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017213 auto resources = mImpl->resources();
17214 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017215 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017216 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017217 VkDebugReportCallbackEXT local_callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017218 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017219 local_instance = instance;
17220 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017221 local_pAllocator = nullptr;
17222 if (pAllocator)
17223 {
17224 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17225 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17226 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017227 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017228 if (local_pAllocator)
17229 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017230 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017231 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017232 countingStream->rewind();
17233 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017234 uint64_t cgen_var_1203;
17235 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1203, 1);
17236 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
17237 uint64_t cgen_var_1204;
17238 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1204, 1);
17239 countingStream->write((uint64_t*)&cgen_var_1204, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017240 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017241 uint64_t cgen_var_1205 = (uint64_t)(uintptr_t)local_pAllocator;
17242 countingStream->putBe64(cgen_var_1205);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017243 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017244 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017245 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017246 }
17247 }
17248 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17249 countingStream->rewind();
17250 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
17251 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
17252 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017253 uint64_t cgen_var_1206;
17254 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1206, 1);
17255 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
17256 uint64_t cgen_var_1207;
17257 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1207, 1);
17258 stream->write((uint64_t*)&cgen_var_1207, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017259 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017260 uint64_t cgen_var_1208 = (uint64_t)(uintptr_t)local_pAllocator;
17261 stream->putBe64(cgen_var_1208);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017262 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017263 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017264 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017265 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017266 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017267 mImpl->log("finish vkDestroyDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017268}
17269
17270void VkEncoder::vkDebugReportMessageEXT(
17271 VkInstance instance,
17272 VkDebugReportFlagsEXT flags,
17273 VkDebugReportObjectTypeEXT objectType,
17274 uint64_t object,
17275 size_t location,
17276 int32_t messageCode,
17277 const char* pLayerPrefix,
17278 const char* pMessage)
17279{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017280 mImpl->log("start vkDebugReportMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017281 auto stream = mImpl->stream();
17282 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017283 auto resources = mImpl->resources();
17284 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017285 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017286 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017287 VkDebugReportFlagsEXT local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017288 VkDebugReportObjectTypeEXT local_objectType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017289 uint64_t local_object;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017290 size_t local_location;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017291 int32_t local_messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017292 char* local_pLayerPrefix;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017293 char* local_pMessage;
17294 local_instance = instance;
17295 local_flags = flags;
17296 local_objectType = objectType;
17297 local_object = object;
17298 local_location = location;
17299 local_messageCode = messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017300 local_pLayerPrefix = nullptr;
17301 if (pLayerPrefix)
17302 {
17303 local_pLayerPrefix = pool->strDup(pLayerPrefix);
17304 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017305 local_pMessage = nullptr;
17306 if (pMessage)
17307 {
17308 local_pMessage = pool->strDup(pMessage);
17309 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017310 countingStream->rewind();
17311 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017312 uint64_t cgen_var_1209;
17313 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1209, 1);
17314 countingStream->write((uint64_t*)&cgen_var_1209, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017315 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
17316 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
17317 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017318 uint64_t cgen_var_1210 = (uint64_t)local_location;
17319 countingStream->putBe64(cgen_var_1210);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017320 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
17321 countingStream->putString(local_pLayerPrefix);
17322 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017323 }
17324 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17325 countingStream->rewind();
17326 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
17327 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
17328 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017329 uint64_t cgen_var_1211;
17330 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1211, 1);
17331 stream->write((uint64_t*)&cgen_var_1211, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017332 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
17333 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
17334 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017335 uint64_t cgen_var_1212 = (uint64_t)local_location;
17336 stream->putBe64(cgen_var_1212);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017337 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
17338 stream->putString(local_pLayerPrefix);
17339 stream->putString(local_pMessage);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017340 mImpl->log("finish vkDebugReportMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017341}
17342
17343#endif
17344#ifdef VK_NV_glsl_shader
17345#endif
17346#ifdef VK_EXT_depth_range_unrestricted
17347#endif
17348#ifdef VK_IMG_filter_cubic
17349#endif
17350#ifdef VK_AMD_rasterization_order
17351#endif
17352#ifdef VK_AMD_shader_trinary_minmax
17353#endif
17354#ifdef VK_AMD_shader_explicit_vertex_parameter
17355#endif
17356#ifdef VK_EXT_debug_marker
17357VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
17358 VkDevice device,
17359 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
17360{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017361 mImpl->log("start vkDebugMarkerSetObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017362 auto stream = mImpl->stream();
17363 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017364 auto resources = mImpl->resources();
17365 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017366 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017367 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017368 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017369 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017370 local_pTagInfo = nullptr;
17371 if (pTagInfo)
17372 {
17373 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
17374 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
17375 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017376 if (local_pTagInfo)
17377 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017378 transform_tohost_VkDebugMarkerObjectTagInfoEXT(mImpl->resources(), (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017379 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017380 countingStream->rewind();
17381 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017382 uint64_t cgen_var_1213;
17383 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1213, 1);
17384 countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017385 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017386 }
17387 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17388 countingStream->rewind();
17389 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
17390 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
17391 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017392 uint64_t cgen_var_1214;
17393 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1214, 1);
17394 stream->write((uint64_t*)&cgen_var_1214, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017395 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017396 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
17397 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017398 countingStream->clearPool();
17399 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017400 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017401 mImpl->log("finish vkDebugMarkerSetObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017402 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
17403}
17404
17405VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
17406 VkDevice device,
17407 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
17408{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017409 mImpl->log("start vkDebugMarkerSetObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017410 auto stream = mImpl->stream();
17411 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017412 auto resources = mImpl->resources();
17413 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017414 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017415 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017416 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017417 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017418 local_pNameInfo = nullptr;
17419 if (pNameInfo)
17420 {
17421 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
17422 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
17423 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017424 if (local_pNameInfo)
17425 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017426 transform_tohost_VkDebugMarkerObjectNameInfoEXT(mImpl->resources(), (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017427 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017428 countingStream->rewind();
17429 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017430 uint64_t cgen_var_1215;
17431 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1215, 1);
17432 countingStream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017433 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017434 }
17435 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17436 countingStream->rewind();
17437 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
17438 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
17439 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017440 uint64_t cgen_var_1216;
17441 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1216, 1);
17442 stream->write((uint64_t*)&cgen_var_1216, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017443 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017444 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
17445 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017446 countingStream->clearPool();
17447 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017448 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017449 mImpl->log("finish vkDebugMarkerSetObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017450 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
17451}
17452
17453void VkEncoder::vkCmdDebugMarkerBeginEXT(
17454 VkCommandBuffer commandBuffer,
17455 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
17456{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017457 mImpl->log("start vkCmdDebugMarkerBeginEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017458 auto stream = mImpl->stream();
17459 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017460 auto resources = mImpl->resources();
17461 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017462 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017463 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017464 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017465 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017466 local_pMarkerInfo = nullptr;
17467 if (pMarkerInfo)
17468 {
17469 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
17470 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
17471 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017472 if (local_pMarkerInfo)
17473 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017474 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017475 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017476 countingStream->rewind();
17477 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017478 uint64_t cgen_var_1217;
17479 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1217, 1);
17480 countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017481 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017482 }
17483 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17484 countingStream->rewind();
17485 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
17486 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
17487 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017488 uint64_t cgen_var_1218;
17489 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1218, 1);
17490 stream->write((uint64_t*)&cgen_var_1218, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017491 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017492 mImpl->log("finish vkCmdDebugMarkerBeginEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017493}
17494
17495void VkEncoder::vkCmdDebugMarkerEndEXT(
17496 VkCommandBuffer commandBuffer)
17497{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017498 mImpl->log("start vkCmdDebugMarkerEndEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017499 auto stream = mImpl->stream();
17500 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017501 auto resources = mImpl->resources();
17502 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017503 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017504 VkCommandBuffer local_commandBuffer;
17505 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017506 countingStream->rewind();
17507 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017508 uint64_t cgen_var_1219;
17509 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1219, 1);
17510 countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017511 }
17512 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17513 countingStream->rewind();
17514 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
17515 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
17516 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017517 uint64_t cgen_var_1220;
17518 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1220, 1);
17519 stream->write((uint64_t*)&cgen_var_1220, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017520 mImpl->log("finish vkCmdDebugMarkerEndEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017521}
17522
17523void VkEncoder::vkCmdDebugMarkerInsertEXT(
17524 VkCommandBuffer commandBuffer,
17525 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
17526{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017527 mImpl->log("start vkCmdDebugMarkerInsertEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017528 auto stream = mImpl->stream();
17529 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017530 auto resources = mImpl->resources();
17531 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017532 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017533 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017534 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017535 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017536 local_pMarkerInfo = nullptr;
17537 if (pMarkerInfo)
17538 {
17539 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
17540 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
17541 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017542 if (local_pMarkerInfo)
17543 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017544 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017545 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017546 countingStream->rewind();
17547 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017548 uint64_t cgen_var_1221;
17549 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1221, 1);
17550 countingStream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017551 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017552 }
17553 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17554 countingStream->rewind();
17555 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
17556 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
17557 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017558 uint64_t cgen_var_1222;
17559 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1222, 1);
17560 stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017561 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017562 mImpl->log("finish vkCmdDebugMarkerInsertEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017563}
17564
17565#endif
17566#ifdef VK_AMD_gcn_shader
17567#endif
17568#ifdef VK_NV_dedicated_allocation
17569#endif
17570#ifdef VK_AMD_draw_indirect_count
17571void VkEncoder::vkCmdDrawIndirectCountAMD(
17572 VkCommandBuffer commandBuffer,
17573 VkBuffer buffer,
17574 VkDeviceSize offset,
17575 VkBuffer countBuffer,
17576 VkDeviceSize countBufferOffset,
17577 uint32_t maxDrawCount,
17578 uint32_t stride)
17579{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017580 mImpl->log("start vkCmdDrawIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017581 auto stream = mImpl->stream();
17582 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017583 auto resources = mImpl->resources();
17584 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017585 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017586 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017587 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017588 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017589 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017590 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017591 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017592 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017593 local_commandBuffer = commandBuffer;
17594 local_buffer = buffer;
17595 local_offset = offset;
17596 local_countBuffer = countBuffer;
17597 local_countBufferOffset = countBufferOffset;
17598 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017599 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017600 countingStream->rewind();
17601 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017602 uint64_t cgen_var_1223;
17603 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1223, 1);
17604 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
17605 uint64_t cgen_var_1224;
17606 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1224, 1);
17607 countingStream->write((uint64_t*)&cgen_var_1224, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017608 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017609 uint64_t cgen_var_1225;
17610 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1225, 1);
17611 countingStream->write((uint64_t*)&cgen_var_1225, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017612 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17613 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17614 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017615 }
17616 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17617 countingStream->rewind();
17618 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
17619 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
17620 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017621 uint64_t cgen_var_1226;
17622 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1226, 1);
17623 stream->write((uint64_t*)&cgen_var_1226, 1 * 8);
17624 uint64_t cgen_var_1227;
17625 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1227, 1);
17626 stream->write((uint64_t*)&cgen_var_1227, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017627 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017628 uint64_t cgen_var_1228;
17629 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1228, 1);
17630 stream->write((uint64_t*)&cgen_var_1228, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017631 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17632 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17633 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017634 mImpl->log("finish vkCmdDrawIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017635}
17636
17637void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
17638 VkCommandBuffer commandBuffer,
17639 VkBuffer buffer,
17640 VkDeviceSize offset,
17641 VkBuffer countBuffer,
17642 VkDeviceSize countBufferOffset,
17643 uint32_t maxDrawCount,
17644 uint32_t stride)
17645{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017646 mImpl->log("start vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017647 auto stream = mImpl->stream();
17648 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017649 auto resources = mImpl->resources();
17650 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017651 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017652 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017653 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017654 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017655 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017656 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017657 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017658 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017659 local_commandBuffer = commandBuffer;
17660 local_buffer = buffer;
17661 local_offset = offset;
17662 local_countBuffer = countBuffer;
17663 local_countBufferOffset = countBufferOffset;
17664 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017665 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017666 countingStream->rewind();
17667 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017668 uint64_t cgen_var_1229;
17669 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1229, 1);
17670 countingStream->write((uint64_t*)&cgen_var_1229, 1 * 8);
17671 uint64_t cgen_var_1230;
17672 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1230, 1);
17673 countingStream->write((uint64_t*)&cgen_var_1230, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017674 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017675 uint64_t cgen_var_1231;
17676 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1231, 1);
17677 countingStream->write((uint64_t*)&cgen_var_1231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017678 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17679 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17680 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017681 }
17682 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17683 countingStream->rewind();
17684 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
17685 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
17686 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017687 uint64_t cgen_var_1232;
17688 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1232, 1);
17689 stream->write((uint64_t*)&cgen_var_1232, 1 * 8);
17690 uint64_t cgen_var_1233;
17691 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1233, 1);
17692 stream->write((uint64_t*)&cgen_var_1233, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017693 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017694 uint64_t cgen_var_1234;
17695 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1234, 1);
17696 stream->write((uint64_t*)&cgen_var_1234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017697 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17698 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17699 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017700 mImpl->log("finish vkCmdDrawIndexedIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017701}
17702
17703#endif
17704#ifdef VK_AMD_negative_viewport_height
17705#endif
17706#ifdef VK_AMD_gpu_shader_half_float
17707#endif
17708#ifdef VK_AMD_shader_ballot
17709#endif
17710#ifdef VK_AMD_texture_gather_bias_lod
17711#endif
17712#ifdef VK_AMD_shader_info
17713VkResult VkEncoder::vkGetShaderInfoAMD(
17714 VkDevice device,
17715 VkPipeline pipeline,
17716 VkShaderStageFlagBits shaderStage,
17717 VkShaderInfoTypeAMD infoType,
17718 size_t* pInfoSize,
17719 void* pInfo)
17720{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017721 mImpl->log("start vkGetShaderInfoAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017722 auto stream = mImpl->stream();
17723 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017724 auto resources = mImpl->resources();
17725 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017726 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017727 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017728 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017729 VkShaderStageFlagBits local_shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017730 VkShaderInfoTypeAMD local_infoType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017731 local_device = device;
17732 local_pipeline = pipeline;
17733 local_shaderStage = shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017734 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017735 countingStream->rewind();
17736 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017737 uint64_t cgen_var_1235;
17738 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1235, 1);
17739 countingStream->write((uint64_t*)&cgen_var_1235, 1 * 8);
17740 uint64_t cgen_var_1236;
17741 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1236, 1);
17742 countingStream->write((uint64_t*)&cgen_var_1236, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017743 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
17744 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017745 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017746 uint64_t cgen_var_1237 = (uint64_t)(uintptr_t)pInfoSize;
17747 countingStream->putBe64(cgen_var_1237);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017748 if (pInfoSize)
17749 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017750 uint64_t cgen_var_1238 = (uint64_t)(*pInfoSize);
17751 countingStream->putBe64(cgen_var_1238);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017752 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017753 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017754 uint64_t cgen_var_1239 = (uint64_t)(uintptr_t)pInfo;
17755 countingStream->putBe64(cgen_var_1239);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017756 if (pInfo)
17757 {
17758 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17759 }
17760 }
17761 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17762 countingStream->rewind();
17763 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
17764 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
17765 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017766 uint64_t cgen_var_1240;
17767 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1240, 1);
17768 stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
17769 uint64_t cgen_var_1241;
17770 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1241, 1);
17771 stream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017772 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
17773 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017774 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017775 uint64_t cgen_var_1242 = (uint64_t)(uintptr_t)pInfoSize;
17776 stream->putBe64(cgen_var_1242);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017777 if (pInfoSize)
17778 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017779 uint64_t cgen_var_1243 = (uint64_t)(*pInfoSize);
17780 stream->putBe64(cgen_var_1243);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017781 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017782 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017783 uint64_t cgen_var_1244 = (uint64_t)(uintptr_t)pInfo;
17784 stream->putBe64(cgen_var_1244);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017785 if (pInfo)
17786 {
17787 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17788 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017789 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017790 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017791 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017792 if (pInfoSize)
17793 {
17794 if (!(check_pInfoSize))
17795 {
17796 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
17797 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017798 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017799 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017800 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017801 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017802 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017803 if (pInfo)
17804 {
17805 if (!(check_pInfo))
17806 {
17807 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
17808 }
17809 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17810 }
17811 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
17812 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017813 countingStream->clearPool();
17814 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017815 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017816 mImpl->log("finish vkGetShaderInfoAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017817 return vkGetShaderInfoAMD_VkResult_return;
17818}
17819
17820#endif
17821#ifdef VK_AMD_shader_image_load_store_lod
17822#endif
17823#ifdef VK_IMG_format_pvrtc
17824#endif
17825#ifdef VK_NV_external_memory_capabilities
17826VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
17827 VkPhysicalDevice physicalDevice,
17828 VkFormat format,
17829 VkImageType type,
17830 VkImageTiling tiling,
17831 VkImageUsageFlags usage,
17832 VkImageCreateFlags flags,
17833 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
17834 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
17835{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017836 mImpl->log("start vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017837 auto stream = mImpl->stream();
17838 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017839 auto resources = mImpl->resources();
17840 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017841 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017842 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017843 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017844 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017845 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017846 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017847 VkImageCreateFlags local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017848 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017849 local_physicalDevice = physicalDevice;
17850 local_format = format;
17851 local_type = type;
17852 local_tiling = tiling;
17853 local_usage = usage;
17854 local_flags = flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017855 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017856 countingStream->rewind();
17857 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017858 uint64_t cgen_var_1248;
17859 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1248, 1);
17860 countingStream->write((uint64_t*)&cgen_var_1248, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017861 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
17862 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
17863 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
17864 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
17865 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
17866 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017867 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17868 }
17869 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17870 countingStream->rewind();
17871 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
17872 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
17873 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017874 uint64_t cgen_var_1249;
17875 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1249, 1);
17876 stream->write((uint64_t*)&cgen_var_1249, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017877 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
17878 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
17879 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
17880 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
17881 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
17882 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017883 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17884 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017885 if (pExternalImageFormatProperties)
17886 {
17887 transform_fromhost_VkExternalImageFormatPropertiesNV(mImpl->resources(), (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17888 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017889 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
17890 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017891 countingStream->clearPool();
17892 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017893 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017894 mImpl->log("finish vkGetPhysicalDeviceExternalImageFormatPropertiesNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017895 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
17896}
17897
17898#endif
17899#ifdef VK_NV_external_memory
17900#endif
17901#ifdef VK_NV_external_memory_win32
17902VkResult VkEncoder::vkGetMemoryWin32HandleNV(
17903 VkDevice device,
17904 VkDeviceMemory memory,
17905 VkExternalMemoryHandleTypeFlagsNV handleType,
17906 HANDLE* pHandle)
17907{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017908 mImpl->log("start vkGetMemoryWin32HandleNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017909 auto stream = mImpl->stream();
17910 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017911 auto resources = mImpl->resources();
17912 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017913 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017914 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017915 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017916 VkExternalMemoryHandleTypeFlagsNV local_handleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017917 local_device = device;
17918 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017919 local_handleType = handleType;
Lingfeng Yangafe29d32018-12-25 13:01:52 -080017920 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017921 countingStream->rewind();
17922 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017923 uint64_t cgen_var_1250;
17924 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1250, 1);
17925 countingStream->write((uint64_t*)&cgen_var_1250, 1 * 8);
17926 uint64_t cgen_var_1251;
17927 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1251, 1);
17928 countingStream->write((uint64_t*)&cgen_var_1251, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017929 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017930 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
17931 }
17932 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17933 countingStream->rewind();
17934 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
17935 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
17936 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017937 uint64_t cgen_var_1252;
17938 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1252, 1);
17939 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
17940 uint64_t cgen_var_1253;
17941 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1253, 1);
17942 stream->write((uint64_t*)&cgen_var_1253, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017943 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017944 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
17945 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
17946 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
17947 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017948 countingStream->clearPool();
17949 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017950 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017951 mImpl->log("finish vkGetMemoryWin32HandleNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017952 return vkGetMemoryWin32HandleNV_VkResult_return;
17953}
17954
17955#endif
17956#ifdef VK_NV_win32_keyed_mutex
17957#endif
17958#ifdef VK_EXT_validation_flags
17959#endif
17960#ifdef VK_NN_vi_surface
17961VkResult VkEncoder::vkCreateViSurfaceNN(
17962 VkInstance instance,
17963 const VkViSurfaceCreateInfoNN* pCreateInfo,
17964 const VkAllocationCallbacks* pAllocator,
17965 VkSurfaceKHR* pSurface)
17966{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017967 mImpl->log("start vkCreateViSurfaceNN");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017968 auto stream = mImpl->stream();
17969 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017970 auto resources = mImpl->resources();
17971 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017972 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017973 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017974 VkViSurfaceCreateInfoNN* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017975 VkAllocationCallbacks* local_pAllocator;
17976 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017977 local_pCreateInfo = nullptr;
17978 if (pCreateInfo)
17979 {
17980 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
17981 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
17982 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017983 local_pAllocator = nullptr;
17984 if (pAllocator)
17985 {
17986 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17987 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17988 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017989 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017990 if (local_pCreateInfo)
17991 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017992 transform_tohost_VkViSurfaceCreateInfoNN(mImpl->resources(), (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017993 }
17994 if (local_pAllocator)
17995 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017996 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017997 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017998 countingStream->rewind();
17999 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018000 uint64_t cgen_var_1254;
18001 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1254, 1);
18002 countingStream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018003 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018004 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018005 uint64_t cgen_var_1255 = (uint64_t)(uintptr_t)local_pAllocator;
18006 countingStream->putBe64(cgen_var_1255);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018007 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018008 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018009 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018010 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018011 uint64_t cgen_var_1256;
18012 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1256, 1);
18013 countingStream->write((uint64_t*)&cgen_var_1256, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018014 }
18015 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18016 countingStream->rewind();
18017 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
18018 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
18019 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018020 uint64_t cgen_var_1257;
18021 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1257, 1);
18022 stream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018023 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018024 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018025 uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
18026 stream->putBe64(cgen_var_1258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018027 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018028 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018029 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018030 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018031 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018032 uint64_t cgen_var_1259;
18033 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1259, 1);
18034 stream->write((uint64_t*)&cgen_var_1259, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018035 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018036 uint64_t cgen_var_1260;
18037 stream->read((uint64_t*)&cgen_var_1260, 8);
18038 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1260, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018039 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
18040 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018041 countingStream->clearPool();
18042 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018043 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018044 mImpl->log("finish vkCreateViSurfaceNN");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018045 return vkCreateViSurfaceNN_VkResult_return;
18046}
18047
18048#endif
18049#ifdef VK_EXT_shader_subgroup_ballot
18050#endif
18051#ifdef VK_EXT_shader_subgroup_vote
18052#endif
18053#ifdef VK_EXT_conditional_rendering
18054void VkEncoder::vkCmdBeginConditionalRenderingEXT(
18055 VkCommandBuffer commandBuffer,
18056 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
18057{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018058 mImpl->log("start vkCmdBeginConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018059 auto stream = mImpl->stream();
18060 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018061 auto resources = mImpl->resources();
18062 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018063 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018064 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018065 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018066 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018067 local_pConditionalRenderingBegin = nullptr;
18068 if (pConditionalRenderingBegin)
18069 {
18070 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
18071 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
18072 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018073 if (local_pConditionalRenderingBegin)
18074 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018075 transform_tohost_VkConditionalRenderingBeginInfoEXT(mImpl->resources(), (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018076 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018077 countingStream->rewind();
18078 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018079 uint64_t cgen_var_1261;
18080 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1261, 1);
18081 countingStream->write((uint64_t*)&cgen_var_1261, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018082 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018083 }
18084 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18085 countingStream->rewind();
18086 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
18087 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
18088 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018089 uint64_t cgen_var_1262;
18090 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1262, 1);
18091 stream->write((uint64_t*)&cgen_var_1262, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018092 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018093 mImpl->log("finish vkCmdBeginConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018094}
18095
18096void VkEncoder::vkCmdEndConditionalRenderingEXT(
18097 VkCommandBuffer commandBuffer)
18098{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018099 mImpl->log("start vkCmdEndConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018100 auto stream = mImpl->stream();
18101 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018102 auto resources = mImpl->resources();
18103 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018104 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018105 VkCommandBuffer local_commandBuffer;
18106 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018107 countingStream->rewind();
18108 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018109 uint64_t cgen_var_1263;
18110 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1263, 1);
18111 countingStream->write((uint64_t*)&cgen_var_1263, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018112 }
18113 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18114 countingStream->rewind();
18115 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
18116 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
18117 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018118 uint64_t cgen_var_1264;
18119 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1264, 1);
18120 stream->write((uint64_t*)&cgen_var_1264, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018121 mImpl->log("finish vkCmdEndConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018122}
18123
18124#endif
18125#ifdef VK_NVX_device_generated_commands
18126void VkEncoder::vkCmdProcessCommandsNVX(
18127 VkCommandBuffer commandBuffer,
18128 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
18129{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018130 mImpl->log("start vkCmdProcessCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018131 auto stream = mImpl->stream();
18132 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018133 auto resources = mImpl->resources();
18134 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018135 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018136 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018137 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018138 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018139 local_pProcessCommandsInfo = nullptr;
18140 if (pProcessCommandsInfo)
18141 {
18142 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
18143 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
18144 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018145 if (local_pProcessCommandsInfo)
18146 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018147 transform_tohost_VkCmdProcessCommandsInfoNVX(mImpl->resources(), (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018148 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018149 countingStream->rewind();
18150 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018151 uint64_t cgen_var_1265;
18152 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1265, 1);
18153 countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018154 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018155 }
18156 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18157 countingStream->rewind();
18158 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
18159 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
18160 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018161 uint64_t cgen_var_1266;
18162 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1266, 1);
18163 stream->write((uint64_t*)&cgen_var_1266, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018164 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018165 mImpl->log("finish vkCmdProcessCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018166}
18167
18168void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
18169 VkCommandBuffer commandBuffer,
18170 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
18171{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018172 mImpl->log("start vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018173 auto stream = mImpl->stream();
18174 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018175 auto resources = mImpl->resources();
18176 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018177 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018178 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018179 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018180 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018181 local_pReserveSpaceInfo = nullptr;
18182 if (pReserveSpaceInfo)
18183 {
18184 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
18185 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
18186 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018187 if (local_pReserveSpaceInfo)
18188 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018189 transform_tohost_VkCmdReserveSpaceForCommandsInfoNVX(mImpl->resources(), (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018190 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018191 countingStream->rewind();
18192 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018193 uint64_t cgen_var_1267;
18194 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1267, 1);
18195 countingStream->write((uint64_t*)&cgen_var_1267, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018196 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018197 }
18198 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18199 countingStream->rewind();
18200 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
18201 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
18202 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018203 uint64_t cgen_var_1268;
18204 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1268, 1);
18205 stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018206 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018207 mImpl->log("finish vkCmdReserveSpaceForCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018208}
18209
18210VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
18211 VkDevice device,
18212 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
18213 const VkAllocationCallbacks* pAllocator,
18214 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
18215{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018216 mImpl->log("start vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018217 auto stream = mImpl->stream();
18218 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018219 auto resources = mImpl->resources();
18220 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018221 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018222 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018223 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018224 VkAllocationCallbacks* local_pAllocator;
18225 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018226 local_pCreateInfo = nullptr;
18227 if (pCreateInfo)
18228 {
18229 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
18230 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
18231 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018232 local_pAllocator = nullptr;
18233 if (pAllocator)
18234 {
18235 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18236 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18237 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018238 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018239 if (local_pCreateInfo)
18240 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018241 transform_tohost_VkIndirectCommandsLayoutCreateInfoNVX(mImpl->resources(), (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018242 }
18243 if (local_pAllocator)
18244 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018245 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018246 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018247 countingStream->rewind();
18248 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018249 uint64_t cgen_var_1269;
18250 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1269, 1);
18251 countingStream->write((uint64_t*)&cgen_var_1269, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018252 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018253 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018254 uint64_t cgen_var_1270 = (uint64_t)(uintptr_t)local_pAllocator;
18255 countingStream->putBe64(cgen_var_1270);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018256 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018257 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018258 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018259 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018260 uint64_t cgen_var_1271;
18261 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1271, 1);
18262 countingStream->write((uint64_t*)&cgen_var_1271, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018263 }
18264 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18265 countingStream->rewind();
18266 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
18267 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
18268 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018269 uint64_t cgen_var_1272;
18270 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1272, 1);
18271 stream->write((uint64_t*)&cgen_var_1272, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018272 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018273 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018274 uint64_t cgen_var_1273 = (uint64_t)(uintptr_t)local_pAllocator;
18275 stream->putBe64(cgen_var_1273);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018276 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018277 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018278 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018279 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018280 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018281 uint64_t cgen_var_1274;
18282 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1274, 1);
18283 stream->write((uint64_t*)&cgen_var_1274, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018284 stream->setHandleMapping(resources->unwrapMapping());
18285 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018286 uint64_t cgen_var_1275;
18287 stream->read((uint64_t*)&cgen_var_1275, 8);
18288 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1275, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018289 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018290 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
18291 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018292 countingStream->clearPool();
18293 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018294 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018295 mImpl->log("finish vkCreateIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018296 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
18297}
18298
18299void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
18300 VkDevice device,
18301 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
18302 const VkAllocationCallbacks* pAllocator)
18303{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018304 mImpl->log("start vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018305 auto stream = mImpl->stream();
18306 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018307 auto resources = mImpl->resources();
18308 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018309 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018310 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018311 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018312 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018313 local_device = device;
18314 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018315 local_pAllocator = nullptr;
18316 if (pAllocator)
18317 {
18318 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18319 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18320 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018321 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018322 if (local_pAllocator)
18323 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018324 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018325 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018326 countingStream->rewind();
18327 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018328 uint64_t cgen_var_1276;
18329 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1276, 1);
18330 countingStream->write((uint64_t*)&cgen_var_1276, 1 * 8);
18331 uint64_t cgen_var_1277;
18332 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1277, 1);
18333 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018334 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018335 uint64_t cgen_var_1278 = (uint64_t)(uintptr_t)local_pAllocator;
18336 countingStream->putBe64(cgen_var_1278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018337 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018338 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018339 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018340 }
18341 }
18342 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18343 countingStream->rewind();
18344 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
18345 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
18346 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018347 uint64_t cgen_var_1279;
18348 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1279, 1);
18349 stream->write((uint64_t*)&cgen_var_1279, 1 * 8);
18350 uint64_t cgen_var_1280;
18351 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1280, 1);
18352 stream->write((uint64_t*)&cgen_var_1280, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018353 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018354 uint64_t cgen_var_1281 = (uint64_t)(uintptr_t)local_pAllocator;
18355 stream->putBe64(cgen_var_1281);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018356 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018357 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018358 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018359 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018360 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018361 mImpl->log("finish vkDestroyIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018362}
18363
18364VkResult VkEncoder::vkCreateObjectTableNVX(
18365 VkDevice device,
18366 const VkObjectTableCreateInfoNVX* pCreateInfo,
18367 const VkAllocationCallbacks* pAllocator,
18368 VkObjectTableNVX* pObjectTable)
18369{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018370 mImpl->log("start vkCreateObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018371 auto stream = mImpl->stream();
18372 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018373 auto resources = mImpl->resources();
18374 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018375 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018376 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018377 VkObjectTableCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018378 VkAllocationCallbacks* local_pAllocator;
18379 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018380 local_pCreateInfo = nullptr;
18381 if (pCreateInfo)
18382 {
18383 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
18384 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
18385 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018386 local_pAllocator = nullptr;
18387 if (pAllocator)
18388 {
18389 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18390 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18391 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018392 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018393 if (local_pCreateInfo)
18394 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018395 transform_tohost_VkObjectTableCreateInfoNVX(mImpl->resources(), (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018396 }
18397 if (local_pAllocator)
18398 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018399 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018400 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018401 countingStream->rewind();
18402 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018403 uint64_t cgen_var_1282;
18404 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1282, 1);
18405 countingStream->write((uint64_t*)&cgen_var_1282, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018406 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018407 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018408 uint64_t cgen_var_1283 = (uint64_t)(uintptr_t)local_pAllocator;
18409 countingStream->putBe64(cgen_var_1283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018410 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018411 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018412 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018413 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018414 uint64_t cgen_var_1284;
18415 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1284, 1);
18416 countingStream->write((uint64_t*)&cgen_var_1284, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018417 }
18418 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18419 countingStream->rewind();
18420 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
18421 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
18422 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018423 uint64_t cgen_var_1285;
18424 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1285, 1);
18425 stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018426 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018427 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018428 uint64_t cgen_var_1286 = (uint64_t)(uintptr_t)local_pAllocator;
18429 stream->putBe64(cgen_var_1286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018430 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018431 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018432 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018433 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018434 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018435 uint64_t cgen_var_1287;
18436 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1287, 1);
18437 stream->write((uint64_t*)&cgen_var_1287, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018438 stream->setHandleMapping(resources->unwrapMapping());
18439 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018440 uint64_t cgen_var_1288;
18441 stream->read((uint64_t*)&cgen_var_1288, 8);
18442 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1288, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018443 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018444 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
18445 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018446 countingStream->clearPool();
18447 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018448 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018449 mImpl->log("finish vkCreateObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018450 return vkCreateObjectTableNVX_VkResult_return;
18451}
18452
18453void VkEncoder::vkDestroyObjectTableNVX(
18454 VkDevice device,
18455 VkObjectTableNVX objectTable,
18456 const VkAllocationCallbacks* pAllocator)
18457{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018458 mImpl->log("start vkDestroyObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018459 auto stream = mImpl->stream();
18460 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018461 auto resources = mImpl->resources();
18462 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018463 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018464 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018465 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018466 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018467 local_device = device;
18468 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018469 local_pAllocator = nullptr;
18470 if (pAllocator)
18471 {
18472 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18473 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18474 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018475 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018476 if (local_pAllocator)
18477 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018478 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018479 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018480 countingStream->rewind();
18481 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018482 uint64_t cgen_var_1289;
18483 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
18484 countingStream->write((uint64_t*)&cgen_var_1289, 1 * 8);
18485 uint64_t cgen_var_1290;
18486 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1290, 1);
18487 countingStream->write((uint64_t*)&cgen_var_1290, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018488 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018489 uint64_t cgen_var_1291 = (uint64_t)(uintptr_t)local_pAllocator;
18490 countingStream->putBe64(cgen_var_1291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018491 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018492 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018493 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018494 }
18495 }
18496 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18497 countingStream->rewind();
18498 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
18499 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
18500 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018501 uint64_t cgen_var_1292;
18502 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1292, 1);
18503 stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
18504 uint64_t cgen_var_1293;
18505 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1293, 1);
18506 stream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018507 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018508 uint64_t cgen_var_1294 = (uint64_t)(uintptr_t)local_pAllocator;
18509 stream->putBe64(cgen_var_1294);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018510 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018511 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018512 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018513 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018514 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018515 mImpl->log("finish vkDestroyObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018516}
18517
18518VkResult VkEncoder::vkRegisterObjectsNVX(
18519 VkDevice device,
18520 VkObjectTableNVX objectTable,
18521 uint32_t objectCount,
18522 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
18523 const uint32_t* pObjectIndices)
18524{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018525 mImpl->log("start vkRegisterObjectsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018526 auto stream = mImpl->stream();
18527 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018528 auto resources = mImpl->resources();
18529 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018530 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018531 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018532 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018533 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018534 VkObjectTableEntryNVX** local_ppObjectTableEntries;
18535 uint32_t* local_pObjectIndices;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018536 local_device = device;
18537 local_objectTable = objectTable;
18538 local_objectCount = objectCount;
18539 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018540 local_pObjectIndices = nullptr;
18541 if (pObjectIndices)
18542 {
18543 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
18544 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018545 (void)local_ppObjectTableEntries;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018546 countingStream->rewind();
18547 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018548 uint64_t cgen_var_1295;
18549 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1295, 1);
18550 countingStream->write((uint64_t*)&cgen_var_1295, 1 * 8);
18551 uint64_t cgen_var_1296;
18552 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1296, 1);
18553 countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018554 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080018555 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018556 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018557 }
18558 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18559 countingStream->rewind();
18560 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
18561 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
18562 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018563 uint64_t cgen_var_1297;
18564 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1297, 1);
18565 stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
18566 uint64_t cgen_var_1298;
18567 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1298, 1);
18568 stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018569 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080018570 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018571 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018572 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
18573 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018574 countingStream->clearPool();
18575 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018576 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018577 mImpl->log("finish vkRegisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018578 return vkRegisterObjectsNVX_VkResult_return;
18579}
18580
18581VkResult VkEncoder::vkUnregisterObjectsNVX(
18582 VkDevice device,
18583 VkObjectTableNVX objectTable,
18584 uint32_t objectCount,
18585 const VkObjectEntryTypeNVX* pObjectEntryTypes,
18586 const uint32_t* pObjectIndices)
18587{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018588 mImpl->log("start vkUnregisterObjectsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018589 auto stream = mImpl->stream();
18590 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018591 auto resources = mImpl->resources();
18592 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018593 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018594 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018595 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018596 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018597 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018598 uint32_t* local_pObjectIndices;
18599 local_device = device;
18600 local_objectTable = objectTable;
18601 local_objectCount = objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018602 local_pObjectEntryTypes = nullptr;
18603 if (pObjectEntryTypes)
18604 {
18605 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
18606 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018607 local_pObjectIndices = nullptr;
18608 if (pObjectIndices)
18609 {
18610 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
18611 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018612 countingStream->rewind();
18613 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018614 uint64_t cgen_var_1299;
18615 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1299, 1);
18616 countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8);
18617 uint64_t cgen_var_1300;
18618 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1300, 1);
18619 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018620 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
18621 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
18622 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018623 }
18624 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18625 countingStream->rewind();
18626 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
18627 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
18628 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018629 uint64_t cgen_var_1301;
18630 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1301, 1);
18631 stream->write((uint64_t*)&cgen_var_1301, 1 * 8);
18632 uint64_t cgen_var_1302;
18633 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1302, 1);
18634 stream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018635 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
18636 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
18637 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018638 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
18639 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018640 countingStream->clearPool();
18641 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018642 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018643 mImpl->log("finish vkUnregisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018644 return vkUnregisterObjectsNVX_VkResult_return;
18645}
18646
18647void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
18648 VkPhysicalDevice physicalDevice,
18649 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
18650 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
18651{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018652 mImpl->log("start vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018653 auto stream = mImpl->stream();
18654 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018655 auto resources = mImpl->resources();
18656 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018657 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018658 VkPhysicalDevice local_physicalDevice;
18659 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018660 countingStream->rewind();
18661 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018662 uint64_t cgen_var_1303;
18663 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1303, 1);
18664 countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018665 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18666 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18667 }
18668 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18669 countingStream->rewind();
18670 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
18671 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
18672 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018673 uint64_t cgen_var_1304;
18674 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1304, 1);
18675 stream->write((uint64_t*)&cgen_var_1304, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018676 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18677 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18678 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018679 if (pFeatures)
18680 {
18681 transform_fromhost_VkDeviceGeneratedCommandsFeaturesNVX(mImpl->resources(), (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18682 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018683 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018684 if (pLimits)
18685 {
18686 transform_fromhost_VkDeviceGeneratedCommandsLimitsNVX(mImpl->resources(), (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18687 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018688 mImpl->log("finish vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018689}
18690
18691#endif
18692#ifdef VK_NV_clip_space_w_scaling
18693void VkEncoder::vkCmdSetViewportWScalingNV(
18694 VkCommandBuffer commandBuffer,
18695 uint32_t firstViewport,
18696 uint32_t viewportCount,
18697 const VkViewportWScalingNV* pViewportWScalings)
18698{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018699 mImpl->log("start vkCmdSetViewportWScalingNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018700 auto stream = mImpl->stream();
18701 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018702 auto resources = mImpl->resources();
18703 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018704 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018705 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018706 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018707 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018708 VkViewportWScalingNV* local_pViewportWScalings;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018709 local_commandBuffer = commandBuffer;
18710 local_firstViewport = firstViewport;
18711 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018712 local_pViewportWScalings = nullptr;
18713 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018714 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018715 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018716 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18717 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018718 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
18719 }
18720 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018721 if (local_pViewportWScalings)
18722 {
18723 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18724 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018725 transform_tohost_VkViewportWScalingNV(mImpl->resources(), (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018726 }
18727 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018728 countingStream->rewind();
18729 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018730 uint64_t cgen_var_1305;
18731 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1305, 1);
18732 countingStream->write((uint64_t*)&cgen_var_1305, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018733 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
18734 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
18735 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18736 {
18737 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018738 }
18739 }
18740 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18741 countingStream->rewind();
18742 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
18743 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
18744 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018745 uint64_t cgen_var_1306;
18746 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1306, 1);
18747 stream->write((uint64_t*)&cgen_var_1306, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018748 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
18749 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018750 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18751 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018752 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018753 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018754 mImpl->log("finish vkCmdSetViewportWScalingNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018755}
18756
18757#endif
18758#ifdef VK_EXT_direct_mode_display
18759VkResult VkEncoder::vkReleaseDisplayEXT(
18760 VkPhysicalDevice physicalDevice,
18761 VkDisplayKHR display)
18762{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018763 mImpl->log("start vkReleaseDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018764 auto stream = mImpl->stream();
18765 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018766 auto resources = mImpl->resources();
18767 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018768 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018769 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018770 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018771 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018772 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018773 countingStream->rewind();
18774 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018775 uint64_t cgen_var_1307;
18776 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1307, 1);
18777 countingStream->write((uint64_t*)&cgen_var_1307, 1 * 8);
18778 uint64_t cgen_var_1308;
18779 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1308, 1);
18780 countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018781 }
18782 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18783 countingStream->rewind();
18784 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
18785 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
18786 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018787 uint64_t cgen_var_1309;
18788 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1309, 1);
18789 stream->write((uint64_t*)&cgen_var_1309, 1 * 8);
18790 uint64_t cgen_var_1310;
18791 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1310, 1);
18792 stream->write((uint64_t*)&cgen_var_1310, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018793 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
18794 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018795 countingStream->clearPool();
18796 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018797 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018798 mImpl->log("finish vkReleaseDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018799 return vkReleaseDisplayEXT_VkResult_return;
18800}
18801
18802#endif
18803#ifdef VK_EXT_acquire_xlib_display
18804VkResult VkEncoder::vkAcquireXlibDisplayEXT(
18805 VkPhysicalDevice physicalDevice,
18806 Display* dpy,
18807 VkDisplayKHR display)
18808{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018809 mImpl->log("start vkAcquireXlibDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018810 auto stream = mImpl->stream();
18811 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018812 auto resources = mImpl->resources();
18813 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018814 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018815 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018816 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018817 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018818 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018819 countingStream->rewind();
18820 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018821 uint64_t cgen_var_1311;
18822 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1311, 1);
18823 countingStream->write((uint64_t*)&cgen_var_1311, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018824 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018825 uint64_t cgen_var_1312;
18826 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1312, 1);
18827 countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018828 }
18829 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18830 countingStream->rewind();
18831 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
18832 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
18833 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018834 uint64_t cgen_var_1313;
18835 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1313, 1);
18836 stream->write((uint64_t*)&cgen_var_1313, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018837 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018838 uint64_t cgen_var_1314;
18839 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1314, 1);
18840 stream->write((uint64_t*)&cgen_var_1314, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018841 stream->read((Display*)dpy, sizeof(Display));
18842 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
18843 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018844 countingStream->clearPool();
18845 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018846 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018847 mImpl->log("finish vkAcquireXlibDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018848 return vkAcquireXlibDisplayEXT_VkResult_return;
18849}
18850
18851VkResult VkEncoder::vkGetRandROutputDisplayEXT(
18852 VkPhysicalDevice physicalDevice,
18853 Display* dpy,
18854 RROutput rrOutput,
18855 VkDisplayKHR* pDisplay)
18856{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018857 mImpl->log("start vkGetRandROutputDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018858 auto stream = mImpl->stream();
18859 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018860 auto resources = mImpl->resources();
18861 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018862 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018863 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018864 RROutput local_rrOutput;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018865 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018866 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018867 countingStream->rewind();
18868 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018869 uint64_t cgen_var_1315;
18870 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1315, 1);
18871 countingStream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018872 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018873 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018874 uint64_t cgen_var_1316;
18875 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1316, 1);
18876 countingStream->write((uint64_t*)&cgen_var_1316, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018877 }
18878 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18879 countingStream->rewind();
18880 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
18881 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
18882 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018883 uint64_t cgen_var_1317;
18884 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1317, 1);
18885 stream->write((uint64_t*)&cgen_var_1317, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018886 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018887 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080018888 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018889 uint64_t cgen_var_1318;
18890 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1318, 1);
18891 stream->write((uint64_t*)&cgen_var_1318, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018892 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018893 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018894 uint64_t cgen_var_1319;
18895 stream->read((uint64_t*)&cgen_var_1319, 8);
18896 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1319, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018897 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
18898 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018899 countingStream->clearPool();
18900 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018901 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018902 mImpl->log("finish vkGetRandROutputDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018903 return vkGetRandROutputDisplayEXT_VkResult_return;
18904}
18905
18906#endif
18907#ifdef VK_EXT_display_surface_counter
18908VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
18909 VkPhysicalDevice physicalDevice,
18910 VkSurfaceKHR surface,
18911 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
18912{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018913 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018914 auto stream = mImpl->stream();
18915 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018916 auto resources = mImpl->resources();
18917 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018918 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018919 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018920 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018921 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018922 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018923 countingStream->rewind();
18924 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018925 uint64_t cgen_var_1320;
18926 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1320, 1);
18927 countingStream->write((uint64_t*)&cgen_var_1320, 1 * 8);
18928 uint64_t cgen_var_1321;
18929 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1321, 1);
18930 countingStream->write((uint64_t*)&cgen_var_1321, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018931 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18932 }
18933 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18934 countingStream->rewind();
18935 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
18936 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
18937 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018938 uint64_t cgen_var_1322;
18939 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1322, 1);
18940 stream->write((uint64_t*)&cgen_var_1322, 1 * 8);
18941 uint64_t cgen_var_1323;
18942 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1323, 1);
18943 stream->write((uint64_t*)&cgen_var_1323, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018944 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18945 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018946 if (pSurfaceCapabilities)
18947 {
18948 transform_fromhost_VkSurfaceCapabilities2EXT(mImpl->resources(), (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18949 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018950 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
18951 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018952 countingStream->clearPool();
18953 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018954 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018955 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2EXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018956 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
18957}
18958
18959#endif
18960#ifdef VK_EXT_display_control
18961VkResult VkEncoder::vkDisplayPowerControlEXT(
18962 VkDevice device,
18963 VkDisplayKHR display,
18964 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
18965{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018966 mImpl->log("start vkDisplayPowerControlEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018967 auto stream = mImpl->stream();
18968 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018969 auto resources = mImpl->resources();
18970 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018971 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018972 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018973 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018974 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018975 local_device = device;
18976 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018977 local_pDisplayPowerInfo = nullptr;
18978 if (pDisplayPowerInfo)
18979 {
18980 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
18981 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
18982 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018983 if (local_pDisplayPowerInfo)
18984 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018985 transform_tohost_VkDisplayPowerInfoEXT(mImpl->resources(), (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018986 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018987 countingStream->rewind();
18988 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018989 uint64_t cgen_var_1324;
18990 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1324, 1);
18991 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
18992 uint64_t cgen_var_1325;
18993 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1325, 1);
18994 countingStream->write((uint64_t*)&cgen_var_1325, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018995 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018996 }
18997 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18998 countingStream->rewind();
18999 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
19000 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
19001 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019002 uint64_t cgen_var_1326;
19003 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1326, 1);
19004 stream->write((uint64_t*)&cgen_var_1326, 1 * 8);
19005 uint64_t cgen_var_1327;
19006 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1327, 1);
19007 stream->write((uint64_t*)&cgen_var_1327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019008 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019009 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
19010 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019011 countingStream->clearPool();
19012 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019013 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019014 mImpl->log("finish vkDisplayPowerControlEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019015 return vkDisplayPowerControlEXT_VkResult_return;
19016}
19017
19018VkResult VkEncoder::vkRegisterDeviceEventEXT(
19019 VkDevice device,
19020 const VkDeviceEventInfoEXT* pDeviceEventInfo,
19021 const VkAllocationCallbacks* pAllocator,
19022 VkFence* pFence)
19023{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019024 mImpl->log("start vkRegisterDeviceEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019025 auto stream = mImpl->stream();
19026 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019027 auto resources = mImpl->resources();
19028 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019029 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019030 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019031 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019032 VkAllocationCallbacks* local_pAllocator;
19033 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019034 local_pDeviceEventInfo = nullptr;
19035 if (pDeviceEventInfo)
19036 {
19037 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
19038 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
19039 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019040 local_pAllocator = nullptr;
19041 if (pAllocator)
19042 {
19043 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19044 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19045 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019046 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019047 if (local_pDeviceEventInfo)
19048 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019049 transform_tohost_VkDeviceEventInfoEXT(mImpl->resources(), (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019050 }
19051 if (local_pAllocator)
19052 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019053 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019054 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019055 countingStream->rewind();
19056 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019057 uint64_t cgen_var_1328;
19058 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1328, 1);
19059 countingStream->write((uint64_t*)&cgen_var_1328, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019060 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019061 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019062 uint64_t cgen_var_1329 = (uint64_t)(uintptr_t)local_pAllocator;
19063 countingStream->putBe64(cgen_var_1329);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019064 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019065 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019066 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019067 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019068 uint64_t cgen_var_1330;
19069 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1330, 1);
19070 countingStream->write((uint64_t*)&cgen_var_1330, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019071 }
19072 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19073 countingStream->rewind();
19074 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
19075 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
19076 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019077 uint64_t cgen_var_1331;
19078 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1331, 1);
19079 stream->write((uint64_t*)&cgen_var_1331, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019080 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019081 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019082 uint64_t cgen_var_1332 = (uint64_t)(uintptr_t)local_pAllocator;
19083 stream->putBe64(cgen_var_1332);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019084 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019085 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019086 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019087 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019088 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019089 uint64_t cgen_var_1333;
19090 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1333, 1);
19091 stream->write((uint64_t*)&cgen_var_1333, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019092 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019093 uint64_t cgen_var_1334;
19094 stream->read((uint64_t*)&cgen_var_1334, 8);
19095 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1334, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019096 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
19097 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019098 countingStream->clearPool();
19099 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019100 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019101 mImpl->log("finish vkRegisterDeviceEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019102 return vkRegisterDeviceEventEXT_VkResult_return;
19103}
19104
19105VkResult VkEncoder::vkRegisterDisplayEventEXT(
19106 VkDevice device,
19107 VkDisplayKHR display,
19108 const VkDisplayEventInfoEXT* pDisplayEventInfo,
19109 const VkAllocationCallbacks* pAllocator,
19110 VkFence* pFence)
19111{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019112 mImpl->log("start vkRegisterDisplayEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019113 auto stream = mImpl->stream();
19114 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019115 auto resources = mImpl->resources();
19116 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019117 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019118 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019119 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019120 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019121 VkAllocationCallbacks* local_pAllocator;
19122 local_device = device;
19123 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019124 local_pDisplayEventInfo = nullptr;
19125 if (pDisplayEventInfo)
19126 {
19127 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
19128 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
19129 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019130 local_pAllocator = nullptr;
19131 if (pAllocator)
19132 {
19133 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19134 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19135 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019136 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019137 if (local_pDisplayEventInfo)
19138 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019139 transform_tohost_VkDisplayEventInfoEXT(mImpl->resources(), (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019140 }
19141 if (local_pAllocator)
19142 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019143 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019144 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019145 countingStream->rewind();
19146 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019147 uint64_t cgen_var_1335;
19148 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1335, 1);
19149 countingStream->write((uint64_t*)&cgen_var_1335, 1 * 8);
19150 uint64_t cgen_var_1336;
19151 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1336, 1);
19152 countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019153 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019154 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019155 uint64_t cgen_var_1337 = (uint64_t)(uintptr_t)local_pAllocator;
19156 countingStream->putBe64(cgen_var_1337);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019157 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019158 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019159 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019160 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019161 uint64_t cgen_var_1338;
19162 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1338, 1);
19163 countingStream->write((uint64_t*)&cgen_var_1338, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019164 }
19165 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19166 countingStream->rewind();
19167 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
19168 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
19169 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019170 uint64_t cgen_var_1339;
19171 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1339, 1);
19172 stream->write((uint64_t*)&cgen_var_1339, 1 * 8);
19173 uint64_t cgen_var_1340;
19174 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1340, 1);
19175 stream->write((uint64_t*)&cgen_var_1340, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019176 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019177 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019178 uint64_t cgen_var_1341 = (uint64_t)(uintptr_t)local_pAllocator;
19179 stream->putBe64(cgen_var_1341);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019180 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019181 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019182 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019183 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019184 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019185 uint64_t cgen_var_1342;
19186 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1342, 1);
19187 stream->write((uint64_t*)&cgen_var_1342, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019188 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019189 uint64_t cgen_var_1343;
19190 stream->read((uint64_t*)&cgen_var_1343, 8);
19191 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1343, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019192 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
19193 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019194 countingStream->clearPool();
19195 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019196 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019197 mImpl->log("finish vkRegisterDisplayEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019198 return vkRegisterDisplayEventEXT_VkResult_return;
19199}
19200
19201VkResult VkEncoder::vkGetSwapchainCounterEXT(
19202 VkDevice device,
19203 VkSwapchainKHR swapchain,
19204 VkSurfaceCounterFlagBitsEXT counter,
19205 uint64_t* pCounterValue)
19206{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019207 mImpl->log("start vkGetSwapchainCounterEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019208 auto stream = mImpl->stream();
19209 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019210 auto resources = mImpl->resources();
19211 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019212 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019213 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019214 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019215 VkSurfaceCounterFlagBitsEXT local_counter;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019216 local_device = device;
19217 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019218 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019219 countingStream->rewind();
19220 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019221 uint64_t cgen_var_1344;
19222 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1344, 1);
19223 countingStream->write((uint64_t*)&cgen_var_1344, 1 * 8);
19224 uint64_t cgen_var_1345;
19225 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1345, 1);
19226 countingStream->write((uint64_t*)&cgen_var_1345, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019227 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019228 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
19229 }
19230 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19231 countingStream->rewind();
19232 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
19233 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
19234 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019235 uint64_t cgen_var_1346;
19236 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1346, 1);
19237 stream->write((uint64_t*)&cgen_var_1346, 1 * 8);
19238 uint64_t cgen_var_1347;
19239 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1347, 1);
19240 stream->write((uint64_t*)&cgen_var_1347, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019241 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019242 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
19243 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
19244 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
19245 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019246 countingStream->clearPool();
19247 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019248 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019249 mImpl->log("finish vkGetSwapchainCounterEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019250 return vkGetSwapchainCounterEXT_VkResult_return;
19251}
19252
19253#endif
19254#ifdef VK_GOOGLE_display_timing
19255VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
19256 VkDevice device,
19257 VkSwapchainKHR swapchain,
19258 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
19259{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019260 mImpl->log("start vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019261 auto stream = mImpl->stream();
19262 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019263 auto resources = mImpl->resources();
19264 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019265 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019266 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019267 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019268 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019269 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019270 countingStream->rewind();
19271 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019272 uint64_t cgen_var_1348;
19273 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1348, 1);
19274 countingStream->write((uint64_t*)&cgen_var_1348, 1 * 8);
19275 uint64_t cgen_var_1349;
19276 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1349, 1);
19277 countingStream->write((uint64_t*)&cgen_var_1349, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019278 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19279 }
19280 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19281 countingStream->rewind();
19282 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
19283 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
19284 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019285 uint64_t cgen_var_1350;
19286 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1350, 1);
19287 stream->write((uint64_t*)&cgen_var_1350, 1 * 8);
19288 uint64_t cgen_var_1351;
19289 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1351, 1);
19290 stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019291 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19292 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019293 if (pDisplayTimingProperties)
19294 {
19295 transform_fromhost_VkRefreshCycleDurationGOOGLE(mImpl->resources(), (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19296 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019297 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
19298 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019299 countingStream->clearPool();
19300 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019301 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019302 mImpl->log("finish vkGetRefreshCycleDurationGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019303 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
19304}
19305
19306VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
19307 VkDevice device,
19308 VkSwapchainKHR swapchain,
19309 uint32_t* pPresentationTimingCount,
19310 VkPastPresentationTimingGOOGLE* pPresentationTimings)
19311{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019312 mImpl->log("start vkGetPastPresentationTimingGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019313 auto stream = mImpl->stream();
19314 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019315 auto resources = mImpl->resources();
19316 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019317 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019318 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019319 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019320 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019321 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019322 countingStream->rewind();
19323 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019324 uint64_t cgen_var_1352;
19325 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1);
19326 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
19327 uint64_t cgen_var_1353;
19328 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1353, 1);
19329 countingStream->write((uint64_t*)&cgen_var_1353, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019330 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019331 uint64_t cgen_var_1354 = (uint64_t)(uintptr_t)pPresentationTimingCount;
19332 countingStream->putBe64(cgen_var_1354);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019333 if (pPresentationTimingCount)
19334 {
19335 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19336 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019337 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019338 uint64_t cgen_var_1355 = (uint64_t)(uintptr_t)pPresentationTimings;
19339 countingStream->putBe64(cgen_var_1355);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019340 if (pPresentationTimings)
19341 {
19342 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19343 {
19344 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19345 }
19346 }
19347 }
19348 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19349 countingStream->rewind();
19350 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
19351 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
19352 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019353 uint64_t cgen_var_1356;
19354 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1356, 1);
19355 stream->write((uint64_t*)&cgen_var_1356, 1 * 8);
19356 uint64_t cgen_var_1357;
19357 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1357, 1);
19358 stream->write((uint64_t*)&cgen_var_1357, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019359 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019360 uint64_t cgen_var_1358 = (uint64_t)(uintptr_t)pPresentationTimingCount;
19361 stream->putBe64(cgen_var_1358);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019362 if (pPresentationTimingCount)
19363 {
19364 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19365 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019366 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019367 uint64_t cgen_var_1359 = (uint64_t)(uintptr_t)pPresentationTimings;
19368 stream->putBe64(cgen_var_1359);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019369 if (pPresentationTimings)
19370 {
19371 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19372 {
19373 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19374 }
19375 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019376 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019377 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019378 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019379 if (pPresentationTimingCount)
19380 {
19381 if (!(check_pPresentationTimingCount))
19382 {
19383 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
19384 }
19385 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19386 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019387 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019388 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019389 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019390 if (pPresentationTimings)
19391 {
19392 if (!(check_pPresentationTimings))
19393 {
19394 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
19395 }
19396 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19397 {
19398 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19399 }
19400 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080019401 if (pPresentationTimings)
19402 {
19403 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19404 {
19405 transform_fromhost_VkPastPresentationTimingGOOGLE(mImpl->resources(), (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19406 }
19407 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019408 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
19409 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019410 countingStream->clearPool();
19411 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019412 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019413 mImpl->log("finish vkGetPastPresentationTimingGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019414 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
19415}
19416
19417#endif
19418#ifdef VK_NV_sample_mask_override_coverage
19419#endif
19420#ifdef VK_NV_geometry_shader_passthrough
19421#endif
19422#ifdef VK_NV_viewport_array2
19423#endif
19424#ifdef VK_NVX_multiview_per_view_attributes
19425#endif
19426#ifdef VK_NV_viewport_swizzle
19427#endif
19428#ifdef VK_EXT_discard_rectangles
19429void VkEncoder::vkCmdSetDiscardRectangleEXT(
19430 VkCommandBuffer commandBuffer,
19431 uint32_t firstDiscardRectangle,
19432 uint32_t discardRectangleCount,
19433 const VkRect2D* pDiscardRectangles)
19434{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019435 mImpl->log("start vkCmdSetDiscardRectangleEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019436 auto stream = mImpl->stream();
19437 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019438 auto resources = mImpl->resources();
19439 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019440 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019441 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019442 uint32_t local_firstDiscardRectangle;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019443 uint32_t local_discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019444 VkRect2D* local_pDiscardRectangles;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019445 local_commandBuffer = commandBuffer;
19446 local_firstDiscardRectangle = firstDiscardRectangle;
19447 local_discardRectangleCount = discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019448 local_pDiscardRectangles = nullptr;
19449 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019450 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019451 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019452 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19453 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019454 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
19455 }
19456 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019457 if (local_pDiscardRectangles)
19458 {
19459 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19460 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019461 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019462 }
19463 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019464 countingStream->rewind();
19465 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019466 uint64_t cgen_var_1362;
19467 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1362, 1);
19468 countingStream->write((uint64_t*)&cgen_var_1362, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019469 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
19470 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
19471 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19472 {
19473 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019474 }
19475 }
19476 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19477 countingStream->rewind();
19478 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
19479 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
19480 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019481 uint64_t cgen_var_1363;
19482 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1363, 1);
19483 stream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019484 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
19485 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019486 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19487 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019488 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019489 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019490 mImpl->log("finish vkCmdSetDiscardRectangleEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019491}
19492
19493#endif
19494#ifdef VK_EXT_conservative_rasterization
19495#endif
19496#ifdef VK_EXT_swapchain_colorspace
19497#endif
19498#ifdef VK_EXT_hdr_metadata
19499void VkEncoder::vkSetHdrMetadataEXT(
19500 VkDevice device,
19501 uint32_t swapchainCount,
19502 const VkSwapchainKHR* pSwapchains,
19503 const VkHdrMetadataEXT* pMetadata)
19504{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019505 mImpl->log("start vkSetHdrMetadataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019506 auto stream = mImpl->stream();
19507 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019508 auto resources = mImpl->resources();
19509 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019510 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019511 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019512 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019513 VkSwapchainKHR* local_pSwapchains;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019514 VkHdrMetadataEXT* local_pMetadata;
19515 local_device = device;
19516 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019517 local_pSwapchains = nullptr;
19518 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019519 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019520 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
19521 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019522 local_pMetadata = nullptr;
19523 if (pMetadata)
19524 {
19525 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019526 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19527 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019528 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
19529 }
19530 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019531 if (local_pMetadata)
19532 {
19533 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19534 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019535 transform_tohost_VkHdrMetadataEXT(mImpl->resources(), (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019536 }
19537 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019538 countingStream->rewind();
19539 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019540 uint64_t cgen_var_1364;
19541 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1364, 1);
19542 countingStream->write((uint64_t*)&cgen_var_1364, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019543 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019544 if (((swapchainCount)))
19545 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019546 uint64_t* cgen_var_1365;
19547 countingStream->alloc((void**)&cgen_var_1365, ((swapchainCount)) * 8);
19548 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1365, ((swapchainCount)));
19549 countingStream->write((uint64_t*)cgen_var_1365, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019550 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019551 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19552 {
19553 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019554 }
19555 }
19556 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19557 countingStream->rewind();
19558 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
19559 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
19560 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019561 uint64_t cgen_var_1366;
19562 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1366, 1);
19563 stream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019564 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019565 if (((swapchainCount)))
19566 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019567 uint64_t* cgen_var_1367;
19568 stream->alloc((void**)&cgen_var_1367, ((swapchainCount)) * 8);
19569 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1367, ((swapchainCount)));
19570 stream->write((uint64_t*)cgen_var_1367, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019571 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019572 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19573 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019574 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019575 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019576 mImpl->log("finish vkSetHdrMetadataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019577}
19578
19579#endif
19580#ifdef VK_MVK_ios_surface
19581VkResult VkEncoder::vkCreateIOSSurfaceMVK(
19582 VkInstance instance,
19583 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
19584 const VkAllocationCallbacks* pAllocator,
19585 VkSurfaceKHR* pSurface)
19586{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019587 mImpl->log("start vkCreateIOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019588 auto stream = mImpl->stream();
19589 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019590 auto resources = mImpl->resources();
19591 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019592 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019593 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019594 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019595 VkAllocationCallbacks* local_pAllocator;
19596 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019597 local_pCreateInfo = nullptr;
19598 if (pCreateInfo)
19599 {
19600 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
19601 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
19602 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019603 local_pAllocator = nullptr;
19604 if (pAllocator)
19605 {
19606 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19607 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19608 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019609 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019610 if (local_pCreateInfo)
19611 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019612 transform_tohost_VkIOSSurfaceCreateInfoMVK(mImpl->resources(), (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019613 }
19614 if (local_pAllocator)
19615 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019616 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019617 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019618 countingStream->rewind();
19619 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019620 uint64_t cgen_var_1368;
19621 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1368, 1);
19622 countingStream->write((uint64_t*)&cgen_var_1368, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019623 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019624 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019625 uint64_t cgen_var_1369 = (uint64_t)(uintptr_t)local_pAllocator;
19626 countingStream->putBe64(cgen_var_1369);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019627 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019628 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019629 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019630 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019631 uint64_t cgen_var_1370;
19632 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1370, 1);
19633 countingStream->write((uint64_t*)&cgen_var_1370, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019634 }
19635 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19636 countingStream->rewind();
19637 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
19638 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
19639 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019640 uint64_t cgen_var_1371;
19641 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1371, 1);
19642 stream->write((uint64_t*)&cgen_var_1371, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019643 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019644 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019645 uint64_t cgen_var_1372 = (uint64_t)(uintptr_t)local_pAllocator;
19646 stream->putBe64(cgen_var_1372);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019647 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019648 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019649 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019650 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019651 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019652 uint64_t cgen_var_1373;
19653 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1373, 1);
19654 stream->write((uint64_t*)&cgen_var_1373, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019655 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019656 uint64_t cgen_var_1374;
19657 stream->read((uint64_t*)&cgen_var_1374, 8);
19658 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1374, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019659 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
19660 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019661 countingStream->clearPool();
19662 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019663 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019664 mImpl->log("finish vkCreateIOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019665 return vkCreateIOSSurfaceMVK_VkResult_return;
19666}
19667
19668#endif
19669#ifdef VK_MVK_macos_surface
19670VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
19671 VkInstance instance,
19672 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
19673 const VkAllocationCallbacks* pAllocator,
19674 VkSurfaceKHR* pSurface)
19675{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019676 mImpl->log("start vkCreateMacOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019677 auto stream = mImpl->stream();
19678 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019679 auto resources = mImpl->resources();
19680 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019681 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019682 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019683 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019684 VkAllocationCallbacks* local_pAllocator;
19685 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019686 local_pCreateInfo = nullptr;
19687 if (pCreateInfo)
19688 {
19689 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
19690 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
19691 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019692 local_pAllocator = nullptr;
19693 if (pAllocator)
19694 {
19695 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19696 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19697 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019698 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019699 if (local_pCreateInfo)
19700 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019701 transform_tohost_VkMacOSSurfaceCreateInfoMVK(mImpl->resources(), (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019702 }
19703 if (local_pAllocator)
19704 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019705 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019706 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019707 countingStream->rewind();
19708 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019709 uint64_t cgen_var_1375;
19710 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1375, 1);
19711 countingStream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019712 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019713 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019714 uint64_t cgen_var_1376 = (uint64_t)(uintptr_t)local_pAllocator;
19715 countingStream->putBe64(cgen_var_1376);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019716 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019717 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019718 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019719 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019720 uint64_t cgen_var_1377;
19721 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1377, 1);
19722 countingStream->write((uint64_t*)&cgen_var_1377, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019723 }
19724 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19725 countingStream->rewind();
19726 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
19727 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
19728 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019729 uint64_t cgen_var_1378;
19730 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1378, 1);
19731 stream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019732 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019733 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019734 uint64_t cgen_var_1379 = (uint64_t)(uintptr_t)local_pAllocator;
19735 stream->putBe64(cgen_var_1379);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019736 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019737 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019738 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019739 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019740 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019741 uint64_t cgen_var_1380;
19742 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1380, 1);
19743 stream->write((uint64_t*)&cgen_var_1380, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019744 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019745 uint64_t cgen_var_1381;
19746 stream->read((uint64_t*)&cgen_var_1381, 8);
19747 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1381, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019748 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
19749 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019750 countingStream->clearPool();
19751 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019752 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019753 mImpl->log("finish vkCreateMacOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019754 return vkCreateMacOSSurfaceMVK_VkResult_return;
19755}
19756
19757#endif
19758#ifdef VK_EXT_external_memory_dma_buf
19759#endif
19760#ifdef VK_EXT_queue_family_foreign
19761#endif
19762#ifdef VK_EXT_debug_utils
19763VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
19764 VkDevice device,
19765 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
19766{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019767 mImpl->log("start vkSetDebugUtilsObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019768 auto stream = mImpl->stream();
19769 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019770 auto resources = mImpl->resources();
19771 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019772 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019773 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019774 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019775 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019776 local_pNameInfo = nullptr;
19777 if (pNameInfo)
19778 {
19779 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
19780 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
19781 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019782 if (local_pNameInfo)
19783 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019784 transform_tohost_VkDebugUtilsObjectNameInfoEXT(mImpl->resources(), (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019785 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019786 countingStream->rewind();
19787 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019788 uint64_t cgen_var_1382;
19789 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1382, 1);
19790 countingStream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019791 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019792 }
19793 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19794 countingStream->rewind();
19795 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
19796 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
19797 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019798 uint64_t cgen_var_1383;
19799 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1383, 1);
19800 stream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019801 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019802 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
19803 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019804 countingStream->clearPool();
19805 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019806 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019807 mImpl->log("finish vkSetDebugUtilsObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019808 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
19809}
19810
19811VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
19812 VkDevice device,
19813 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
19814{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019815 mImpl->log("start vkSetDebugUtilsObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019816 auto stream = mImpl->stream();
19817 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019818 auto resources = mImpl->resources();
19819 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019820 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019821 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019822 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019823 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019824 local_pTagInfo = nullptr;
19825 if (pTagInfo)
19826 {
19827 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
19828 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
19829 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019830 if (local_pTagInfo)
19831 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019832 transform_tohost_VkDebugUtilsObjectTagInfoEXT(mImpl->resources(), (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019833 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019834 countingStream->rewind();
19835 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019836 uint64_t cgen_var_1384;
19837 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1384, 1);
19838 countingStream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019839 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019840 }
19841 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19842 countingStream->rewind();
19843 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
19844 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
19845 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019846 uint64_t cgen_var_1385;
19847 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1385, 1);
19848 stream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019849 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019850 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
19851 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019852 countingStream->clearPool();
19853 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019854 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019855 mImpl->log("finish vkSetDebugUtilsObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019856 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
19857}
19858
19859void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
19860 VkQueue queue,
19861 const VkDebugUtilsLabelEXT* pLabelInfo)
19862{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019863 mImpl->log("start vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019864 auto stream = mImpl->stream();
19865 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019866 auto resources = mImpl->resources();
19867 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019868 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019869 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019870 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019871 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019872 local_pLabelInfo = nullptr;
19873 if (pLabelInfo)
19874 {
19875 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19876 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19877 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019878 if (local_pLabelInfo)
19879 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019880 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019881 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019882 countingStream->rewind();
19883 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019884 uint64_t cgen_var_1386;
19885 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1386, 1);
19886 countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019887 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019888 }
19889 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19890 countingStream->rewind();
19891 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
19892 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
19893 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019894 uint64_t cgen_var_1387;
19895 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1387, 1);
19896 stream->write((uint64_t*)&cgen_var_1387, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019897 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019898 mImpl->log("finish vkQueueBeginDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019899}
19900
19901void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
19902 VkQueue queue)
19903{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019904 mImpl->log("start vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019905 auto stream = mImpl->stream();
19906 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019907 auto resources = mImpl->resources();
19908 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019909 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019910 VkQueue local_queue;
19911 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019912 countingStream->rewind();
19913 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019914 uint64_t cgen_var_1388;
19915 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1388, 1);
19916 countingStream->write((uint64_t*)&cgen_var_1388, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019917 }
19918 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19919 countingStream->rewind();
19920 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
19921 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
19922 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019923 uint64_t cgen_var_1389;
19924 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1389, 1);
19925 stream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019926 mImpl->log("finish vkQueueEndDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019927}
19928
19929void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
19930 VkQueue queue,
19931 const VkDebugUtilsLabelEXT* pLabelInfo)
19932{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019933 mImpl->log("start vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019934 auto stream = mImpl->stream();
19935 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019936 auto resources = mImpl->resources();
19937 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019938 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019939 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019940 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019941 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019942 local_pLabelInfo = nullptr;
19943 if (pLabelInfo)
19944 {
19945 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19946 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19947 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019948 if (local_pLabelInfo)
19949 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019950 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019951 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019952 countingStream->rewind();
19953 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019954 uint64_t cgen_var_1390;
19955 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1390, 1);
19956 countingStream->write((uint64_t*)&cgen_var_1390, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019957 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019958 }
19959 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19960 countingStream->rewind();
19961 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
19962 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
19963 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019964 uint64_t cgen_var_1391;
19965 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1391, 1);
19966 stream->write((uint64_t*)&cgen_var_1391, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019967 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019968 mImpl->log("finish vkQueueInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019969}
19970
19971void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
19972 VkCommandBuffer commandBuffer,
19973 const VkDebugUtilsLabelEXT* pLabelInfo)
19974{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019975 mImpl->log("start vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019976 auto stream = mImpl->stream();
19977 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019978 auto resources = mImpl->resources();
19979 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019980 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019981 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019982 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019983 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019984 local_pLabelInfo = nullptr;
19985 if (pLabelInfo)
19986 {
19987 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19988 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19989 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019990 if (local_pLabelInfo)
19991 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019992 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019993 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019994 countingStream->rewind();
19995 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019996 uint64_t cgen_var_1392;
19997 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1392, 1);
19998 countingStream->write((uint64_t*)&cgen_var_1392, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019999 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020000 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020001 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20002 countingStream->rewind();
20003 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
20004 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
20005 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020006 uint64_t cgen_var_1393;
20007 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1393, 1);
20008 stream->write((uint64_t*)&cgen_var_1393, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020009 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020010 mImpl->log("finish vkCmdBeginDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020011}
20012
20013void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
20014 VkCommandBuffer commandBuffer)
20015{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020016 mImpl->log("start vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020017 auto stream = mImpl->stream();
20018 auto countingStream = mImpl->countingStream();
20019 auto resources = mImpl->resources();
20020 auto pool = mImpl->pool();
20021 stream->setHandleMapping(resources->unwrapMapping());
20022 VkCommandBuffer local_commandBuffer;
20023 local_commandBuffer = commandBuffer;
20024 countingStream->rewind();
20025 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020026 uint64_t cgen_var_1394;
20027 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1394, 1);
20028 countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020029 }
20030 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20031 countingStream->rewind();
20032 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
20033 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
20034 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020035 uint64_t cgen_var_1395;
20036 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1395, 1);
20037 stream->write((uint64_t*)&cgen_var_1395, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020038 mImpl->log("finish vkCmdEndDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020039}
20040
20041void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
20042 VkCommandBuffer commandBuffer,
20043 const VkDebugUtilsLabelEXT* pLabelInfo)
20044{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020045 mImpl->log("start vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020046 auto stream = mImpl->stream();
20047 auto countingStream = mImpl->countingStream();
20048 auto resources = mImpl->resources();
20049 auto pool = mImpl->pool();
20050 stream->setHandleMapping(resources->unwrapMapping());
20051 VkCommandBuffer local_commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020052 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020053 local_commandBuffer = commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020054 local_pLabelInfo = nullptr;
20055 if (pLabelInfo)
20056 {
20057 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20058 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20059 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020060 if (local_pLabelInfo)
20061 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020062 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020063 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020064 countingStream->rewind();
20065 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020066 uint64_t cgen_var_1396;
20067 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1396, 1);
20068 countingStream->write((uint64_t*)&cgen_var_1396, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020069 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20070 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020071 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20072 countingStream->rewind();
20073 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
20074 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
20075 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020076 uint64_t cgen_var_1397;
20077 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1397, 1);
20078 stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020079 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020080 mImpl->log("finish vkCmdInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020081}
20082
20083VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
20084 VkInstance instance,
20085 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
20086 const VkAllocationCallbacks* pAllocator,
20087 VkDebugUtilsMessengerEXT* pMessenger)
20088{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020089 mImpl->log("start vkCreateDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020090 auto stream = mImpl->stream();
20091 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020092 auto resources = mImpl->resources();
20093 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020094 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020095 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020096 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020097 VkAllocationCallbacks* local_pAllocator;
20098 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020099 local_pCreateInfo = nullptr;
20100 if (pCreateInfo)
20101 {
20102 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
20103 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
20104 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020105 local_pAllocator = nullptr;
20106 if (pAllocator)
20107 {
20108 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20109 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20110 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020111 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020112 if (local_pCreateInfo)
20113 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020114 transform_tohost_VkDebugUtilsMessengerCreateInfoEXT(mImpl->resources(), (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020115 }
20116 if (local_pAllocator)
20117 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020118 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020119 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020120 countingStream->rewind();
20121 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020122 uint64_t cgen_var_1398;
20123 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1398, 1);
20124 countingStream->write((uint64_t*)&cgen_var_1398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020125 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020126 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020127 uint64_t cgen_var_1399 = (uint64_t)(uintptr_t)local_pAllocator;
20128 countingStream->putBe64(cgen_var_1399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020129 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020130 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020131 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020132 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020133 uint64_t cgen_var_1400;
20134 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1400, 1);
20135 countingStream->write((uint64_t*)&cgen_var_1400, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020136 }
20137 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20138 countingStream->rewind();
20139 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
20140 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
20141 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020142 uint64_t cgen_var_1401;
20143 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1401, 1);
20144 stream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020145 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020146 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020147 uint64_t cgen_var_1402 = (uint64_t)(uintptr_t)local_pAllocator;
20148 stream->putBe64(cgen_var_1402);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020149 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020150 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020151 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020152 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020153 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020154 uint64_t cgen_var_1403;
20155 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1403, 1);
20156 stream->write((uint64_t*)&cgen_var_1403, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020157 stream->setHandleMapping(resources->unwrapMapping());
20158 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020159 uint64_t cgen_var_1404;
20160 stream->read((uint64_t*)&cgen_var_1404, 8);
20161 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1404, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020162 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020163 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
20164 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020165 countingStream->clearPool();
20166 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020167 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020168 mImpl->log("finish vkCreateDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020169 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
20170}
20171
20172void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
20173 VkInstance instance,
20174 VkDebugUtilsMessengerEXT messenger,
20175 const VkAllocationCallbacks* pAllocator)
20176{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020177 mImpl->log("start vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020178 auto stream = mImpl->stream();
20179 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020180 auto resources = mImpl->resources();
20181 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020182 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020183 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020184 VkDebugUtilsMessengerEXT local_messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020185 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020186 local_instance = instance;
20187 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020188 local_pAllocator = nullptr;
20189 if (pAllocator)
20190 {
20191 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20192 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20193 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020194 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020195 if (local_pAllocator)
20196 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020197 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020198 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020199 countingStream->rewind();
20200 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020201 uint64_t cgen_var_1405;
20202 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1405, 1);
20203 countingStream->write((uint64_t*)&cgen_var_1405, 1 * 8);
20204 uint64_t cgen_var_1406;
20205 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1406, 1);
20206 countingStream->write((uint64_t*)&cgen_var_1406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020207 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020208 uint64_t cgen_var_1407 = (uint64_t)(uintptr_t)local_pAllocator;
20209 countingStream->putBe64(cgen_var_1407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020210 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020211 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020212 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020213 }
20214 }
20215 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20216 countingStream->rewind();
20217 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
20218 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
20219 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020220 uint64_t cgen_var_1408;
20221 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1408, 1);
20222 stream->write((uint64_t*)&cgen_var_1408, 1 * 8);
20223 uint64_t cgen_var_1409;
20224 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1409, 1);
20225 stream->write((uint64_t*)&cgen_var_1409, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020226 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020227 uint64_t cgen_var_1410 = (uint64_t)(uintptr_t)local_pAllocator;
20228 stream->putBe64(cgen_var_1410);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020229 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020230 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020231 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020232 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020233 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020234 mImpl->log("finish vkDestroyDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020235}
20236
20237void VkEncoder::vkSubmitDebugUtilsMessageEXT(
20238 VkInstance instance,
20239 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
20240 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
20241 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
20242{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020243 mImpl->log("start vkSubmitDebugUtilsMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020244 auto stream = mImpl->stream();
20245 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020246 auto resources = mImpl->resources();
20247 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020248 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020249 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020250 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020251 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020252 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020253 local_instance = instance;
20254 local_messageSeverity = messageSeverity;
20255 local_messageTypes = messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020256 local_pCallbackData = nullptr;
20257 if (pCallbackData)
20258 {
20259 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
20260 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
20261 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020262 if (local_pCallbackData)
20263 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020264 transform_tohost_VkDebugUtilsMessengerCallbackDataEXT(mImpl->resources(), (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020265 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020266 countingStream->rewind();
20267 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020268 uint64_t cgen_var_1411;
20269 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1411, 1);
20270 countingStream->write((uint64_t*)&cgen_var_1411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020271 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
20272 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
20273 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020274 }
20275 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20276 countingStream->rewind();
20277 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
20278 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
20279 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020280 uint64_t cgen_var_1412;
20281 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1412, 1);
20282 stream->write((uint64_t*)&cgen_var_1412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020283 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
20284 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
20285 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020286 mImpl->log("finish vkSubmitDebugUtilsMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020287}
20288
20289#endif
20290#ifdef VK_ANDROID_external_memory_android_hardware_buffer
20291VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
20292 VkDevice device,
20293 const AHardwareBuffer* buffer,
20294 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
20295{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020296 mImpl->log("start vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020297 auto stream = mImpl->stream();
20298 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020299 auto resources = mImpl->resources();
20300 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020301 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020302 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020303 AHardwareBuffer* local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020304 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020305 local_buffer = nullptr;
20306 if (buffer)
20307 {
20308 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
20309 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020310 countingStream->rewind();
20311 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020312 uint64_t cgen_var_1413;
20313 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1413, 1);
20314 countingStream->write((uint64_t*)&cgen_var_1413, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020315 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020316 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20317 }
20318 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20319 countingStream->rewind();
20320 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
20321 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
20322 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020323 uint64_t cgen_var_1414;
20324 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1414, 1);
20325 stream->write((uint64_t*)&cgen_var_1414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020326 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020327 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20328 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020329 if (pProperties)
20330 {
20331 transform_fromhost_VkAndroidHardwareBufferPropertiesANDROID(mImpl->resources(), (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20332 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020333 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
20334 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020335 countingStream->clearPool();
20336 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020337 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020338 mImpl->log("finish vkGetAndroidHardwareBufferPropertiesANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020339 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
20340}
20341
20342VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
20343 VkDevice device,
20344 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
20345 AHardwareBuffer** pBuffer)
20346{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020347 mImpl->log("start vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020348 auto stream = mImpl->stream();
20349 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020350 auto resources = mImpl->resources();
20351 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020352 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020353 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020354 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020355 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020356 local_pInfo = nullptr;
20357 if (pInfo)
20358 {
20359 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
20360 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
20361 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020362 if (local_pInfo)
20363 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020364 transform_tohost_VkMemoryGetAndroidHardwareBufferInfoANDROID(mImpl->resources(), (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020365 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020366 countingStream->rewind();
20367 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020368 uint64_t cgen_var_1415;
20369 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1415, 1);
20370 countingStream->write((uint64_t*)&cgen_var_1415, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020371 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020372 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20373 }
20374 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20375 countingStream->rewind();
20376 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
20377 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
20378 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020379 uint64_t cgen_var_1416;
20380 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1416, 1);
20381 stream->write((uint64_t*)&cgen_var_1416, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020382 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020383 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20384 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20385 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
20386 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020387 countingStream->clearPool();
20388 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020389 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020390 mImpl->log("finish vkGetMemoryAndroidHardwareBufferANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020391 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
20392}
20393
20394#endif
20395#ifdef VK_EXT_sampler_filter_minmax
20396#endif
20397#ifdef VK_AMD_gpu_shader_int16
20398#endif
20399#ifdef VK_AMD_mixed_attachment_samples
20400#endif
20401#ifdef VK_AMD_shader_fragment_mask
20402#endif
20403#ifdef VK_EXT_shader_stencil_export
20404#endif
20405#ifdef VK_EXT_sample_locations
20406void VkEncoder::vkCmdSetSampleLocationsEXT(
20407 VkCommandBuffer commandBuffer,
20408 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
20409{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020410 mImpl->log("start vkCmdSetSampleLocationsEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020411 auto stream = mImpl->stream();
20412 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020413 auto resources = mImpl->resources();
20414 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020415 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020416 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020417 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020418 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020419 local_pSampleLocationsInfo = nullptr;
20420 if (pSampleLocationsInfo)
20421 {
20422 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
20423 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
20424 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020425 if (local_pSampleLocationsInfo)
20426 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020427 transform_tohost_VkSampleLocationsInfoEXT(mImpl->resources(), (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020428 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020429 countingStream->rewind();
20430 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020431 uint64_t cgen_var_1417;
20432 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1417, 1);
20433 countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020434 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020435 }
20436 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20437 countingStream->rewind();
20438 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
20439 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
20440 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020441 uint64_t cgen_var_1418;
20442 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1418, 1);
20443 stream->write((uint64_t*)&cgen_var_1418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020444 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020445 mImpl->log("finish vkCmdSetSampleLocationsEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020446}
20447
20448void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
20449 VkPhysicalDevice physicalDevice,
20450 VkSampleCountFlagBits samples,
20451 VkMultisamplePropertiesEXT* pMultisampleProperties)
20452{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020453 mImpl->log("start vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020454 auto stream = mImpl->stream();
20455 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020456 auto resources = mImpl->resources();
20457 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020458 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020459 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020460 VkSampleCountFlagBits local_samples;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020461 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020462 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020463 countingStream->rewind();
20464 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020465 uint64_t cgen_var_1419;
20466 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1419, 1);
20467 countingStream->write((uint64_t*)&cgen_var_1419, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020468 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020469 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20470 }
20471 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20472 countingStream->rewind();
20473 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
20474 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
20475 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020476 uint64_t cgen_var_1420;
20477 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1420, 1);
20478 stream->write((uint64_t*)&cgen_var_1420, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020479 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020480 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20481 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020482 if (pMultisampleProperties)
20483 {
20484 transform_fromhost_VkMultisamplePropertiesEXT(mImpl->resources(), (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20485 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020486 mImpl->log("finish vkGetPhysicalDeviceMultisamplePropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020487}
20488
20489#endif
20490#ifdef VK_EXT_blend_operation_advanced
20491#endif
20492#ifdef VK_NV_fragment_coverage_to_color
20493#endif
20494#ifdef VK_NV_framebuffer_mixed_samples
20495#endif
20496#ifdef VK_NV_fill_rectangle
20497#endif
20498#ifdef VK_EXT_post_depth_coverage
20499#endif
20500#ifdef VK_EXT_validation_cache
20501VkResult VkEncoder::vkCreateValidationCacheEXT(
20502 VkDevice device,
20503 const VkValidationCacheCreateInfoEXT* pCreateInfo,
20504 const VkAllocationCallbacks* pAllocator,
20505 VkValidationCacheEXT* pValidationCache)
20506{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020507 mImpl->log("start vkCreateValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020508 auto stream = mImpl->stream();
20509 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020510 auto resources = mImpl->resources();
20511 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020512 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020513 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020514 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020515 VkAllocationCallbacks* local_pAllocator;
20516 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020517 local_pCreateInfo = nullptr;
20518 if (pCreateInfo)
20519 {
20520 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
20521 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
20522 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020523 local_pAllocator = nullptr;
20524 if (pAllocator)
20525 {
20526 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20527 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20528 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020529 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020530 if (local_pCreateInfo)
20531 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020532 transform_tohost_VkValidationCacheCreateInfoEXT(mImpl->resources(), (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020533 }
20534 if (local_pAllocator)
20535 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020536 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020537 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020538 countingStream->rewind();
20539 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020540 uint64_t cgen_var_1421;
20541 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1421, 1);
20542 countingStream->write((uint64_t*)&cgen_var_1421, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020543 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020544 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020545 uint64_t cgen_var_1422 = (uint64_t)(uintptr_t)local_pAllocator;
20546 countingStream->putBe64(cgen_var_1422);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020547 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020548 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020549 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020550 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020551 uint64_t cgen_var_1423;
20552 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1423, 1);
20553 countingStream->write((uint64_t*)&cgen_var_1423, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020554 }
20555 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20556 countingStream->rewind();
20557 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
20558 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
20559 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020560 uint64_t cgen_var_1424;
20561 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1424, 1);
20562 stream->write((uint64_t*)&cgen_var_1424, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020563 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020564 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020565 uint64_t cgen_var_1425 = (uint64_t)(uintptr_t)local_pAllocator;
20566 stream->putBe64(cgen_var_1425);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020567 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020568 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020569 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020570 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020571 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020572 uint64_t cgen_var_1426;
20573 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1426, 1);
20574 stream->write((uint64_t*)&cgen_var_1426, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020575 stream->setHandleMapping(resources->unwrapMapping());
20576 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020577 uint64_t cgen_var_1427;
20578 stream->read((uint64_t*)&cgen_var_1427, 8);
20579 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1427, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020580 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020581 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
20582 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020583 countingStream->clearPool();
20584 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020585 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020586 mImpl->log("finish vkCreateValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020587 return vkCreateValidationCacheEXT_VkResult_return;
20588}
20589
20590void VkEncoder::vkDestroyValidationCacheEXT(
20591 VkDevice device,
20592 VkValidationCacheEXT validationCache,
20593 const VkAllocationCallbacks* pAllocator)
20594{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020595 mImpl->log("start vkDestroyValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020596 auto stream = mImpl->stream();
20597 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020598 auto resources = mImpl->resources();
20599 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020600 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020601 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020602 VkValidationCacheEXT local_validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020603 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020604 local_device = device;
20605 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020606 local_pAllocator = nullptr;
20607 if (pAllocator)
20608 {
20609 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20610 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20611 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020612 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020613 if (local_pAllocator)
20614 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020615 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020616 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020617 countingStream->rewind();
20618 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020619 uint64_t cgen_var_1428;
20620 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1);
20621 countingStream->write((uint64_t*)&cgen_var_1428, 1 * 8);
20622 uint64_t cgen_var_1429;
20623 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1429, 1);
20624 countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020625 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020626 uint64_t cgen_var_1430 = (uint64_t)(uintptr_t)local_pAllocator;
20627 countingStream->putBe64(cgen_var_1430);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020628 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020629 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020630 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020631 }
20632 }
20633 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20634 countingStream->rewind();
20635 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
20636 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
20637 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020638 uint64_t cgen_var_1431;
20639 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1431, 1);
20640 stream->write((uint64_t*)&cgen_var_1431, 1 * 8);
20641 uint64_t cgen_var_1432;
20642 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1432, 1);
20643 stream->write((uint64_t*)&cgen_var_1432, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020644 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020645 uint64_t cgen_var_1433 = (uint64_t)(uintptr_t)local_pAllocator;
20646 stream->putBe64(cgen_var_1433);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020647 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020648 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020649 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020650 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020651 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020652 mImpl->log("finish vkDestroyValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020653}
20654
20655VkResult VkEncoder::vkMergeValidationCachesEXT(
20656 VkDevice device,
20657 VkValidationCacheEXT dstCache,
20658 uint32_t srcCacheCount,
20659 const VkValidationCacheEXT* pSrcCaches)
20660{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020661 mImpl->log("start vkMergeValidationCachesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020662 auto stream = mImpl->stream();
20663 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020664 auto resources = mImpl->resources();
20665 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020666 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020667 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020668 VkValidationCacheEXT local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020669 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020670 VkValidationCacheEXT* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020671 local_device = device;
20672 local_dstCache = dstCache;
20673 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020674 local_pSrcCaches = nullptr;
20675 if (pSrcCaches)
20676 {
20677 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
20678 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020679 countingStream->rewind();
20680 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020681 uint64_t cgen_var_1434;
20682 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1434, 1);
20683 countingStream->write((uint64_t*)&cgen_var_1434, 1 * 8);
20684 uint64_t cgen_var_1435;
20685 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1435, 1);
20686 countingStream->write((uint64_t*)&cgen_var_1435, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020687 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020688 if (((srcCacheCount)))
20689 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020690 uint64_t* cgen_var_1436;
20691 countingStream->alloc((void**)&cgen_var_1436, ((srcCacheCount)) * 8);
20692 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1436, ((srcCacheCount)));
20693 countingStream->write((uint64_t*)cgen_var_1436, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020694 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020695 }
20696 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20697 countingStream->rewind();
20698 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
20699 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
20700 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020701 uint64_t cgen_var_1437;
20702 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1437, 1);
20703 stream->write((uint64_t*)&cgen_var_1437, 1 * 8);
20704 uint64_t cgen_var_1438;
20705 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1438, 1);
20706 stream->write((uint64_t*)&cgen_var_1438, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020707 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020708 if (((srcCacheCount)))
20709 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020710 uint64_t* cgen_var_1439;
20711 stream->alloc((void**)&cgen_var_1439, ((srcCacheCount)) * 8);
20712 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1439, ((srcCacheCount)));
20713 stream->write((uint64_t*)cgen_var_1439, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020714 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020715 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
20716 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020717 countingStream->clearPool();
20718 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020719 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020720 mImpl->log("finish vkMergeValidationCachesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020721 return vkMergeValidationCachesEXT_VkResult_return;
20722}
20723
20724VkResult VkEncoder::vkGetValidationCacheDataEXT(
20725 VkDevice device,
20726 VkValidationCacheEXT validationCache,
20727 size_t* pDataSize,
20728 void* pData)
20729{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020730 mImpl->log("start vkGetValidationCacheDataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020731 auto stream = mImpl->stream();
20732 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020733 auto resources = mImpl->resources();
20734 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020735 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020736 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020737 VkValidationCacheEXT local_validationCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020738 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020739 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020740 countingStream->rewind();
20741 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020742 uint64_t cgen_var_1440;
20743 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1440, 1);
20744 countingStream->write((uint64_t*)&cgen_var_1440, 1 * 8);
20745 uint64_t cgen_var_1441;
20746 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1441, 1);
20747 countingStream->write((uint64_t*)&cgen_var_1441, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020748 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020749 uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)pDataSize;
20750 countingStream->putBe64(cgen_var_1442);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020751 if (pDataSize)
20752 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020753 uint64_t cgen_var_1443 = (uint64_t)(*pDataSize);
20754 countingStream->putBe64(cgen_var_1443);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020755 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020756 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020757 uint64_t cgen_var_1444 = (uint64_t)(uintptr_t)pData;
20758 countingStream->putBe64(cgen_var_1444);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020759 if (pData)
20760 {
20761 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20762 }
20763 }
20764 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20765 countingStream->rewind();
20766 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
20767 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
20768 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020769 uint64_t cgen_var_1445;
20770 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1445, 1);
20771 stream->write((uint64_t*)&cgen_var_1445, 1 * 8);
20772 uint64_t cgen_var_1446;
20773 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1446, 1);
20774 stream->write((uint64_t*)&cgen_var_1446, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020775 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020776 uint64_t cgen_var_1447 = (uint64_t)(uintptr_t)pDataSize;
20777 stream->putBe64(cgen_var_1447);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020778 if (pDataSize)
20779 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020780 uint64_t cgen_var_1448 = (uint64_t)(*pDataSize);
20781 stream->putBe64(cgen_var_1448);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020782 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020783 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020784 uint64_t cgen_var_1449 = (uint64_t)(uintptr_t)pData;
20785 stream->putBe64(cgen_var_1449);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020786 if (pData)
20787 {
20788 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20789 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020790 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020791 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020792 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020793 if (pDataSize)
20794 {
20795 if (!(check_pDataSize))
20796 {
20797 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
20798 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080020799 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020800 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020801 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020802 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020803 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020804 if (pData)
20805 {
20806 if (!(check_pData))
20807 {
20808 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
20809 }
20810 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20811 }
20812 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
20813 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020814 countingStream->clearPool();
20815 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020816 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020817 mImpl->log("finish vkGetValidationCacheDataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020818 return vkGetValidationCacheDataEXT_VkResult_return;
20819}
20820
20821#endif
20822#ifdef VK_EXT_descriptor_indexing
20823#endif
20824#ifdef VK_EXT_shader_viewport_index_layer
20825#endif
20826#ifdef VK_EXT_global_priority
20827#endif
20828#ifdef VK_EXT_external_memory_host
20829VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
20830 VkDevice device,
20831 VkExternalMemoryHandleTypeFlagBits handleType,
20832 const void* pHostPointer,
20833 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
20834{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020835 mImpl->log("start vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020836 auto stream = mImpl->stream();
20837 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020838 auto resources = mImpl->resources();
20839 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020840 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020841 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020842 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020843 void* local_pHostPointer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020844 local_device = device;
20845 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020846 local_pHostPointer = nullptr;
20847 if (pHostPointer)
20848 {
20849 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
20850 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020851 countingStream->rewind();
20852 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020853 uint64_t cgen_var_1453;
20854 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1453, 1);
20855 countingStream->write((uint64_t*)&cgen_var_1453, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020856 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020857 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020858 uint64_t cgen_var_1454 = (uint64_t)(uintptr_t)local_pHostPointer;
20859 countingStream->putBe64(cgen_var_1454);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020860 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020861 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020862 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020863 }
20864 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20865 }
20866 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20867 countingStream->rewind();
20868 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
20869 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
20870 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020871 uint64_t cgen_var_1455;
20872 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1455, 1);
20873 stream->write((uint64_t*)&cgen_var_1455, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020874 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020875 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020876 uint64_t cgen_var_1456 = (uint64_t)(uintptr_t)local_pHostPointer;
20877 stream->putBe64(cgen_var_1456);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020878 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020879 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020880 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020881 }
20882 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20883 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020884 if (pMemoryHostPointerProperties)
20885 {
20886 transform_fromhost_VkMemoryHostPointerPropertiesEXT(mImpl->resources(), (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20887 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020888 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
20889 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020890 countingStream->clearPool();
20891 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020892 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020893 mImpl->log("finish vkGetMemoryHostPointerPropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020894 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
20895}
20896
20897#endif
20898#ifdef VK_AMD_buffer_marker
20899void VkEncoder::vkCmdWriteBufferMarkerAMD(
20900 VkCommandBuffer commandBuffer,
20901 VkPipelineStageFlagBits pipelineStage,
20902 VkBuffer dstBuffer,
20903 VkDeviceSize dstOffset,
20904 uint32_t marker)
20905{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020906 mImpl->log("start vkCmdWriteBufferMarkerAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020907 auto stream = mImpl->stream();
20908 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020909 auto resources = mImpl->resources();
20910 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020911 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020912 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020913 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020914 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020915 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020916 uint32_t local_marker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020917 local_commandBuffer = commandBuffer;
20918 local_pipelineStage = pipelineStage;
20919 local_dstBuffer = dstBuffer;
20920 local_dstOffset = dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020921 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020922 countingStream->rewind();
20923 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020924 uint64_t cgen_var_1457;
20925 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1457, 1);
20926 countingStream->write((uint64_t*)&cgen_var_1457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020927 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020928 uint64_t cgen_var_1458;
20929 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1458, 1);
20930 countingStream->write((uint64_t*)&cgen_var_1458, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020931 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
20932 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020933 }
20934 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20935 countingStream->rewind();
20936 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
20937 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
20938 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020939 uint64_t cgen_var_1459;
20940 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1459, 1);
20941 stream->write((uint64_t*)&cgen_var_1459, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020942 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020943 uint64_t cgen_var_1460;
20944 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1460, 1);
20945 stream->write((uint64_t*)&cgen_var_1460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020946 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
20947 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020948 mImpl->log("finish vkCmdWriteBufferMarkerAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020949}
20950
20951#endif
20952#ifdef VK_AMD_shader_core_properties
20953#endif
20954#ifdef VK_EXT_vertex_attribute_divisor
20955#endif
20956#ifdef VK_NV_shader_subgroup_partitioned
20957#endif
20958#ifdef VK_NV_device_diagnostic_checkpoints
20959void VkEncoder::vkCmdSetCheckpointNV(
20960 VkCommandBuffer commandBuffer,
20961 const void* pCheckpointMarker)
20962{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020963 mImpl->log("start vkCmdSetCheckpointNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020964 auto stream = mImpl->stream();
20965 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020966 auto resources = mImpl->resources();
20967 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020968 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020969 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020970 void* local_pCheckpointMarker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020971 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020972 local_pCheckpointMarker = nullptr;
20973 if (pCheckpointMarker)
20974 {
20975 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
20976 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020977 countingStream->rewind();
20978 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020979 uint64_t cgen_var_1461;
20980 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1461, 1);
20981 countingStream->write((uint64_t*)&cgen_var_1461, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020982 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020983 uint64_t cgen_var_1462 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
20984 countingStream->putBe64(cgen_var_1462);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020985 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020986 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020987 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020988 }
20989 }
20990 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20991 countingStream->rewind();
20992 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
20993 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
20994 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020995 uint64_t cgen_var_1463;
20996 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1463, 1);
20997 stream->write((uint64_t*)&cgen_var_1463, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020998 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020999 uint64_t cgen_var_1464 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
21000 stream->putBe64(cgen_var_1464);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021001 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021002 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021003 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021004 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021005 mImpl->log("finish vkCmdSetCheckpointNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021006}
21007
21008void VkEncoder::vkGetQueueCheckpointDataNV(
21009 VkQueue queue,
21010 uint32_t* pCheckpointDataCount,
21011 VkCheckpointDataNV* pCheckpointData)
21012{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021013 mImpl->log("start vkGetQueueCheckpointDataNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021014 auto stream = mImpl->stream();
21015 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021016 auto resources = mImpl->resources();
21017 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021018 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021019 VkQueue local_queue;
21020 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021021 countingStream->rewind();
21022 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021023 uint64_t cgen_var_1465;
21024 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1465, 1);
21025 countingStream->write((uint64_t*)&cgen_var_1465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021026 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021027 uint64_t cgen_var_1466 = (uint64_t)(uintptr_t)pCheckpointDataCount;
21028 countingStream->putBe64(cgen_var_1466);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021029 if (pCheckpointDataCount)
21030 {
21031 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
21032 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021033 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021034 uint64_t cgen_var_1467 = (uint64_t)(uintptr_t)pCheckpointData;
21035 countingStream->putBe64(cgen_var_1467);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021036 if (pCheckpointData)
21037 {
21038 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21039 {
21040 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
21041 }
21042 }
21043 }
21044 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21045 countingStream->rewind();
21046 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
21047 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
21048 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021049 uint64_t cgen_var_1468;
21050 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1468, 1);
21051 stream->write((uint64_t*)&cgen_var_1468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021052 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021053 uint64_t cgen_var_1469 = (uint64_t)(uintptr_t)pCheckpointDataCount;
21054 stream->putBe64(cgen_var_1469);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021055 if (pCheckpointDataCount)
21056 {
21057 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
21058 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021059 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021060 uint64_t cgen_var_1470 = (uint64_t)(uintptr_t)pCheckpointData;
21061 stream->putBe64(cgen_var_1470);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021062 if (pCheckpointData)
21063 {
21064 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21065 {
21066 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
21067 }
21068 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021069 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021070 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021071 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021072 if (pCheckpointDataCount)
21073 {
21074 if (!(check_pCheckpointDataCount))
21075 {
21076 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
21077 }
21078 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
21079 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021080 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021081 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021082 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021083 if (pCheckpointData)
21084 {
21085 if (!(check_pCheckpointData))
21086 {
21087 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
21088 }
21089 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21090 {
21091 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
21092 }
21093 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080021094 if (pCheckpointData)
21095 {
21096 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
21097 {
21098 transform_fromhost_VkCheckpointDataNV(mImpl->resources(), (VkCheckpointDataNV*)(pCheckpointData + i));
21099 }
21100 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021101 mImpl->log("finish vkGetQueueCheckpointDataNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021102}
21103
21104#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021105#ifdef VK_GOOGLE_address_space
21106VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE(
21107 VkDevice device,
21108 VkDeviceMemory memory,
21109 uint64_t* pAddress)
21110{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021111 mImpl->log("start vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021112 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress);
21113 auto stream = mImpl->stream();
21114 auto countingStream = mImpl->countingStream();
21115 auto resources = mImpl->resources();
21116 auto pool = mImpl->pool();
21117 stream->setHandleMapping(resources->unwrapMapping());
21118 VkDevice local_device;
21119 VkDeviceMemory local_memory;
21120 local_device = device;
21121 local_memory = memory;
Lingfeng Yangafe29d32018-12-25 13:01:52 -080021122 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021123 countingStream->rewind();
21124 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021125 uint64_t cgen_var_1473;
21126 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1473, 1);
21127 countingStream->write((uint64_t*)&cgen_var_1473, 1 * 8);
21128 uint64_t cgen_var_1474;
21129 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1474, 1);
21130 countingStream->write((uint64_t*)&cgen_var_1474, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021131 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021132 uint64_t cgen_var_1475 = (uint64_t)(uintptr_t)pAddress;
21133 countingStream->putBe64(cgen_var_1475);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021134 if (pAddress)
21135 {
21136 countingStream->write((uint64_t*)pAddress, sizeof(uint64_t));
21137 }
21138 }
21139 uint32_t packetSize_vkMapMemoryIntoAddressSpaceGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21140 countingStream->rewind();
21141 uint32_t opcode_vkMapMemoryIntoAddressSpaceGOOGLE = OP_vkMapMemoryIntoAddressSpaceGOOGLE;
21142 stream->write(&opcode_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
21143 stream->write(&packetSize_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021144 uint64_t cgen_var_1476;
21145 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1476, 1);
21146 stream->write((uint64_t*)&cgen_var_1476, 1 * 8);
21147 uint64_t cgen_var_1477;
21148 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1477, 1);
21149 stream->write((uint64_t*)&cgen_var_1477, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021150 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021151 uint64_t cgen_var_1478 = (uint64_t)(uintptr_t)pAddress;
21152 stream->putBe64(cgen_var_1478);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021153 if (pAddress)
21154 {
21155 stream->write((uint64_t*)pAddress, sizeof(uint64_t));
21156 }
21157 // WARNING PTR CHECK
21158 uint64_t* check_pAddress;
21159 check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64();
21160 if (pAddress)
21161 {
21162 if (!(check_pAddress))
21163 {
21164 fprintf(stderr, "fatal: pAddress inconsistent between guest and host\n");
21165 }
21166 stream->read((uint64_t*)pAddress, sizeof(uint64_t));
21167 }
21168 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
21169 stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult));
21170 countingStream->clearPool();
21171 stream->clearPool();
21172 pool->freeAll();
21173 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021174 mImpl->log("finish vkMapMemoryIntoAddressSpaceGOOGLE");;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021175 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
21176}
21177
21178#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021179
Lingfeng Yangb1d90102018-11-29 16:10:36 -080021180} // namespace goldfish_vk