blob: b5821145e4cb29d652674788800b7a8ed185eb4f [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 Yangf4d77ef2018-11-02 23:21:37 -0700995 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -0800996 vkEnumerateDeviceExtensionProperties_VkResult_return = mImpl->resources()->on_vkEnumerateDeviceExtensionProperties(this, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800997 mImpl->log("finish vkEnumerateDeviceExtensionProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700998 return vkEnumerateDeviceExtensionProperties_VkResult_return;
999}
1000
1001VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
1002 uint32_t* pPropertyCount,
1003 VkLayerProperties* pProperties)
1004{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001005 mImpl->log("start vkEnumerateInstanceLayerProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001006 auto stream = mImpl->stream();
1007 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001008 auto resources = mImpl->resources();
1009 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001010 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001011 countingStream->rewind();
1012 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001013 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001014 uint64_t cgen_var_59 = (uint64_t)(uintptr_t)pPropertyCount;
1015 countingStream->putBe64(cgen_var_59);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001016 if (pPropertyCount)
1017 {
1018 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1019 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001020 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001021 uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pProperties;
1022 countingStream->putBe64(cgen_var_60);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001023 if (pProperties)
1024 {
1025 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1026 {
1027 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1028 }
1029 }
1030 }
1031 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1032 countingStream->rewind();
1033 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
1034 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
1035 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001036 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001037 uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pPropertyCount;
1038 stream->putBe64(cgen_var_61);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001039 if (pPropertyCount)
1040 {
1041 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1042 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001043 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001044 uint64_t cgen_var_62 = (uint64_t)(uintptr_t)pProperties;
1045 stream->putBe64(cgen_var_62);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001046 if (pProperties)
1047 {
1048 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1049 {
1050 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1051 }
1052 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001053 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001054 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001055 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001056 if (pPropertyCount)
1057 {
1058 if (!(check_pPropertyCount))
1059 {
1060 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1061 }
1062 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1063 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001064 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001065 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001066 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001067 if (pProperties)
1068 {
1069 if (!(check_pProperties))
1070 {
1071 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1072 }
1073 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1074 {
1075 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1076 }
1077 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001078 if (pProperties)
1079 {
1080 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1081 {
1082 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1083 }
1084 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001085 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
1086 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001087 countingStream->clearPool();
1088 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001089 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001090 mImpl->log("finish vkEnumerateInstanceLayerProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001091 return vkEnumerateInstanceLayerProperties_VkResult_return;
1092}
1093
1094VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
1095 VkPhysicalDevice physicalDevice,
1096 uint32_t* pPropertyCount,
1097 VkLayerProperties* pProperties)
1098{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001099 mImpl->log("start vkEnumerateDeviceLayerProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001100 auto stream = mImpl->stream();
1101 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001102 auto resources = mImpl->resources();
1103 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001104 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001105 VkPhysicalDevice local_physicalDevice;
1106 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001107 countingStream->rewind();
1108 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001109 uint64_t cgen_var_65;
1110 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_65, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001111 countingStream->write((uint64_t*)&cgen_var_65, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001112 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001113 uint64_t cgen_var_66 = (uint64_t)(uintptr_t)pPropertyCount;
1114 countingStream->putBe64(cgen_var_66);
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 Yang2285df12018-11-17 16:25:11 -08001120 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pProperties;
1121 countingStream->putBe64(cgen_var_67);
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_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1131 countingStream->rewind();
1132 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1133 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1134 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001135 uint64_t cgen_var_68;
1136 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_68, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001137 stream->write((uint64_t*)&cgen_var_68, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001138 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001139 uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1140 stream->putBe64(cgen_var_69);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001141 if (pPropertyCount)
1142 {
1143 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1144 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001145 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001146 uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1147 stream->putBe64(cgen_var_70);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001148 if (pProperties)
1149 {
1150 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1151 {
1152 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1153 }
1154 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001155 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001156 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001157 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001158 if (pPropertyCount)
1159 {
1160 if (!(check_pPropertyCount))
1161 {
1162 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1163 }
1164 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1165 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001166 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001167 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001168 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001169 if (pProperties)
1170 {
1171 if (!(check_pProperties))
1172 {
1173 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1174 }
1175 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1176 {
1177 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1178 }
1179 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001180 if (pProperties)
1181 {
1182 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1183 {
1184 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1185 }
1186 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001187 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1188 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001189 countingStream->clearPool();
1190 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001191 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001192 mImpl->log("finish vkEnumerateDeviceLayerProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001193 return vkEnumerateDeviceLayerProperties_VkResult_return;
1194}
1195
1196void VkEncoder::vkGetDeviceQueue(
1197 VkDevice device,
1198 uint32_t queueFamilyIndex,
1199 uint32_t queueIndex,
1200 VkQueue* pQueue)
1201{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001202 mImpl->log("start vkGetDeviceQueue");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001203 auto stream = mImpl->stream();
1204 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001205 auto resources = mImpl->resources();
1206 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001207 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001208 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001209 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001210 uint32_t local_queueIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001211 local_device = device;
1212 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001213 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001214 countingStream->rewind();
1215 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001216 uint64_t cgen_var_73;
1217 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_73, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001218 countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001219 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1220 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001221 uint64_t cgen_var_74;
1222 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_74, 1);
1223 countingStream->write((uint64_t*)&cgen_var_74, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001224 }
1225 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1226 countingStream->rewind();
1227 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1228 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1229 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001230 uint64_t cgen_var_75;
1231 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_75, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001232 stream->write((uint64_t*)&cgen_var_75, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001233 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1234 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001235 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001236 uint64_t cgen_var_76;
1237 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_76, 1);
1238 stream->write((uint64_t*)&cgen_var_76, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001239 stream->setHandleMapping(resources->unwrapMapping());
1240 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001241 uint64_t cgen_var_77;
1242 stream->read((uint64_t*)&cgen_var_77, 8);
1243 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_77, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001244 stream->unsetHandleMapping();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001245 mImpl->log("finish vkGetDeviceQueue");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001246}
1247
1248VkResult VkEncoder::vkQueueSubmit(
1249 VkQueue queue,
1250 uint32_t submitCount,
1251 const VkSubmitInfo* pSubmits,
1252 VkFence fence)
1253{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001254 mImpl->log("start vkQueueSubmit");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001255 auto stream = mImpl->stream();
1256 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001257 auto resources = mImpl->resources();
1258 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001259 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001260 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001261 uint32_t local_submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001262 VkSubmitInfo* local_pSubmits;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001263 VkFence local_fence;
1264 local_queue = queue;
1265 local_submitCount = submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001266 local_pSubmits = nullptr;
1267 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001268 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001269 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001270 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1271 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001272 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001273 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001274 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001275 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001276 if (local_pSubmits)
1277 {
1278 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1279 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001280 transform_tohost_VkSubmitInfo(mImpl->resources(), (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001281 }
1282 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001283 countingStream->rewind();
1284 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001285 uint64_t cgen_var_78;
1286 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_78, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001287 countingStream->write((uint64_t*)&cgen_var_78, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001288 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1289 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1290 {
1291 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1292 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001293 uint64_t cgen_var_79;
1294 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_79, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001295 countingStream->write((uint64_t*)&cgen_var_79, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001296 }
1297 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1298 countingStream->rewind();
1299 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1300 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1301 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001302 uint64_t cgen_var_80;
1303 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_80, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001304 stream->write((uint64_t*)&cgen_var_80, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001305 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001306 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1307 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001308 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001309 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001310 uint64_t cgen_var_81;
1311 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_81, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001312 stream->write((uint64_t*)&cgen_var_81, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001313 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1314 stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001315 countingStream->clearPool();
1316 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001317 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001318 mImpl->log("finish vkQueueSubmit");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001319 return vkQueueSubmit_VkResult_return;
1320}
1321
1322VkResult VkEncoder::vkQueueWaitIdle(
1323 VkQueue queue)
1324{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001325 mImpl->log("start vkQueueWaitIdle");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001326 auto stream = mImpl->stream();
1327 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001328 auto resources = mImpl->resources();
1329 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001330 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001331 VkQueue local_queue;
1332 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001333 countingStream->rewind();
1334 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001335 uint64_t cgen_var_82;
1336 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_82, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001337 countingStream->write((uint64_t*)&cgen_var_82, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001338 }
1339 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1340 countingStream->rewind();
1341 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1342 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1343 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001344 uint64_t cgen_var_83;
1345 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_83, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001346 stream->write((uint64_t*)&cgen_var_83, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001347 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1348 stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001349 countingStream->clearPool();
1350 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001351 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001352 mImpl->log("finish vkQueueWaitIdle");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001353 return vkQueueWaitIdle_VkResult_return;
1354}
1355
1356VkResult VkEncoder::vkDeviceWaitIdle(
1357 VkDevice device)
1358{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001359 mImpl->log("start vkDeviceWaitIdle");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001360 auto stream = mImpl->stream();
1361 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001362 auto resources = mImpl->resources();
1363 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001364 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001365 VkDevice local_device;
1366 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001367 countingStream->rewind();
1368 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001369 uint64_t cgen_var_84;
1370 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_84, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001371 countingStream->write((uint64_t*)&cgen_var_84, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001372 }
1373 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1374 countingStream->rewind();
1375 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1376 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1377 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001378 uint64_t cgen_var_85;
1379 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_85, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001380 stream->write((uint64_t*)&cgen_var_85, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001381 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1382 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001383 countingStream->clearPool();
1384 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001385 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001386 mImpl->log("finish vkDeviceWaitIdle");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001387 return vkDeviceWaitIdle_VkResult_return;
1388}
1389
1390VkResult VkEncoder::vkAllocateMemory(
1391 VkDevice device,
1392 const VkMemoryAllocateInfo* pAllocateInfo,
1393 const VkAllocationCallbacks* pAllocator,
1394 VkDeviceMemory* pMemory)
1395{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001396 mImpl->log("start vkAllocateMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001397 auto stream = mImpl->stream();
1398 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001399 auto resources = mImpl->resources();
1400 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001401 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001402 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001403 VkMemoryAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001404 VkAllocationCallbacks* local_pAllocator;
1405 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001406 local_pAllocateInfo = nullptr;
1407 if (pAllocateInfo)
1408 {
1409 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1410 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1411 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001412 local_pAllocator = nullptr;
1413 if (pAllocator)
1414 {
1415 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1416 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1417 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001418 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001419 if (local_pAllocateInfo)
1420 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001421 transform_tohost_VkMemoryAllocateInfo(mImpl->resources(), (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001422 }
1423 if (local_pAllocator)
1424 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001425 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001426 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001427 countingStream->rewind();
1428 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001429 uint64_t cgen_var_86;
1430 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_86, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001431 countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001432 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001433 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001434 uint64_t cgen_var_87 = (uint64_t)(uintptr_t)local_pAllocator;
1435 countingStream->putBe64(cgen_var_87);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001436 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001437 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001438 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001439 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001440 uint64_t cgen_var_88;
1441 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_88, 1);
1442 countingStream->write((uint64_t*)&cgen_var_88, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001443 }
1444 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1445 countingStream->rewind();
1446 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1447 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1448 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001449 uint64_t cgen_var_89;
1450 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_89, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001451 stream->write((uint64_t*)&cgen_var_89, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001452 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001453 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001454 uint64_t cgen_var_90 = (uint64_t)(uintptr_t)local_pAllocator;
1455 stream->putBe64(cgen_var_90);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001456 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001457 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001458 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001459 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001460 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001461 uint64_t cgen_var_91;
1462 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_91, 1);
1463 stream->write((uint64_t*)&cgen_var_91, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001464 stream->setHandleMapping(resources->unwrapMapping());
1465 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001466 uint64_t cgen_var_92;
1467 stream->read((uint64_t*)&cgen_var_92, 8);
1468 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_92, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001469 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001470 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1471 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001472 countingStream->clearPool();
1473 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001474 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001475 mImpl->log("finish vkAllocateMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001476 return vkAllocateMemory_VkResult_return;
1477}
1478
1479void VkEncoder::vkFreeMemory(
1480 VkDevice device,
1481 VkDeviceMemory memory,
1482 const VkAllocationCallbacks* pAllocator)
1483{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001484 mImpl->log("start vkFreeMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001485 auto stream = mImpl->stream();
1486 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001487 auto resources = mImpl->resources();
1488 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001489 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001490 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001491 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001492 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001493 local_device = device;
1494 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001495 local_pAllocator = nullptr;
1496 if (pAllocator)
1497 {
1498 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1499 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1500 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001501 local_pAllocator = nullptr;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001502 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001503 countingStream->rewind();
1504 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001505 uint64_t cgen_var_93;
1506 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001507 countingStream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001508 uint64_t cgen_var_94;
1509 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_94, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001510 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001511 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001512 uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1513 countingStream->putBe64(cgen_var_95);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001514 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001515 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001516 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001517 }
1518 }
1519 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1520 countingStream->rewind();
1521 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1522 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1523 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001524 uint64_t cgen_var_96;
1525 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_96, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001526 stream->write((uint64_t*)&cgen_var_96, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001527 uint64_t cgen_var_97;
1528 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_97, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001529 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001530 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001531 uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1532 stream->putBe64(cgen_var_98);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001533 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001534 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001535 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001536 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001537 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001538 mImpl->log("finish vkFreeMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001539}
1540
1541VkResult VkEncoder::vkMapMemory(
1542 VkDevice device,
1543 VkDeviceMemory memory,
1544 VkDeviceSize offset,
1545 VkDeviceSize size,
1546 VkMemoryMapFlags flags,
1547 void** ppData)
1548{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001549 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001550 vkMapMemory_VkResult_return = mImpl->resources()->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001551 mImpl->log("finish vkMapMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001552 return vkMapMemory_VkResult_return;
1553}
1554
1555void VkEncoder::vkUnmapMemory(
1556 VkDevice device,
1557 VkDeviceMemory memory)
1558{
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001559 mImpl->resources()->on_vkUnmapMemory(this, device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001560}
1561
1562VkResult VkEncoder::vkFlushMappedMemoryRanges(
1563 VkDevice device,
1564 uint32_t memoryRangeCount,
1565 const VkMappedMemoryRange* pMemoryRanges)
1566{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001567 mImpl->log("start vkFlushMappedMemoryRanges");
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001568 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001569 auto stream = mImpl->stream();
1570 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001571 auto resources = mImpl->resources();
1572 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001573 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001574 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001575 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001576 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001577 local_device = device;
1578 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001579 local_pMemoryRanges = nullptr;
1580 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001581 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001582 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001583 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1584 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001585 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1586 }
1587 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001588 if (local_pMemoryRanges)
1589 {
1590 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1591 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001592 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001593 }
1594 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001595 countingStream->rewind();
1596 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001597 uint64_t cgen_var_99;
1598 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_99, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001599 countingStream->write((uint64_t*)&cgen_var_99, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001600 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1601 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1602 {
1603 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001604 }
1605 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001606 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001607 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001608 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1609 {
1610 auto range = pMemoryRanges[i];
1611 auto memory = pMemoryRanges[i].memory;
1612 auto size = pMemoryRanges[i].size;
1613 auto offset = pMemoryRanges[i].offset;
1614 uint64_t streamSize = 0;
1615 if (!memory) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1616 auto hostPtr = resources->getMappedPointer(memory);
1617 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1618 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1619 streamSize = actualSize;
1620 countingStream->write(&streamSize, sizeof(uint64_t));
1621 uint8_t* targetRange = hostPtr + offset;
1622 countingStream->write(targetRange, actualSize);
1623 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001624 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001625 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1626 countingStream->rewind();
1627 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1628 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1629 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001630 uint64_t cgen_var_100;
1631 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_100, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001632 stream->write((uint64_t*)&cgen_var_100, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001633 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001634 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1635 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001636 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001637 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001638 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001639 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001640 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1641 {
1642 auto range = pMemoryRanges[i];
1643 auto memory = pMemoryRanges[i].memory;
1644 auto size = pMemoryRanges[i].size;
1645 auto offset = pMemoryRanges[i].offset;
1646 uint64_t streamSize = 0;
1647 if (!memory) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1648 auto hostPtr = resources->getMappedPointer(memory);
1649 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1650 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1651 streamSize = actualSize;
1652 stream->write(&streamSize, sizeof(uint64_t));
1653 uint8_t* targetRange = hostPtr + offset;
1654 stream->write(targetRange, actualSize);
1655 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001656 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001657 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1658 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001659 countingStream->clearPool();
1660 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001661 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001662 mImpl->log("finish vkFlushMappedMemoryRanges");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001663 return vkFlushMappedMemoryRanges_VkResult_return;
1664}
1665
1666VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1667 VkDevice device,
1668 uint32_t memoryRangeCount,
1669 const VkMappedMemoryRange* pMemoryRanges)
1670{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001671 mImpl->log("start vkInvalidateMappedMemoryRanges");
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001672 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001673 auto stream = mImpl->stream();
1674 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001675 auto resources = mImpl->resources();
1676 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001677 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001678 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001679 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001680 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001681 local_device = device;
1682 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001683 local_pMemoryRanges = nullptr;
1684 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001685 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001686 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001687 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1688 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001689 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1690 }
1691 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001692 if (local_pMemoryRanges)
1693 {
1694 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1695 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001696 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001697 }
1698 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001699 countingStream->rewind();
1700 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001701 uint64_t cgen_var_101;
1702 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001703 countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001704 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1705 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1706 {
1707 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001708 }
1709 }
1710 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1711 countingStream->rewind();
1712 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1713 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1714 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001715 uint64_t cgen_var_102;
1716 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_102, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001717 stream->write((uint64_t*)&cgen_var_102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001718 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001719 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1720 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001721 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001722 }
1723 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1724 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001725 countingStream->clearPool();
1726 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001727 pool->freeAll();
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001728 if (!resources->usingDirectMapping())
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001729 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001730 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1731 {
1732 auto range = pMemoryRanges[i];
1733 auto memory = pMemoryRanges[i].memory;
1734 auto size = pMemoryRanges[i].size;
1735 auto offset = pMemoryRanges[i].offset;
1736 uint64_t streamSize = 0;
1737 if (!memory) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1738 auto hostPtr = resources->getMappedPointer(memory);
1739 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1740 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1741 streamSize = actualSize;
1742 stream->read(&streamSize, sizeof(uint64_t));
1743 uint8_t* targetRange = hostPtr + offset;
1744 stream->read(targetRange, actualSize);
1745 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001746 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001747 mImpl->log("finish vkInvalidateMappedMemoryRanges");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001748 return vkInvalidateMappedMemoryRanges_VkResult_return;
1749}
1750
1751void VkEncoder::vkGetDeviceMemoryCommitment(
1752 VkDevice device,
1753 VkDeviceMemory memory,
1754 VkDeviceSize* pCommittedMemoryInBytes)
1755{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001756 mImpl->log("start vkGetDeviceMemoryCommitment");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001757 auto stream = mImpl->stream();
1758 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001759 auto resources = mImpl->resources();
1760 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001761 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001762 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001763 VkDeviceMemory local_memory;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001764 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001765 local_memory = memory;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001766 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001767 countingStream->rewind();
1768 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001769 uint64_t cgen_var_103;
1770 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_103, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001771 countingStream->write((uint64_t*)&cgen_var_103, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001772 uint64_t cgen_var_104;
1773 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_104, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001774 countingStream->write((uint64_t*)&cgen_var_104, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001775 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1776 }
1777 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1778 countingStream->rewind();
1779 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1780 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1781 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001782 uint64_t cgen_var_105;
1783 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_105, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001784 stream->write((uint64_t*)&cgen_var_105, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001785 uint64_t cgen_var_106;
1786 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_106, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001787 stream->write((uint64_t*)&cgen_var_106, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001788 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1789 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001790 mImpl->log("finish vkGetDeviceMemoryCommitment");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001791}
1792
1793VkResult VkEncoder::vkBindBufferMemory(
1794 VkDevice device,
1795 VkBuffer buffer,
1796 VkDeviceMemory memory,
1797 VkDeviceSize memoryOffset)
1798{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001799 mImpl->log("start vkBindBufferMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001800 auto stream = mImpl->stream();
1801 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001802 auto resources = mImpl->resources();
1803 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001804 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001805 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001806 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001807 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001808 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001809 local_device = device;
1810 local_buffer = buffer;
1811 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001812 local_memoryOffset = memoryOffset;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001813 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, &local_memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001814 countingStream->rewind();
1815 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001816 uint64_t cgen_var_107;
1817 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001818 countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001819 uint64_t cgen_var_108;
1820 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_108, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001821 countingStream->write((uint64_t*)&cgen_var_108, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001822 uint64_t cgen_var_109;
1823 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_109, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001824 countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001825 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001826 }
1827 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1828 countingStream->rewind();
1829 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
1830 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
1831 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001832 uint64_t cgen_var_110;
1833 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001834 stream->write((uint64_t*)&cgen_var_110, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001835 uint64_t cgen_var_111;
1836 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_111, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001837 stream->write((uint64_t*)&cgen_var_111, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001838 uint64_t cgen_var_112;
1839 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001840 stream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001841 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001842 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
1843 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001844 countingStream->clearPool();
1845 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001846 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001847 mImpl->log("finish vkBindBufferMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001848 return vkBindBufferMemory_VkResult_return;
1849}
1850
1851VkResult VkEncoder::vkBindImageMemory(
1852 VkDevice device,
1853 VkImage image,
1854 VkDeviceMemory memory,
1855 VkDeviceSize memoryOffset)
1856{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001857 mImpl->log("start vkBindImageMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001858 auto stream = mImpl->stream();
1859 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001860 auto resources = mImpl->resources();
1861 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001862 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001863 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001864 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001865 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001866 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001867 local_device = device;
1868 local_image = image;
1869 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001870 local_memoryOffset = memoryOffset;
Lingfeng Yangafe29d32018-12-25 13:01:52 -08001871 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, &local_memoryOffset, 1, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001872 countingStream->rewind();
1873 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001874 uint64_t cgen_var_113;
1875 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001876 countingStream->write((uint64_t*)&cgen_var_113, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001877 uint64_t cgen_var_114;
1878 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_114, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001879 countingStream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001880 uint64_t cgen_var_115;
1881 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_115, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001882 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001883 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001884 }
1885 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1886 countingStream->rewind();
1887 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
1888 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
1889 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001890 uint64_t cgen_var_116;
1891 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_116, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001892 stream->write((uint64_t*)&cgen_var_116, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001893 uint64_t cgen_var_117;
1894 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_117, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001895 stream->write((uint64_t*)&cgen_var_117, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001896 uint64_t cgen_var_118;
1897 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001898 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001899 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001900 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
1901 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001902 countingStream->clearPool();
1903 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001904 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001905 mImpl->log("finish vkBindImageMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001906 return vkBindImageMemory_VkResult_return;
1907}
1908
1909void VkEncoder::vkGetBufferMemoryRequirements(
1910 VkDevice device,
1911 VkBuffer buffer,
1912 VkMemoryRequirements* pMemoryRequirements)
1913{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001914 mImpl->log("start vkGetBufferMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001915 auto stream = mImpl->stream();
1916 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001917 auto resources = mImpl->resources();
1918 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001919 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001920 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001921 VkBuffer local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001922 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001923 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001924 countingStream->rewind();
1925 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001926 uint64_t cgen_var_119;
1927 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_119, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001928 countingStream->write((uint64_t*)&cgen_var_119, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001929 uint64_t cgen_var_120;
1930 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_120, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001931 countingStream->write((uint64_t*)&cgen_var_120, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001932 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1933 }
1934 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1935 countingStream->rewind();
1936 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
1937 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
1938 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001939 uint64_t cgen_var_121;
1940 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001941 stream->write((uint64_t*)&cgen_var_121, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001942 uint64_t cgen_var_122;
1943 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_122, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001944 stream->write((uint64_t*)&cgen_var_122, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001945 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1946 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08001947 if (pMemoryRequirements)
1948 {
1949 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
1950 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001951 mImpl->log("finish vkGetBufferMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001952}
1953
1954void VkEncoder::vkGetImageMemoryRequirements(
1955 VkDevice device,
1956 VkImage image,
1957 VkMemoryRequirements* pMemoryRequirements)
1958{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001959 mImpl->log("start vkGetImageMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001960 auto stream = mImpl->stream();
1961 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001962 auto resources = mImpl->resources();
1963 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001964 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001965 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001966 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001967 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001968 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001969 countingStream->rewind();
1970 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001971 uint64_t cgen_var_123;
1972 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_123, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001973 countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001974 uint64_t cgen_var_124;
1975 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_124, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001976 countingStream->write((uint64_t*)&cgen_var_124, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001977 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1978 }
1979 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1980 countingStream->rewind();
1981 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
1982 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
1983 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001984 uint64_t cgen_var_125;
1985 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_125, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001986 stream->write((uint64_t*)&cgen_var_125, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001987 uint64_t cgen_var_126;
1988 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_126, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001989 stream->write((uint64_t*)&cgen_var_126, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001990 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1991 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08001992 if (pMemoryRequirements)
1993 {
1994 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
1995 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001996 mImpl->log("finish vkGetImageMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001997}
1998
1999void VkEncoder::vkGetImageSparseMemoryRequirements(
2000 VkDevice device,
2001 VkImage image,
2002 uint32_t* pSparseMemoryRequirementCount,
2003 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
2004{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002005 mImpl->log("start vkGetImageSparseMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002006 auto stream = mImpl->stream();
2007 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002008 auto resources = mImpl->resources();
2009 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002010 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002011 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002012 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002013 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002014 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002015 countingStream->rewind();
2016 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002017 uint64_t cgen_var_127;
2018 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002019 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002020 uint64_t cgen_var_128;
2021 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_128, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002022 countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002023 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002024 uint64_t cgen_var_129 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2025 countingStream->putBe64(cgen_var_129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002026 if (pSparseMemoryRequirementCount)
2027 {
2028 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2029 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002030 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002031 uint64_t cgen_var_130 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2032 countingStream->putBe64(cgen_var_130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002033 if (pSparseMemoryRequirements)
2034 {
2035 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2036 {
2037 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2038 }
2039 }
2040 }
2041 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2042 countingStream->rewind();
2043 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
2044 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
2045 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002046 uint64_t cgen_var_131;
2047 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002048 stream->write((uint64_t*)&cgen_var_131, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002049 uint64_t cgen_var_132;
2050 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002051 stream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002052 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002053 uint64_t cgen_var_133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2054 stream->putBe64(cgen_var_133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002055 if (pSparseMemoryRequirementCount)
2056 {
2057 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2058 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002059 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002060 uint64_t cgen_var_134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2061 stream->putBe64(cgen_var_134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002062 if (pSparseMemoryRequirements)
2063 {
2064 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2065 {
2066 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2067 }
2068 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002069 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002070 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002071 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002072 if (pSparseMemoryRequirementCount)
2073 {
2074 if (!(check_pSparseMemoryRequirementCount))
2075 {
2076 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
2077 }
2078 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2079 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002080 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002081 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002082 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002083 if (pSparseMemoryRequirements)
2084 {
2085 if (!(check_pSparseMemoryRequirements))
2086 {
2087 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
2088 }
2089 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2090 {
2091 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2092 }
2093 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002094 if (pSparseMemoryRequirements)
2095 {
2096 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2097 {
2098 transform_fromhost_VkSparseImageMemoryRequirements(mImpl->resources(), (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2099 }
2100 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002101 mImpl->log("finish vkGetImageSparseMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002102}
2103
2104void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
2105 VkPhysicalDevice physicalDevice,
2106 VkFormat format,
2107 VkImageType type,
2108 VkSampleCountFlagBits samples,
2109 VkImageUsageFlags usage,
2110 VkImageTiling tiling,
2111 uint32_t* pPropertyCount,
2112 VkSparseImageFormatProperties* pProperties)
2113{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002114 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002115 auto stream = mImpl->stream();
2116 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002117 auto resources = mImpl->resources();
2118 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002119 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002120 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002121 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002122 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002123 VkSampleCountFlagBits local_samples;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002124 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002125 VkImageTiling local_tiling;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002126 local_physicalDevice = physicalDevice;
2127 local_format = format;
2128 local_type = type;
2129 local_samples = samples;
2130 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002131 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002132 countingStream->rewind();
2133 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002134 uint64_t cgen_var_137;
2135 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_137, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002136 countingStream->write((uint64_t*)&cgen_var_137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002137 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
2138 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
2139 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2140 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2141 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002142 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002143 uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pPropertyCount;
2144 countingStream->putBe64(cgen_var_138);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002145 if (pPropertyCount)
2146 {
2147 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2148 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002149 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002150 uint64_t cgen_var_139 = (uint64_t)(uintptr_t)pProperties;
2151 countingStream->putBe64(cgen_var_139);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002152 if (pProperties)
2153 {
2154 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2155 {
2156 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
2157 }
2158 }
2159 }
2160 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2161 countingStream->rewind();
2162 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
2163 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
2164 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002165 uint64_t cgen_var_140;
2166 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_140, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002167 stream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002168 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
2169 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
2170 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2171 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2172 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002173 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002174 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pPropertyCount;
2175 stream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002176 if (pPropertyCount)
2177 {
2178 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2179 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002180 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002181 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pProperties;
2182 stream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002183 if (pProperties)
2184 {
2185 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2186 {
2187 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2188 }
2189 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002190 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002191 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002192 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002193 if (pPropertyCount)
2194 {
2195 if (!(check_pPropertyCount))
2196 {
2197 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
2198 }
2199 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
2200 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002201 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002202 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002203 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002204 if (pProperties)
2205 {
2206 if (!(check_pProperties))
2207 {
2208 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
2209 }
2210 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2211 {
2212 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2213 }
2214 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002215 if (pProperties)
2216 {
2217 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2218 {
2219 transform_fromhost_VkSparseImageFormatProperties(mImpl->resources(), (VkSparseImageFormatProperties*)(pProperties + i));
2220 }
2221 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002222 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002223}
2224
2225VkResult VkEncoder::vkQueueBindSparse(
2226 VkQueue queue,
2227 uint32_t bindInfoCount,
2228 const VkBindSparseInfo* pBindInfo,
2229 VkFence fence)
2230{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002231 mImpl->log("start vkQueueBindSparse");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002232 auto stream = mImpl->stream();
2233 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002234 auto resources = mImpl->resources();
2235 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002236 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002237 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002238 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002239 VkBindSparseInfo* local_pBindInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002240 VkFence local_fence;
2241 local_queue = queue;
2242 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002243 local_pBindInfo = nullptr;
2244 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002245 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002246 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002247 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2248 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002249 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002250 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002251 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002252 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002253 if (local_pBindInfo)
2254 {
2255 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2256 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002257 transform_tohost_VkBindSparseInfo(mImpl->resources(), (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002258 }
2259 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002260 countingStream->rewind();
2261 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002262 uint64_t cgen_var_145;
2263 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_145, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002264 countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002265 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2266 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2267 {
2268 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2269 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002270 uint64_t cgen_var_146;
2271 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_146, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002272 countingStream->write((uint64_t*)&cgen_var_146, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002273 }
2274 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2275 countingStream->rewind();
2276 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2277 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2278 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002279 uint64_t cgen_var_147;
2280 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_147, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002281 stream->write((uint64_t*)&cgen_var_147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002282 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002283 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2284 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002285 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002286 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002287 uint64_t cgen_var_148;
2288 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_148, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002289 stream->write((uint64_t*)&cgen_var_148, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002290 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2291 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002292 countingStream->clearPool();
2293 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002294 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002295 mImpl->log("finish vkQueueBindSparse");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002296 return vkQueueBindSparse_VkResult_return;
2297}
2298
2299VkResult VkEncoder::vkCreateFence(
2300 VkDevice device,
2301 const VkFenceCreateInfo* pCreateInfo,
2302 const VkAllocationCallbacks* pAllocator,
2303 VkFence* pFence)
2304{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002305 mImpl->log("start vkCreateFence");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002306 auto stream = mImpl->stream();
2307 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002308 auto resources = mImpl->resources();
2309 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002310 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002311 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002312 VkFenceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002313 VkAllocationCallbacks* local_pAllocator;
2314 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002315 local_pCreateInfo = nullptr;
2316 if (pCreateInfo)
2317 {
2318 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2319 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2320 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002321 local_pAllocator = nullptr;
2322 if (pAllocator)
2323 {
2324 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2325 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2326 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002327 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002328 if (local_pCreateInfo)
2329 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002330 transform_tohost_VkFenceCreateInfo(mImpl->resources(), (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002331 }
2332 if (local_pAllocator)
2333 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002334 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002335 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002336 countingStream->rewind();
2337 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002338 uint64_t cgen_var_149;
2339 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_149, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002340 countingStream->write((uint64_t*)&cgen_var_149, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002341 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002342 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002343 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)local_pAllocator;
2344 countingStream->putBe64(cgen_var_150);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002345 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002346 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002347 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002348 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002349 uint64_t cgen_var_151;
2350 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_151, 1);
2351 countingStream->write((uint64_t*)&cgen_var_151, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002352 }
2353 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2354 countingStream->rewind();
2355 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2356 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2357 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002358 uint64_t cgen_var_152;
2359 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_152, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002360 stream->write((uint64_t*)&cgen_var_152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002361 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002362 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002363 uint64_t cgen_var_153 = (uint64_t)(uintptr_t)local_pAllocator;
2364 stream->putBe64(cgen_var_153);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002365 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002366 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002367 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002368 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002369 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002370 uint64_t cgen_var_154;
2371 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_154, 1);
2372 stream->write((uint64_t*)&cgen_var_154, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002373 stream->setHandleMapping(resources->unwrapMapping());
2374 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002375 uint64_t cgen_var_155;
2376 stream->read((uint64_t*)&cgen_var_155, 8);
2377 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_155, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002378 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002379 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2380 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002381 countingStream->clearPool();
2382 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002383 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002384 mImpl->log("finish vkCreateFence");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002385 return vkCreateFence_VkResult_return;
2386}
2387
2388void VkEncoder::vkDestroyFence(
2389 VkDevice device,
2390 VkFence fence,
2391 const VkAllocationCallbacks* pAllocator)
2392{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002393 mImpl->log("start vkDestroyFence");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002394 auto stream = mImpl->stream();
2395 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002396 auto resources = mImpl->resources();
2397 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002398 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002399 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002400 VkFence local_fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002401 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002402 local_device = device;
2403 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002404 local_pAllocator = nullptr;
2405 if (pAllocator)
2406 {
2407 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2408 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2409 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002410 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002411 if (local_pAllocator)
2412 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002413 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002414 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002415 countingStream->rewind();
2416 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002417 uint64_t cgen_var_156;
2418 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_156, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002419 countingStream->write((uint64_t*)&cgen_var_156, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002420 uint64_t cgen_var_157;
2421 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_157, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002422 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002423 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002424 uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2425 countingStream->putBe64(cgen_var_158);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002426 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002427 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002428 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002429 }
2430 }
2431 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2432 countingStream->rewind();
2433 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2434 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2435 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002436 uint64_t cgen_var_159;
2437 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_159, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002438 stream->write((uint64_t*)&cgen_var_159, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002439 uint64_t cgen_var_160;
2440 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002441 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002442 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002443 uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2444 stream->putBe64(cgen_var_161);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002445 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002446 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002447 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002448 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002449 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002450 mImpl->log("finish vkDestroyFence");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002451}
2452
2453VkResult VkEncoder::vkResetFences(
2454 VkDevice device,
2455 uint32_t fenceCount,
2456 const VkFence* pFences)
2457{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002458 mImpl->log("start vkResetFences");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002459 auto stream = mImpl->stream();
2460 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002461 auto resources = mImpl->resources();
2462 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002463 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002464 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002465 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002466 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002467 local_device = device;
2468 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002469 local_pFences = nullptr;
2470 if (pFences)
2471 {
2472 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2473 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002474 countingStream->rewind();
2475 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002476 uint64_t cgen_var_162;
2477 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_162, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002478 countingStream->write((uint64_t*)&cgen_var_162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002479 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002480 if (((fenceCount)))
2481 {
2482 uint64_t* cgen_var_163;
2483 countingStream->alloc((void**)&cgen_var_163, ((fenceCount)) * 8);
2484 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_163, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002485 countingStream->write((uint64_t*)cgen_var_163, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002486 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002487 }
2488 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2489 countingStream->rewind();
2490 uint32_t opcode_vkResetFences = OP_vkResetFences;
2491 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2492 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002493 uint64_t cgen_var_164;
2494 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002495 stream->write((uint64_t*)&cgen_var_164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002496 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002497 if (((fenceCount)))
2498 {
2499 uint64_t* cgen_var_165;
2500 stream->alloc((void**)&cgen_var_165, ((fenceCount)) * 8);
2501 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_165, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002502 stream->write((uint64_t*)cgen_var_165, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002503 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002504 VkResult vkResetFences_VkResult_return = (VkResult)0;
2505 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002506 countingStream->clearPool();
2507 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002508 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002509 mImpl->log("finish vkResetFences");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002510 return vkResetFences_VkResult_return;
2511}
2512
2513VkResult VkEncoder::vkGetFenceStatus(
2514 VkDevice device,
2515 VkFence fence)
2516{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002517 mImpl->log("start vkGetFenceStatus");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002518 auto stream = mImpl->stream();
2519 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002520 auto resources = mImpl->resources();
2521 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002522 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002523 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002524 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002525 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002526 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002527 countingStream->rewind();
2528 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002529 uint64_t cgen_var_166;
2530 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_166, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002531 countingStream->write((uint64_t*)&cgen_var_166, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002532 uint64_t cgen_var_167;
2533 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_167, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002534 countingStream->write((uint64_t*)&cgen_var_167, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002535 }
2536 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2537 countingStream->rewind();
2538 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2539 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2540 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002541 uint64_t cgen_var_168;
2542 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_168, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002543 stream->write((uint64_t*)&cgen_var_168, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002544 uint64_t cgen_var_169;
2545 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_169, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002546 stream->write((uint64_t*)&cgen_var_169, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002547 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2548 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002549 countingStream->clearPool();
2550 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002551 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002552 mImpl->log("finish vkGetFenceStatus");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002553 return vkGetFenceStatus_VkResult_return;
2554}
2555
2556VkResult VkEncoder::vkWaitForFences(
2557 VkDevice device,
2558 uint32_t fenceCount,
2559 const VkFence* pFences,
2560 VkBool32 waitAll,
2561 uint64_t timeout)
2562{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002563 mImpl->log("start vkWaitForFences");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002564 auto stream = mImpl->stream();
2565 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002566 auto resources = mImpl->resources();
2567 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002568 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002569 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002570 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002571 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002572 VkBool32 local_waitAll;
2573 uint64_t local_timeout;
2574 local_device = device;
2575 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002576 local_pFences = nullptr;
2577 if (pFences)
2578 {
2579 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2580 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002581 local_waitAll = waitAll;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002582 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002583 countingStream->rewind();
2584 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002585 uint64_t cgen_var_170;
2586 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002587 countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002588 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002589 if (((fenceCount)))
2590 {
2591 uint64_t* cgen_var_171;
2592 countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2593 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002594 countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002595 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002596 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2597 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002598 }
2599 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2600 countingStream->rewind();
2601 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2602 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2603 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002604 uint64_t cgen_var_172;
2605 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002606 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002607 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002608 if (((fenceCount)))
2609 {
2610 uint64_t* cgen_var_173;
2611 stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2612 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002613 stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002614 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002615 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2616 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002617 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2618 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002619 countingStream->clearPool();
2620 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002621 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002622 mImpl->log("finish vkWaitForFences");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002623 return vkWaitForFences_VkResult_return;
2624}
2625
2626VkResult VkEncoder::vkCreateSemaphore(
2627 VkDevice device,
2628 const VkSemaphoreCreateInfo* pCreateInfo,
2629 const VkAllocationCallbacks* pAllocator,
2630 VkSemaphore* pSemaphore)
2631{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002632 mImpl->log("start vkCreateSemaphore");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002633 auto stream = mImpl->stream();
2634 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002635 auto resources = mImpl->resources();
2636 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002637 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002638 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002639 VkSemaphoreCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002640 VkAllocationCallbacks* local_pAllocator;
2641 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002642 local_pCreateInfo = nullptr;
2643 if (pCreateInfo)
2644 {
2645 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2646 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2647 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002648 local_pAllocator = nullptr;
2649 if (pAllocator)
2650 {
2651 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2652 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2653 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002654 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002655 if (local_pCreateInfo)
2656 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002657 transform_tohost_VkSemaphoreCreateInfo(mImpl->resources(), (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002658 }
2659 if (local_pAllocator)
2660 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002661 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002662 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002663 countingStream->rewind();
2664 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002665 uint64_t cgen_var_174;
2666 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002667 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002668 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002669 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002670 uint64_t cgen_var_175 = (uint64_t)(uintptr_t)local_pAllocator;
2671 countingStream->putBe64(cgen_var_175);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002672 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002673 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002674 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002675 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002676 uint64_t cgen_var_176;
2677 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_176, 1);
2678 countingStream->write((uint64_t*)&cgen_var_176, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002679 }
2680 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2681 countingStream->rewind();
2682 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2683 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2684 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002685 uint64_t cgen_var_177;
2686 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_177, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002687 stream->write((uint64_t*)&cgen_var_177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002688 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002689 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002690 uint64_t cgen_var_178 = (uint64_t)(uintptr_t)local_pAllocator;
2691 stream->putBe64(cgen_var_178);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002692 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002693 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002694 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002695 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002696 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002697 uint64_t cgen_var_179;
2698 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_179, 1);
2699 stream->write((uint64_t*)&cgen_var_179, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002700 stream->setHandleMapping(resources->unwrapMapping());
2701 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002702 uint64_t cgen_var_180;
2703 stream->read((uint64_t*)&cgen_var_180, 8);
2704 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_180, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002705 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002706 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2707 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002708 countingStream->clearPool();
2709 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002710 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002711 mImpl->log("finish vkCreateSemaphore");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002712 return vkCreateSemaphore_VkResult_return;
2713}
2714
2715void VkEncoder::vkDestroySemaphore(
2716 VkDevice device,
2717 VkSemaphore semaphore,
2718 const VkAllocationCallbacks* pAllocator)
2719{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002720 mImpl->log("start vkDestroySemaphore");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002721 auto stream = mImpl->stream();
2722 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002723 auto resources = mImpl->resources();
2724 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002725 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002726 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002727 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002728 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002729 local_device = device;
2730 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002731 local_pAllocator = nullptr;
2732 if (pAllocator)
2733 {
2734 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2735 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2736 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002737 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002738 if (local_pAllocator)
2739 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002740 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002741 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002742 countingStream->rewind();
2743 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002744 uint64_t cgen_var_181;
2745 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_181, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002746 countingStream->write((uint64_t*)&cgen_var_181, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002747 uint64_t cgen_var_182;
2748 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_182, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002749 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002750 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002751 uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2752 countingStream->putBe64(cgen_var_183);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002753 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002754 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002755 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002756 }
2757 }
2758 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2759 countingStream->rewind();
2760 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2761 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2762 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002763 uint64_t cgen_var_184;
2764 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_184, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002765 stream->write((uint64_t*)&cgen_var_184, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002766 uint64_t cgen_var_185;
2767 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_185, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002768 stream->write((uint64_t*)&cgen_var_185, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002769 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002770 uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2771 stream->putBe64(cgen_var_186);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002772 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002773 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002774 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002775 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002776 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002777 mImpl->log("finish vkDestroySemaphore");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002778}
2779
2780VkResult VkEncoder::vkCreateEvent(
2781 VkDevice device,
2782 const VkEventCreateInfo* pCreateInfo,
2783 const VkAllocationCallbacks* pAllocator,
2784 VkEvent* pEvent)
2785{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002786 mImpl->log("start vkCreateEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002787 auto stream = mImpl->stream();
2788 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002789 auto resources = mImpl->resources();
2790 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002791 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002792 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002793 VkEventCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002794 VkAllocationCallbacks* local_pAllocator;
2795 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002796 local_pCreateInfo = nullptr;
2797 if (pCreateInfo)
2798 {
2799 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
2800 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
2801 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002802 local_pAllocator = nullptr;
2803 if (pAllocator)
2804 {
2805 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2806 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2807 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002808 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002809 if (local_pCreateInfo)
2810 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002811 transform_tohost_VkEventCreateInfo(mImpl->resources(), (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002812 }
2813 if (local_pAllocator)
2814 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002815 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002816 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002817 countingStream->rewind();
2818 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002819 uint64_t cgen_var_187;
2820 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_187, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002821 countingStream->write((uint64_t*)&cgen_var_187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002822 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002823 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002824 uint64_t cgen_var_188 = (uint64_t)(uintptr_t)local_pAllocator;
2825 countingStream->putBe64(cgen_var_188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002826 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002827 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002828 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002829 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002830 uint64_t cgen_var_189;
2831 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_189, 1);
2832 countingStream->write((uint64_t*)&cgen_var_189, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002833 }
2834 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2835 countingStream->rewind();
2836 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
2837 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
2838 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002839 uint64_t cgen_var_190;
2840 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_190, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002841 stream->write((uint64_t*)&cgen_var_190, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002842 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002843 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002844 uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2845 stream->putBe64(cgen_var_191);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002846 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002847 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002848 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002849 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002850 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002851 uint64_t cgen_var_192;
2852 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_192, 1);
2853 stream->write((uint64_t*)&cgen_var_192, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002854 stream->setHandleMapping(resources->unwrapMapping());
2855 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002856 uint64_t cgen_var_193;
2857 stream->read((uint64_t*)&cgen_var_193, 8);
2858 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_193, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002859 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002860 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
2861 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002862 countingStream->clearPool();
2863 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002864 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002865 mImpl->log("finish vkCreateEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002866 return vkCreateEvent_VkResult_return;
2867}
2868
2869void VkEncoder::vkDestroyEvent(
2870 VkDevice device,
2871 VkEvent event,
2872 const VkAllocationCallbacks* pAllocator)
2873{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002874 mImpl->log("start vkDestroyEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002875 auto stream = mImpl->stream();
2876 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002877 auto resources = mImpl->resources();
2878 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002879 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002880 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002881 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002882 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002883 local_device = device;
2884 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002885 local_pAllocator = nullptr;
2886 if (pAllocator)
2887 {
2888 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2889 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2890 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002891 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002892 if (local_pAllocator)
2893 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002894 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002895 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002896 countingStream->rewind();
2897 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002898 uint64_t cgen_var_194;
2899 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_194, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002900 countingStream->write((uint64_t*)&cgen_var_194, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002901 uint64_t cgen_var_195;
2902 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_195, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002903 countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002904 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002905 uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
2906 countingStream->putBe64(cgen_var_196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002907 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002908 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002909 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002910 }
2911 }
2912 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2913 countingStream->rewind();
2914 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
2915 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
2916 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002917 uint64_t cgen_var_197;
2918 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_197, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002919 stream->write((uint64_t*)&cgen_var_197, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002920 uint64_t cgen_var_198;
2921 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_198, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002922 stream->write((uint64_t*)&cgen_var_198, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002923 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002924 uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
2925 stream->putBe64(cgen_var_199);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002926 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002927 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002928 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002929 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002930 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002931 mImpl->log("finish vkDestroyEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002932}
2933
2934VkResult VkEncoder::vkGetEventStatus(
2935 VkDevice device,
2936 VkEvent event)
2937{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002938 mImpl->log("start vkGetEventStatus");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002939 auto stream = mImpl->stream();
2940 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002941 auto resources = mImpl->resources();
2942 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002943 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002944 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002945 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002946 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002947 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002948 countingStream->rewind();
2949 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002950 uint64_t cgen_var_200;
2951 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_200, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002952 countingStream->write((uint64_t*)&cgen_var_200, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002953 uint64_t cgen_var_201;
2954 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_201, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002955 countingStream->write((uint64_t*)&cgen_var_201, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002956 }
2957 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2958 countingStream->rewind();
2959 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
2960 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
2961 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002962 uint64_t cgen_var_202;
2963 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002964 stream->write((uint64_t*)&cgen_var_202, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002965 uint64_t cgen_var_203;
2966 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002967 stream->write((uint64_t*)&cgen_var_203, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002968 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
2969 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002970 countingStream->clearPool();
2971 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002972 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002973 mImpl->log("finish vkGetEventStatus");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002974 return vkGetEventStatus_VkResult_return;
2975}
2976
2977VkResult VkEncoder::vkSetEvent(
2978 VkDevice device,
2979 VkEvent event)
2980{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002981 mImpl->log("start vkSetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002982 auto stream = mImpl->stream();
2983 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002984 auto resources = mImpl->resources();
2985 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002986 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002987 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002988 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002989 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002990 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002991 countingStream->rewind();
2992 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002993 uint64_t cgen_var_204;
2994 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_204, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002995 countingStream->write((uint64_t*)&cgen_var_204, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002996 uint64_t cgen_var_205;
2997 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_205, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002998 countingStream->write((uint64_t*)&cgen_var_205, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002999 }
3000 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3001 countingStream->rewind();
3002 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
3003 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
3004 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003005 uint64_t cgen_var_206;
3006 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_206, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003007 stream->write((uint64_t*)&cgen_var_206, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003008 uint64_t cgen_var_207;
3009 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_207, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003010 stream->write((uint64_t*)&cgen_var_207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003011 VkResult vkSetEvent_VkResult_return = (VkResult)0;
3012 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003013 countingStream->clearPool();
3014 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003015 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003016 mImpl->log("finish vkSetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003017 return vkSetEvent_VkResult_return;
3018}
3019
3020VkResult VkEncoder::vkResetEvent(
3021 VkDevice device,
3022 VkEvent event)
3023{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003024 mImpl->log("start vkResetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003025 auto stream = mImpl->stream();
3026 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003027 auto resources = mImpl->resources();
3028 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003029 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003030 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003031 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003032 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003033 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003034 countingStream->rewind();
3035 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08003036 uint64_t cgen_var_208;
3037 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003038 countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003039 uint64_t cgen_var_209;
3040 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003041 countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003042 }
3043 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3044 countingStream->rewind();
3045 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
3046 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
3047 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003048 uint64_t cgen_var_210;
3049 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003050 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003051 uint64_t cgen_var_211;
3052 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003053 stream->write((uint64_t*)&cgen_var_211, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003054 VkResult vkResetEvent_VkResult_return = (VkResult)0;
3055 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003056 countingStream->clearPool();
3057 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003058 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003059 mImpl->log("finish vkResetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003060 return vkResetEvent_VkResult_return;
3061}
3062
3063VkResult VkEncoder::vkCreateQueryPool(
3064 VkDevice device,
3065 const VkQueryPoolCreateInfo* pCreateInfo,
3066 const VkAllocationCallbacks* pAllocator,
3067 VkQueryPool* pQueryPool)
3068{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003069 mImpl->log("start vkCreateQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003070 auto stream = mImpl->stream();
3071 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003072 auto resources = mImpl->resources();
3073 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003074 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003075 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003076 VkQueryPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003077 VkAllocationCallbacks* local_pAllocator;
3078 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003079 local_pCreateInfo = nullptr;
3080 if (pCreateInfo)
3081 {
3082 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
3083 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
3084 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003085 local_pAllocator = nullptr;
3086 if (pAllocator)
3087 {
3088 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3089 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3090 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003091 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003092 if (local_pCreateInfo)
3093 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003094 transform_tohost_VkQueryPoolCreateInfo(mImpl->resources(), (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003095 }
3096 if (local_pAllocator)
3097 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003098 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003099 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003100 countingStream->rewind();
3101 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08003102 uint64_t cgen_var_212;
3103 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003104 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003105 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003106 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08003107 uint64_t cgen_var_213 = (uint64_t)(uintptr_t)local_pAllocator;
3108 countingStream->putBe64(cgen_var_213);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003109 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003110 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003111 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003112 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08003113 uint64_t cgen_var_214;
3114 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_214, 1);
3115 countingStream->write((uint64_t*)&cgen_var_214, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003116 }
3117 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3118 countingStream->rewind();
3119 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
3120 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
3121 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003122 uint64_t cgen_var_215;
3123 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_215, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003124 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003125 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003126 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08003127 uint64_t cgen_var_216 = (uint64_t)(uintptr_t)local_pAllocator;
3128 stream->putBe64(cgen_var_216);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003129 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003130 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003131 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003132 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003133 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08003134 uint64_t cgen_var_217;
3135 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_217, 1);
3136 stream->write((uint64_t*)&cgen_var_217, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003137 stream->setHandleMapping(resources->unwrapMapping());
3138 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08003139 uint64_t cgen_var_218;
3140 stream->read((uint64_t*)&cgen_var_218, 8);
3141 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_218, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003142 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003143 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
3144 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003145 countingStream->clearPool();
3146 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003147 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003148 mImpl->log("finish vkCreateQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003149 return vkCreateQueryPool_VkResult_return;
3150}
3151
3152void VkEncoder::vkDestroyQueryPool(
3153 VkDevice device,
3154 VkQueryPool queryPool,
3155 const VkAllocationCallbacks* pAllocator)
3156{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003157 mImpl->log("start vkDestroyQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003158 auto stream = mImpl->stream();
3159 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003160 auto resources = mImpl->resources();
3161 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003162 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003163 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003164 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003165 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003166 local_device = device;
3167 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003168 local_pAllocator = nullptr;
3169 if (pAllocator)
3170 {
3171 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3172 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3173 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003174 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003175 if (local_pAllocator)
3176 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003177 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003178 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003179 countingStream->rewind();
3180 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08003181 uint64_t cgen_var_219;
3182 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_219, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003183 countingStream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003184 uint64_t cgen_var_220;
3185 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_220, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003186 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003187 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08003188 uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
3189 countingStream->putBe64(cgen_var_221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003190 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003191 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003192 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003193 }
3194 }
3195 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3196 countingStream->rewind();
3197 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
3198 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
3199 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003200 uint64_t cgen_var_222;
3201 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_222, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003202 stream->write((uint64_t*)&cgen_var_222, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003203 uint64_t cgen_var_223;
3204 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_223, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003205 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003206 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08003207 uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
3208 stream->putBe64(cgen_var_224);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003209 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003210 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003211 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003212 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003213 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003214 mImpl->log("finish vkDestroyQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003215}
3216
3217VkResult VkEncoder::vkGetQueryPoolResults(
3218 VkDevice device,
3219 VkQueryPool queryPool,
3220 uint32_t firstQuery,
3221 uint32_t queryCount,
3222 size_t dataSize,
3223 void* pData,
3224 VkDeviceSize stride,
3225 VkQueryResultFlags flags)
3226{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003227 mImpl->log("start vkGetQueryPoolResults");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003228 auto stream = mImpl->stream();
3229 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003230 auto resources = mImpl->resources();
3231 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003232 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003233 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003234 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003235 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003236 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003237 size_t local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003238 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003239 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003240 local_device = device;
3241 local_queryPool = queryPool;
3242 local_firstQuery = firstQuery;
3243 local_queryCount = queryCount;
3244 local_dataSize = dataSize;
3245 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003246 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003247 countingStream->rewind();
3248 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08003249 uint64_t cgen_var_225;
3250 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_225, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003251 countingStream->write((uint64_t*)&cgen_var_225, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003252 uint64_t cgen_var_226;
3253 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_226, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003254 countingStream->write((uint64_t*)&cgen_var_226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003255 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3256 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003257 uint64_t cgen_var_227 = (uint64_t)local_dataSize;
3258 countingStream->putBe64(cgen_var_227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003259 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003260 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3261 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003262 }
3263 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3264 countingStream->rewind();
3265 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
3266 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
3267 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003268 uint64_t cgen_var_228;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003269 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_228, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003270 stream->write((uint64_t*)&cgen_var_228, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003271 uint64_t cgen_var_229;
3272 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_229, 1);
3273 stream->write((uint64_t*)&cgen_var_229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003274 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3275 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003276 uint64_t cgen_var_230 = (uint64_t)local_dataSize;
3277 stream->putBe64(cgen_var_230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003278 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003279 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3280 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003281 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
3282 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
3283 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003284 countingStream->clearPool();
3285 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003286 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003287 mImpl->log("finish vkGetQueryPoolResults");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003288 return vkGetQueryPoolResults_VkResult_return;
3289}
3290
3291VkResult VkEncoder::vkCreateBuffer(
3292 VkDevice device,
3293 const VkBufferCreateInfo* pCreateInfo,
3294 const VkAllocationCallbacks* pAllocator,
3295 VkBuffer* pBuffer)
3296{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003297 mImpl->log("start vkCreateBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003298 auto stream = mImpl->stream();
3299 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003300 auto resources = mImpl->resources();
3301 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003302 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003303 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003304 VkBufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003305 VkAllocationCallbacks* local_pAllocator;
3306 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003307 local_pCreateInfo = nullptr;
3308 if (pCreateInfo)
3309 {
3310 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3311 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3312 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003313 local_pAllocator = nullptr;
3314 if (pAllocator)
3315 {
3316 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3317 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3318 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003319 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003320 if (local_pCreateInfo)
3321 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003322 transform_tohost_VkBufferCreateInfo(mImpl->resources(), (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003323 }
3324 if (local_pAllocator)
3325 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003326 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003327 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003328 countingStream->rewind();
3329 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003330 uint64_t cgen_var_231;
3331 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_231, 1);
3332 countingStream->write((uint64_t*)&cgen_var_231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003333 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003334 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003335 uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3336 countingStream->putBe64(cgen_var_232);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003337 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003338 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003339 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003340 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003341 uint64_t cgen_var_233;
3342 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_233, 1);
3343 countingStream->write((uint64_t*)&cgen_var_233, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003344 }
3345 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3346 countingStream->rewind();
3347 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3348 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3349 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003350 uint64_t cgen_var_234;
3351 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_234, 1);
3352 stream->write((uint64_t*)&cgen_var_234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003353 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003354 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003355 uint64_t cgen_var_235 = (uint64_t)(uintptr_t)local_pAllocator;
3356 stream->putBe64(cgen_var_235);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003357 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003358 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003359 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003360 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003361 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003362 uint64_t cgen_var_236;
3363 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_236, 1);
3364 stream->write((uint64_t*)&cgen_var_236, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003365 stream->setHandleMapping(resources->unwrapMapping());
3366 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003367 uint64_t cgen_var_237;
3368 stream->read((uint64_t*)&cgen_var_237, 8);
3369 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_237, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003370 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003371 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3372 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003373 countingStream->clearPool();
3374 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003375 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003376 mImpl->log("finish vkCreateBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003377 return vkCreateBuffer_VkResult_return;
3378}
3379
3380void VkEncoder::vkDestroyBuffer(
3381 VkDevice device,
3382 VkBuffer buffer,
3383 const VkAllocationCallbacks* pAllocator)
3384{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003385 mImpl->log("start vkDestroyBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003386 auto stream = mImpl->stream();
3387 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003388 auto resources = mImpl->resources();
3389 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003390 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003391 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003392 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003393 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003394 local_device = device;
3395 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003396 local_pAllocator = nullptr;
3397 if (pAllocator)
3398 {
3399 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3400 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3401 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003402 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003403 if (local_pAllocator)
3404 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003405 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003406 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003407 countingStream->rewind();
3408 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003409 uint64_t cgen_var_238;
3410 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_238, 1);
3411 countingStream->write((uint64_t*)&cgen_var_238, 1 * 8);
3412 uint64_t cgen_var_239;
3413 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_239, 1);
3414 countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003415 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003416 uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3417 countingStream->putBe64(cgen_var_240);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003418 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003419 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003420 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003421 }
3422 }
3423 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3424 countingStream->rewind();
3425 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3426 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3427 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003428 uint64_t cgen_var_241;
3429 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_241, 1);
3430 stream->write((uint64_t*)&cgen_var_241, 1 * 8);
3431 uint64_t cgen_var_242;
3432 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_242, 1);
3433 stream->write((uint64_t*)&cgen_var_242, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003434 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003435 uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3436 stream->putBe64(cgen_var_243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003437 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003438 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003439 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003440 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003441 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003442 mImpl->log("finish vkDestroyBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003443}
3444
3445VkResult VkEncoder::vkCreateBufferView(
3446 VkDevice device,
3447 const VkBufferViewCreateInfo* pCreateInfo,
3448 const VkAllocationCallbacks* pAllocator,
3449 VkBufferView* pView)
3450{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003451 mImpl->log("start vkCreateBufferView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003452 auto stream = mImpl->stream();
3453 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003454 auto resources = mImpl->resources();
3455 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003456 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003457 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003458 VkBufferViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003459 VkAllocationCallbacks* local_pAllocator;
3460 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003461 local_pCreateInfo = nullptr;
3462 if (pCreateInfo)
3463 {
3464 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3465 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3466 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003467 local_pAllocator = nullptr;
3468 if (pAllocator)
3469 {
3470 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3471 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3472 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003473 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003474 if (local_pCreateInfo)
3475 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003476 transform_tohost_VkBufferViewCreateInfo(mImpl->resources(), (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003477 }
3478 if (local_pAllocator)
3479 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003480 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003481 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003482 countingStream->rewind();
3483 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003484 uint64_t cgen_var_244;
3485 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_244, 1);
3486 countingStream->write((uint64_t*)&cgen_var_244, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003487 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003488 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003489 uint64_t cgen_var_245 = (uint64_t)(uintptr_t)local_pAllocator;
3490 countingStream->putBe64(cgen_var_245);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003491 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003492 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003493 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003494 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003495 uint64_t cgen_var_246;
3496 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_246, 1);
3497 countingStream->write((uint64_t*)&cgen_var_246, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003498 }
3499 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3500 countingStream->rewind();
3501 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3502 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3503 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003504 uint64_t cgen_var_247;
3505 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_247, 1);
3506 stream->write((uint64_t*)&cgen_var_247, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003507 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003508 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003509 uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3510 stream->putBe64(cgen_var_248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003511 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003512 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003513 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003514 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003515 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003516 uint64_t cgen_var_249;
3517 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_249, 1);
3518 stream->write((uint64_t*)&cgen_var_249, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003519 stream->setHandleMapping(resources->unwrapMapping());
3520 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003521 uint64_t cgen_var_250;
3522 stream->read((uint64_t*)&cgen_var_250, 8);
3523 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_250, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003524 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003525 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3526 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003527 countingStream->clearPool();
3528 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003529 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003530 mImpl->log("finish vkCreateBufferView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003531 return vkCreateBufferView_VkResult_return;
3532}
3533
3534void VkEncoder::vkDestroyBufferView(
3535 VkDevice device,
3536 VkBufferView bufferView,
3537 const VkAllocationCallbacks* pAllocator)
3538{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003539 mImpl->log("start vkDestroyBufferView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003540 auto stream = mImpl->stream();
3541 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003542 auto resources = mImpl->resources();
3543 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003544 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003545 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003546 VkBufferView local_bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003547 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003548 local_device = device;
3549 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003550 local_pAllocator = nullptr;
3551 if (pAllocator)
3552 {
3553 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3554 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3555 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003556 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003557 if (local_pAllocator)
3558 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003559 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003560 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003561 countingStream->rewind();
3562 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003563 uint64_t cgen_var_251;
3564 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_251, 1);
3565 countingStream->write((uint64_t*)&cgen_var_251, 1 * 8);
3566 uint64_t cgen_var_252;
3567 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_252, 1);
3568 countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003569 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003570 uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3571 countingStream->putBe64(cgen_var_253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003572 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003573 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003574 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003575 }
3576 }
3577 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3578 countingStream->rewind();
3579 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3580 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3581 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003582 uint64_t cgen_var_254;
3583 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_254, 1);
3584 stream->write((uint64_t*)&cgen_var_254, 1 * 8);
3585 uint64_t cgen_var_255;
3586 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_255, 1);
3587 stream->write((uint64_t*)&cgen_var_255, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003588 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003589 uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3590 stream->putBe64(cgen_var_256);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003591 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003592 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003593 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003594 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003595 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003596 mImpl->log("finish vkDestroyBufferView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003597}
3598
3599VkResult VkEncoder::vkCreateImage(
3600 VkDevice device,
3601 const VkImageCreateInfo* pCreateInfo,
3602 const VkAllocationCallbacks* pAllocator,
3603 VkImage* pImage)
3604{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003605 mImpl->log("start vkCreateImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003606 auto stream = mImpl->stream();
3607 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003608 auto resources = mImpl->resources();
3609 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003610 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003611 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003612 VkImageCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003613 VkAllocationCallbacks* local_pAllocator;
3614 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003615 local_pCreateInfo = nullptr;
3616 if (pCreateInfo)
3617 {
3618 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3619 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3620 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003621 local_pAllocator = nullptr;
3622 if (pAllocator)
3623 {
3624 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3625 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3626 }
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08003627 mImpl->resources()->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003628 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003629 if (local_pCreateInfo)
3630 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003631 transform_tohost_VkImageCreateInfo(mImpl->resources(), (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003632 }
3633 if (local_pAllocator)
3634 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003635 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003636 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003637 countingStream->rewind();
3638 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003639 uint64_t cgen_var_257;
3640 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_257, 1);
3641 countingStream->write((uint64_t*)&cgen_var_257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003642 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003643 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003644 uint64_t cgen_var_258 = (uint64_t)(uintptr_t)local_pAllocator;
3645 countingStream->putBe64(cgen_var_258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003646 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003647 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003648 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003649 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003650 uint64_t cgen_var_259;
3651 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_259, 1);
3652 countingStream->write((uint64_t*)&cgen_var_259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003653 }
3654 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3655 countingStream->rewind();
3656 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3657 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3658 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003659 uint64_t cgen_var_260;
3660 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_260, 1);
3661 stream->write((uint64_t*)&cgen_var_260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003662 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003663 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003664 uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
3665 stream->putBe64(cgen_var_261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003666 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003667 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003668 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003669 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003670 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003671 uint64_t cgen_var_262;
3672 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_262, 1);
3673 stream->write((uint64_t*)&cgen_var_262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003674 stream->setHandleMapping(resources->unwrapMapping());
3675 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003676 uint64_t cgen_var_263;
3677 stream->read((uint64_t*)&cgen_var_263, 8);
3678 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_263, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003679 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003680 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3681 stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003682 countingStream->clearPool();
3683 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003684 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003685 mImpl->log("finish vkCreateImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003686 return vkCreateImage_VkResult_return;
3687}
3688
3689void VkEncoder::vkDestroyImage(
3690 VkDevice device,
3691 VkImage image,
3692 const VkAllocationCallbacks* pAllocator)
3693{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003694 mImpl->log("start vkDestroyImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003695 auto stream = mImpl->stream();
3696 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003697 auto resources = mImpl->resources();
3698 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003699 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003700 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003701 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003702 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003703 local_device = device;
3704 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003705 local_pAllocator = nullptr;
3706 if (pAllocator)
3707 {
3708 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3709 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3710 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003711 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003712 if (local_pAllocator)
3713 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003714 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003715 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003716 countingStream->rewind();
3717 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003718 uint64_t cgen_var_264;
3719 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_264, 1);
3720 countingStream->write((uint64_t*)&cgen_var_264, 1 * 8);
3721 uint64_t cgen_var_265;
3722 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_265, 1);
3723 countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003724 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003725 uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3726 countingStream->putBe64(cgen_var_266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003727 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003728 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003729 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003730 }
3731 }
3732 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3733 countingStream->rewind();
3734 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3735 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3736 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003737 uint64_t cgen_var_267;
3738 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_267, 1);
3739 stream->write((uint64_t*)&cgen_var_267, 1 * 8);
3740 uint64_t cgen_var_268;
3741 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_268, 1);
3742 stream->write((uint64_t*)&cgen_var_268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003743 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003744 uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3745 stream->putBe64(cgen_var_269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003746 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003747 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003748 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003749 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003750 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003751 mImpl->log("finish vkDestroyImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003752}
3753
3754void VkEncoder::vkGetImageSubresourceLayout(
3755 VkDevice device,
3756 VkImage image,
3757 const VkImageSubresource* pSubresource,
3758 VkSubresourceLayout* pLayout)
3759{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003760 mImpl->log("start vkGetImageSubresourceLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003761 auto stream = mImpl->stream();
3762 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003763 auto resources = mImpl->resources();
3764 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003765 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003766 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003767 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003768 VkImageSubresource* local_pSubresource;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003769 local_device = device;
3770 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003771 local_pSubresource = nullptr;
3772 if (pSubresource)
3773 {
3774 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
3775 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
3776 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08003777 if (local_pSubresource)
3778 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003779 transform_tohost_VkImageSubresource(mImpl->resources(), (VkImageSubresource*)(local_pSubresource));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003780 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003781 countingStream->rewind();
3782 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003783 uint64_t cgen_var_270;
3784 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_270, 1);
3785 countingStream->write((uint64_t*)&cgen_var_270, 1 * 8);
3786 uint64_t cgen_var_271;
3787 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_271, 1);
3788 countingStream->write((uint64_t*)&cgen_var_271, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003789 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003790 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
3791 }
3792 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3793 countingStream->rewind();
3794 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
3795 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
3796 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003797 uint64_t cgen_var_272;
3798 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3799 stream->write((uint64_t*)&cgen_var_272, 1 * 8);
3800 uint64_t cgen_var_273;
3801 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3802 stream->write((uint64_t*)&cgen_var_273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003803 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003804 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3805 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
Lingfeng Yang97a06702018-12-24 17:02:43 -08003806 if (pLayout)
3807 {
3808 transform_fromhost_VkSubresourceLayout(mImpl->resources(), (VkSubresourceLayout*)(pLayout));
3809 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003810 mImpl->log("finish vkGetImageSubresourceLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003811}
3812
3813VkResult VkEncoder::vkCreateImageView(
3814 VkDevice device,
3815 const VkImageViewCreateInfo* pCreateInfo,
3816 const VkAllocationCallbacks* pAllocator,
3817 VkImageView* pView)
3818{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003819 mImpl->log("start vkCreateImageView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003820 auto stream = mImpl->stream();
3821 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003822 auto resources = mImpl->resources();
3823 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003824 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003825 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003826 VkImageViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003827 VkAllocationCallbacks* local_pAllocator;
3828 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003829 local_pCreateInfo = nullptr;
3830 if (pCreateInfo)
3831 {
3832 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
3833 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
3834 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003835 local_pAllocator = nullptr;
3836 if (pAllocator)
3837 {
3838 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3839 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3840 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003841 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003842 if (local_pCreateInfo)
3843 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003844 transform_tohost_VkImageViewCreateInfo(mImpl->resources(), (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003845 }
3846 if (local_pAllocator)
3847 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003848 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003849 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003850 countingStream->rewind();
3851 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003852 uint64_t cgen_var_274;
3853 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_274, 1);
3854 countingStream->write((uint64_t*)&cgen_var_274, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003855 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003856 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003857 uint64_t cgen_var_275 = (uint64_t)(uintptr_t)local_pAllocator;
3858 countingStream->putBe64(cgen_var_275);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003859 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003860 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003861 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003862 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003863 uint64_t cgen_var_276;
3864 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_276, 1);
3865 countingStream->write((uint64_t*)&cgen_var_276, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003866 }
3867 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3868 countingStream->rewind();
3869 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
3870 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
3871 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003872 uint64_t cgen_var_277;
3873 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_277, 1);
3874 stream->write((uint64_t*)&cgen_var_277, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003875 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003876 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003877 uint64_t cgen_var_278 = (uint64_t)(uintptr_t)local_pAllocator;
3878 stream->putBe64(cgen_var_278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003879 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003880 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003881 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003882 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003883 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003884 uint64_t cgen_var_279;
3885 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_279, 1);
3886 stream->write((uint64_t*)&cgen_var_279, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003887 stream->setHandleMapping(resources->unwrapMapping());
3888 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003889 uint64_t cgen_var_280;
3890 stream->read((uint64_t*)&cgen_var_280, 8);
3891 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_280, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003892 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003893 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
3894 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003895 countingStream->clearPool();
3896 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003897 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003898 mImpl->log("finish vkCreateImageView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003899 return vkCreateImageView_VkResult_return;
3900}
3901
3902void VkEncoder::vkDestroyImageView(
3903 VkDevice device,
3904 VkImageView imageView,
3905 const VkAllocationCallbacks* pAllocator)
3906{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003907 mImpl->log("start vkDestroyImageView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003908 auto stream = mImpl->stream();
3909 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003910 auto resources = mImpl->resources();
3911 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003912 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003913 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003914 VkImageView local_imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003915 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003916 local_device = device;
3917 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003918 local_pAllocator = nullptr;
3919 if (pAllocator)
3920 {
3921 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3922 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3923 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003924 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003925 if (local_pAllocator)
3926 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003927 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003928 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003929 countingStream->rewind();
3930 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003931 uint64_t cgen_var_281;
3932 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_281, 1);
3933 countingStream->write((uint64_t*)&cgen_var_281, 1 * 8);
3934 uint64_t cgen_var_282;
3935 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_282, 1);
3936 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003937 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003938 uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
3939 countingStream->putBe64(cgen_var_283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003940 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003941 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003942 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003943 }
3944 }
3945 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3946 countingStream->rewind();
3947 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
3948 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
3949 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003950 uint64_t cgen_var_284;
3951 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_284, 1);
3952 stream->write((uint64_t*)&cgen_var_284, 1 * 8);
3953 uint64_t cgen_var_285;
3954 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_285, 1);
3955 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003956 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003957 uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
3958 stream->putBe64(cgen_var_286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003959 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003960 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003961 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003962 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003963 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003964 mImpl->log("finish vkDestroyImageView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003965}
3966
3967VkResult VkEncoder::vkCreateShaderModule(
3968 VkDevice device,
3969 const VkShaderModuleCreateInfo* pCreateInfo,
3970 const VkAllocationCallbacks* pAllocator,
3971 VkShaderModule* pShaderModule)
3972{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003973 mImpl->log("start vkCreateShaderModule");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003974 auto stream = mImpl->stream();
3975 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003976 auto resources = mImpl->resources();
3977 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003978 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003979 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003980 VkShaderModuleCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003981 VkAllocationCallbacks* local_pAllocator;
3982 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003983 local_pCreateInfo = nullptr;
3984 if (pCreateInfo)
3985 {
3986 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
3987 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
3988 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003989 local_pAllocator = nullptr;
3990 if (pAllocator)
3991 {
3992 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3993 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3994 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003995 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003996 if (local_pCreateInfo)
3997 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003998 transform_tohost_VkShaderModuleCreateInfo(mImpl->resources(), (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003999 }
4000 if (local_pAllocator)
4001 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004002 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004003 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004004 countingStream->rewind();
4005 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004006 uint64_t cgen_var_287;
4007 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_287, 1);
4008 countingStream->write((uint64_t*)&cgen_var_287, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004009 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004010 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004011 uint64_t cgen_var_288 = (uint64_t)(uintptr_t)local_pAllocator;
4012 countingStream->putBe64(cgen_var_288);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004013 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004014 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004015 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004016 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004017 uint64_t cgen_var_289;
4018 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_289, 1);
4019 countingStream->write((uint64_t*)&cgen_var_289, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004020 }
4021 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4022 countingStream->rewind();
4023 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
4024 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
4025 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004026 uint64_t cgen_var_290;
4027 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_290, 1);
4028 stream->write((uint64_t*)&cgen_var_290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004029 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004030 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004031 uint64_t cgen_var_291 = (uint64_t)(uintptr_t)local_pAllocator;
4032 stream->putBe64(cgen_var_291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004033 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004034 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004035 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004036 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004037 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004038 uint64_t cgen_var_292;
4039 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_292, 1);
4040 stream->write((uint64_t*)&cgen_var_292, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004041 stream->setHandleMapping(resources->unwrapMapping());
4042 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004043 uint64_t cgen_var_293;
4044 stream->read((uint64_t*)&cgen_var_293, 8);
4045 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_293, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004046 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004047 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
4048 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004049 countingStream->clearPool();
4050 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004051 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004052 mImpl->log("finish vkCreateShaderModule");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004053 return vkCreateShaderModule_VkResult_return;
4054}
4055
4056void VkEncoder::vkDestroyShaderModule(
4057 VkDevice device,
4058 VkShaderModule shaderModule,
4059 const VkAllocationCallbacks* pAllocator)
4060{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004061 mImpl->log("start vkDestroyShaderModule");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004062 auto stream = mImpl->stream();
4063 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004064 auto resources = mImpl->resources();
4065 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004066 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004067 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004068 VkShaderModule local_shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004069 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004070 local_device = device;
4071 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004072 local_pAllocator = nullptr;
4073 if (pAllocator)
4074 {
4075 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4076 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4077 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004078 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004079 if (local_pAllocator)
4080 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004081 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004082 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004083 countingStream->rewind();
4084 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004085 uint64_t cgen_var_294;
4086 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_294, 1);
4087 countingStream->write((uint64_t*)&cgen_var_294, 1 * 8);
4088 uint64_t cgen_var_295;
4089 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_295, 1);
4090 countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004091 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004092 uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
4093 countingStream->putBe64(cgen_var_296);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004094 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004095 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004096 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004097 }
4098 }
4099 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4100 countingStream->rewind();
4101 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
4102 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
4103 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004104 uint64_t cgen_var_297;
4105 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_297, 1);
4106 stream->write((uint64_t*)&cgen_var_297, 1 * 8);
4107 uint64_t cgen_var_298;
4108 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_298, 1);
4109 stream->write((uint64_t*)&cgen_var_298, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004110 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004111 uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
4112 stream->putBe64(cgen_var_299);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004113 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004114 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004115 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004116 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004117 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004118 mImpl->log("finish vkDestroyShaderModule");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004119}
4120
4121VkResult VkEncoder::vkCreatePipelineCache(
4122 VkDevice device,
4123 const VkPipelineCacheCreateInfo* pCreateInfo,
4124 const VkAllocationCallbacks* pAllocator,
4125 VkPipelineCache* pPipelineCache)
4126{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004127 mImpl->log("start vkCreatePipelineCache");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004128 auto stream = mImpl->stream();
4129 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004130 auto resources = mImpl->resources();
4131 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004132 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004133 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004134 VkPipelineCacheCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004135 VkAllocationCallbacks* local_pAllocator;
4136 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004137 local_pCreateInfo = nullptr;
4138 if (pCreateInfo)
4139 {
4140 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
4141 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
4142 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004143 local_pAllocator = nullptr;
4144 if (pAllocator)
4145 {
4146 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4147 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4148 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004149 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004150 if (local_pCreateInfo)
4151 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004152 transform_tohost_VkPipelineCacheCreateInfo(mImpl->resources(), (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004153 }
4154 if (local_pAllocator)
4155 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004156 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004157 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004158 countingStream->rewind();
4159 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004160 uint64_t cgen_var_300;
4161 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_300, 1);
4162 countingStream->write((uint64_t*)&cgen_var_300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004163 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004164 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004165 uint64_t cgen_var_301 = (uint64_t)(uintptr_t)local_pAllocator;
4166 countingStream->putBe64(cgen_var_301);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004167 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004168 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004169 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004170 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004171 uint64_t cgen_var_302;
4172 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_302, 1);
4173 countingStream->write((uint64_t*)&cgen_var_302, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004174 }
4175 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4176 countingStream->rewind();
4177 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
4178 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
4179 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004180 uint64_t cgen_var_303;
4181 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_303, 1);
4182 stream->write((uint64_t*)&cgen_var_303, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004183 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004184 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004185 uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
4186 stream->putBe64(cgen_var_304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004187 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004188 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004189 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004190 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004191 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004192 uint64_t cgen_var_305;
4193 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_305, 1);
4194 stream->write((uint64_t*)&cgen_var_305, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004195 stream->setHandleMapping(resources->unwrapMapping());
4196 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004197 uint64_t cgen_var_306;
4198 stream->read((uint64_t*)&cgen_var_306, 8);
4199 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_306, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004200 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004201 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
4202 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004203 countingStream->clearPool();
4204 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004205 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004206 mImpl->log("finish vkCreatePipelineCache");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004207 return vkCreatePipelineCache_VkResult_return;
4208}
4209
4210void VkEncoder::vkDestroyPipelineCache(
4211 VkDevice device,
4212 VkPipelineCache pipelineCache,
4213 const VkAllocationCallbacks* pAllocator)
4214{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004215 mImpl->log("start vkDestroyPipelineCache");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004216 auto stream = mImpl->stream();
4217 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004218 auto resources = mImpl->resources();
4219 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004220 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004221 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004222 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004223 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004224 local_device = device;
4225 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004226 local_pAllocator = nullptr;
4227 if (pAllocator)
4228 {
4229 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4230 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4231 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004232 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004233 if (local_pAllocator)
4234 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004235 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004236 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004237 countingStream->rewind();
4238 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004239 uint64_t cgen_var_307;
4240 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_307, 1);
4241 countingStream->write((uint64_t*)&cgen_var_307, 1 * 8);
4242 uint64_t cgen_var_308;
4243 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_308, 1);
4244 countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004245 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004246 uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
4247 countingStream->putBe64(cgen_var_309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004248 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004249 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004250 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004251 }
4252 }
4253 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4254 countingStream->rewind();
4255 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
4256 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
4257 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004258 uint64_t cgen_var_310;
4259 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_310, 1);
4260 stream->write((uint64_t*)&cgen_var_310, 1 * 8);
4261 uint64_t cgen_var_311;
4262 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_311, 1);
4263 stream->write((uint64_t*)&cgen_var_311, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004264 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004265 uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
4266 stream->putBe64(cgen_var_312);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004267 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004268 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004269 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004270 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004271 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004272 mImpl->log("finish vkDestroyPipelineCache");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004273}
4274
4275VkResult VkEncoder::vkGetPipelineCacheData(
4276 VkDevice device,
4277 VkPipelineCache pipelineCache,
4278 size_t* pDataSize,
4279 void* pData)
4280{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004281 mImpl->log("start vkGetPipelineCacheData");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004282 auto stream = mImpl->stream();
4283 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004284 auto resources = mImpl->resources();
4285 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004286 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004287 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004288 VkPipelineCache local_pipelineCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004289 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004290 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004291 countingStream->rewind();
4292 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004293 uint64_t cgen_var_313;
4294 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_313, 1);
4295 countingStream->write((uint64_t*)&cgen_var_313, 1 * 8);
4296 uint64_t cgen_var_314;
4297 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_314, 1);
4298 countingStream->write((uint64_t*)&cgen_var_314, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004299 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004300 uint64_t cgen_var_315 = (uint64_t)(uintptr_t)pDataSize;
4301 countingStream->putBe64(cgen_var_315);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004302 if (pDataSize)
4303 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004304 uint64_t cgen_var_316 = (uint64_t)(*pDataSize);
4305 countingStream->putBe64(cgen_var_316);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004306 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004307 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004308 uint64_t cgen_var_317 = (uint64_t)(uintptr_t)pData;
4309 countingStream->putBe64(cgen_var_317);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004310 if (pData)
4311 {
4312 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4313 }
4314 }
4315 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4316 countingStream->rewind();
4317 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
4318 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
4319 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004320 uint64_t cgen_var_318;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004321 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08004322 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004323 uint64_t cgen_var_319;
4324 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
4325 stream->write((uint64_t*)&cgen_var_319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004326 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004327 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)pDataSize;
4328 stream->putBe64(cgen_var_320);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004329 if (pDataSize)
4330 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004331 uint64_t cgen_var_321 = (uint64_t)(*pDataSize);
4332 stream->putBe64(cgen_var_321);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004333 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004334 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004335 uint64_t cgen_var_322 = (uint64_t)(uintptr_t)pData;
4336 stream->putBe64(cgen_var_322);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004337 if (pData)
4338 {
4339 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4340 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004341 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004342 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004343 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004344 if (pDataSize)
4345 {
4346 if (!(check_pDataSize))
4347 {
4348 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
4349 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004350 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004351 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004352 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004353 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004354 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004355 if (pData)
4356 {
4357 if (!(check_pData))
4358 {
4359 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
4360 }
4361 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4362 }
4363 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
4364 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004365 countingStream->clearPool();
4366 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004367 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004368 mImpl->log("finish vkGetPipelineCacheData");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004369 return vkGetPipelineCacheData_VkResult_return;
4370}
4371
4372VkResult VkEncoder::vkMergePipelineCaches(
4373 VkDevice device,
4374 VkPipelineCache dstCache,
4375 uint32_t srcCacheCount,
4376 const VkPipelineCache* pSrcCaches)
4377{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004378 mImpl->log("start vkMergePipelineCaches");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004379 auto stream = mImpl->stream();
4380 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004381 auto resources = mImpl->resources();
4382 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004383 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004384 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004385 VkPipelineCache local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004386 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004387 VkPipelineCache* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004388 local_device = device;
4389 local_dstCache = dstCache;
4390 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004391 local_pSrcCaches = nullptr;
4392 if (pSrcCaches)
4393 {
4394 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
4395 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004396 countingStream->rewind();
4397 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004398 uint64_t cgen_var_326;
4399 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
4400 countingStream->write((uint64_t*)&cgen_var_326, 1 * 8);
4401 uint64_t cgen_var_327;
4402 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_327, 1);
4403 countingStream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004404 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004405 if (((srcCacheCount)))
4406 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004407 uint64_t* cgen_var_328;
4408 countingStream->alloc((void**)&cgen_var_328, ((srcCacheCount)) * 8);
4409 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_328, ((srcCacheCount)));
4410 countingStream->write((uint64_t*)cgen_var_328, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004411 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004412 }
4413 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4414 countingStream->rewind();
4415 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4416 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4417 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004418 uint64_t cgen_var_329;
4419 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_329, 1);
4420 stream->write((uint64_t*)&cgen_var_329, 1 * 8);
4421 uint64_t cgen_var_330;
4422 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_330, 1);
4423 stream->write((uint64_t*)&cgen_var_330, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004424 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004425 if (((srcCacheCount)))
4426 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004427 uint64_t* cgen_var_331;
4428 stream->alloc((void**)&cgen_var_331, ((srcCacheCount)) * 8);
4429 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_331, ((srcCacheCount)));
4430 stream->write((uint64_t*)cgen_var_331, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004431 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004432 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4433 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004434 countingStream->clearPool();
4435 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004436 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004437 mImpl->log("finish vkMergePipelineCaches");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004438 return vkMergePipelineCaches_VkResult_return;
4439}
4440
4441VkResult VkEncoder::vkCreateGraphicsPipelines(
4442 VkDevice device,
4443 VkPipelineCache pipelineCache,
4444 uint32_t createInfoCount,
4445 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4446 const VkAllocationCallbacks* pAllocator,
4447 VkPipeline* pPipelines)
4448{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004449 mImpl->log("start vkCreateGraphicsPipelines");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004450 auto stream = mImpl->stream();
4451 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004452 auto resources = mImpl->resources();
4453 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004454 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004455 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004456 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004457 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004458 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004459 VkAllocationCallbacks* local_pAllocator;
4460 local_device = device;
4461 local_pipelineCache = pipelineCache;
4462 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004463 local_pCreateInfos = nullptr;
4464 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004465 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004466 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004467 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4468 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004469 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004470 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004471 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004472 local_pAllocator = nullptr;
4473 if (pAllocator)
4474 {
4475 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4476 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4477 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004478 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004479 if (local_pCreateInfos)
4480 {
4481 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4482 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004483 transform_tohost_VkGraphicsPipelineCreateInfo(mImpl->resources(), (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004484 }
4485 }
4486 if (local_pAllocator)
4487 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004488 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004489 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004490 countingStream->rewind();
4491 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004492 uint64_t cgen_var_332;
4493 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_332, 1);
4494 countingStream->write((uint64_t*)&cgen_var_332, 1 * 8);
4495 uint64_t cgen_var_333;
4496 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_333, 1);
4497 countingStream->write((uint64_t*)&cgen_var_333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004498 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4499 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4500 {
4501 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4502 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004503 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004504 uint64_t cgen_var_334 = (uint64_t)(uintptr_t)local_pAllocator;
4505 countingStream->putBe64(cgen_var_334);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004506 if (local_pAllocator)
4507 {
4508 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004509 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004510 if (((createInfoCount)))
4511 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004512 uint64_t* cgen_var_335;
4513 countingStream->alloc((void**)&cgen_var_335, ((createInfoCount)) * 8);
4514 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_335, ((createInfoCount)));
4515 countingStream->write((uint64_t*)cgen_var_335, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004516 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004517 }
4518 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4519 countingStream->rewind();
4520 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4521 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4522 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004523 uint64_t cgen_var_336;
4524 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_336, 1);
4525 stream->write((uint64_t*)&cgen_var_336, 1 * 8);
4526 uint64_t cgen_var_337;
4527 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_337, 1);
4528 stream->write((uint64_t*)&cgen_var_337, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004529 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004530 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4531 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004532 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004533 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004534 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004535 uint64_t cgen_var_338 = (uint64_t)(uintptr_t)local_pAllocator;
4536 stream->putBe64(cgen_var_338);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004537 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004538 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004539 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004540 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004541 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004542 if (((createInfoCount)))
4543 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004544 uint64_t* cgen_var_339;
4545 stream->alloc((void**)&cgen_var_339, ((createInfoCount)) * 8);
4546 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_339, ((createInfoCount)));
4547 stream->write((uint64_t*)cgen_var_339, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004548 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004549 stream->setHandleMapping(resources->unwrapMapping());
4550 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004551 if (((createInfoCount)))
4552 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004553 uint64_t* cgen_var_340;
4554 stream->alloc((void**)&cgen_var_340, ((createInfoCount)) * 8);
4555 stream->read((uint64_t*)cgen_var_340, ((createInfoCount)) * 8);
4556 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_340, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004557 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004558 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004559 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4560 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004561 countingStream->clearPool();
4562 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004563 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004564 mImpl->log("finish vkCreateGraphicsPipelines");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004565 return vkCreateGraphicsPipelines_VkResult_return;
4566}
4567
4568VkResult VkEncoder::vkCreateComputePipelines(
4569 VkDevice device,
4570 VkPipelineCache pipelineCache,
4571 uint32_t createInfoCount,
4572 const VkComputePipelineCreateInfo* pCreateInfos,
4573 const VkAllocationCallbacks* pAllocator,
4574 VkPipeline* pPipelines)
4575{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004576 mImpl->log("start vkCreateComputePipelines");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004577 auto stream = mImpl->stream();
4578 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004579 auto resources = mImpl->resources();
4580 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004581 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004582 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004583 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004584 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004585 VkComputePipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004586 VkAllocationCallbacks* local_pAllocator;
4587 local_device = device;
4588 local_pipelineCache = pipelineCache;
4589 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004590 local_pCreateInfos = nullptr;
4591 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004592 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004593 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004594 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4595 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004596 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004597 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004598 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004599 local_pAllocator = nullptr;
4600 if (pAllocator)
4601 {
4602 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4603 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4604 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004605 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004606 if (local_pCreateInfos)
4607 {
4608 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4609 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004610 transform_tohost_VkComputePipelineCreateInfo(mImpl->resources(), (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004611 }
4612 }
4613 if (local_pAllocator)
4614 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004615 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004616 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004617 countingStream->rewind();
4618 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004619 uint64_t cgen_var_341;
4620 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_341, 1);
4621 countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
4622 uint64_t cgen_var_342;
4623 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_342, 1);
4624 countingStream->write((uint64_t*)&cgen_var_342, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004625 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4626 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4627 {
4628 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4629 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004630 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004631 uint64_t cgen_var_343 = (uint64_t)(uintptr_t)local_pAllocator;
4632 countingStream->putBe64(cgen_var_343);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004633 if (local_pAllocator)
4634 {
4635 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004636 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004637 if (((createInfoCount)))
4638 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004639 uint64_t* cgen_var_344;
4640 countingStream->alloc((void**)&cgen_var_344, ((createInfoCount)) * 8);
4641 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_344, ((createInfoCount)));
4642 countingStream->write((uint64_t*)cgen_var_344, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004643 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004644 }
4645 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4646 countingStream->rewind();
4647 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4648 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4649 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004650 uint64_t cgen_var_345;
4651 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_345, 1);
4652 stream->write((uint64_t*)&cgen_var_345, 1 * 8);
4653 uint64_t cgen_var_346;
4654 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_346, 1);
4655 stream->write((uint64_t*)&cgen_var_346, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004656 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004657 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4658 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004659 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004660 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004661 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004662 uint64_t cgen_var_347 = (uint64_t)(uintptr_t)local_pAllocator;
4663 stream->putBe64(cgen_var_347);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004664 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004665 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004666 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004667 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004668 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004669 if (((createInfoCount)))
4670 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004671 uint64_t* cgen_var_348;
4672 stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4673 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_348, ((createInfoCount)));
4674 stream->write((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004675 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004676 stream->setHandleMapping(resources->unwrapMapping());
4677 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004678 if (((createInfoCount)))
4679 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004680 uint64_t* cgen_var_349;
4681 stream->alloc((void**)&cgen_var_349, ((createInfoCount)) * 8);
4682 stream->read((uint64_t*)cgen_var_349, ((createInfoCount)) * 8);
4683 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_349, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004684 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004685 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004686 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4687 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004688 countingStream->clearPool();
4689 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004690 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004691 mImpl->log("finish vkCreateComputePipelines");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004692 return vkCreateComputePipelines_VkResult_return;
4693}
4694
4695void VkEncoder::vkDestroyPipeline(
4696 VkDevice device,
4697 VkPipeline pipeline,
4698 const VkAllocationCallbacks* pAllocator)
4699{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004700 mImpl->log("start vkDestroyPipeline");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004701 auto stream = mImpl->stream();
4702 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004703 auto resources = mImpl->resources();
4704 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004705 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004706 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004707 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004708 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004709 local_device = device;
4710 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004711 local_pAllocator = nullptr;
4712 if (pAllocator)
4713 {
4714 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4715 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4716 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004717 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004718 if (local_pAllocator)
4719 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004720 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004721 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004722 countingStream->rewind();
4723 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004724 uint64_t cgen_var_350;
4725 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_350, 1);
4726 countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
4727 uint64_t cgen_var_351;
4728 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_351, 1);
4729 countingStream->write((uint64_t*)&cgen_var_351, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004730 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004731 uint64_t cgen_var_352 = (uint64_t)(uintptr_t)local_pAllocator;
4732 countingStream->putBe64(cgen_var_352);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004733 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004734 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004735 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004736 }
4737 }
4738 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4739 countingStream->rewind();
4740 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
4741 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
4742 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004743 uint64_t cgen_var_353;
4744 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4745 stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4746 uint64_t cgen_var_354;
4747 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_354, 1);
4748 stream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004749 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004750 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4751 stream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004752 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004753 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004754 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004755 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004756 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004757 mImpl->log("finish vkDestroyPipeline");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004758}
4759
4760VkResult VkEncoder::vkCreatePipelineLayout(
4761 VkDevice device,
4762 const VkPipelineLayoutCreateInfo* pCreateInfo,
4763 const VkAllocationCallbacks* pAllocator,
4764 VkPipelineLayout* pPipelineLayout)
4765{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004766 mImpl->log("start vkCreatePipelineLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004767 auto stream = mImpl->stream();
4768 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004769 auto resources = mImpl->resources();
4770 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004771 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004772 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004773 VkPipelineLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004774 VkAllocationCallbacks* local_pAllocator;
4775 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004776 local_pCreateInfo = nullptr;
4777 if (pCreateInfo)
4778 {
4779 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
4780 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4781 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004782 local_pAllocator = nullptr;
4783 if (pAllocator)
4784 {
4785 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4786 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4787 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004788 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004789 if (local_pCreateInfo)
4790 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004791 transform_tohost_VkPipelineLayoutCreateInfo(mImpl->resources(), (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004792 }
4793 if (local_pAllocator)
4794 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004795 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004796 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004797 countingStream->rewind();
4798 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004799 uint64_t cgen_var_356;
4800 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_356, 1);
4801 countingStream->write((uint64_t*)&cgen_var_356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004802 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004803 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004804 uint64_t cgen_var_357 = (uint64_t)(uintptr_t)local_pAllocator;
4805 countingStream->putBe64(cgen_var_357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004806 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004807 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004808 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004809 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004810 uint64_t cgen_var_358;
4811 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_358, 1);
4812 countingStream->write((uint64_t*)&cgen_var_358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004813 }
4814 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4815 countingStream->rewind();
4816 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
4817 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
4818 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004819 uint64_t cgen_var_359;
4820 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_359, 1);
4821 stream->write((uint64_t*)&cgen_var_359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004822 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004823 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004824 uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
4825 stream->putBe64(cgen_var_360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004826 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004827 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004828 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004829 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004830 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004831 uint64_t cgen_var_361;
4832 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_361, 1);
4833 stream->write((uint64_t*)&cgen_var_361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004834 stream->setHandleMapping(resources->unwrapMapping());
4835 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004836 uint64_t cgen_var_362;
4837 stream->read((uint64_t*)&cgen_var_362, 8);
4838 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_362, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004839 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004840 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
4841 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004842 countingStream->clearPool();
4843 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004844 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004845 mImpl->log("finish vkCreatePipelineLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004846 return vkCreatePipelineLayout_VkResult_return;
4847}
4848
4849void VkEncoder::vkDestroyPipelineLayout(
4850 VkDevice device,
4851 VkPipelineLayout pipelineLayout,
4852 const VkAllocationCallbacks* pAllocator)
4853{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004854 mImpl->log("start vkDestroyPipelineLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004855 auto stream = mImpl->stream();
4856 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004857 auto resources = mImpl->resources();
4858 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004859 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004860 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004861 VkPipelineLayout local_pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004862 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004863 local_device = device;
4864 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004865 local_pAllocator = nullptr;
4866 if (pAllocator)
4867 {
4868 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4869 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4870 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004871 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004872 if (local_pAllocator)
4873 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004874 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004875 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004876 countingStream->rewind();
4877 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004878 uint64_t cgen_var_363;
4879 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_363, 1);
4880 countingStream->write((uint64_t*)&cgen_var_363, 1 * 8);
4881 uint64_t cgen_var_364;
4882 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_364, 1);
4883 countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004884 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004885 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
4886 countingStream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004887 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004888 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004889 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004890 }
4891 }
4892 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4893 countingStream->rewind();
4894 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
4895 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
4896 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004897 uint64_t cgen_var_366;
4898 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_366, 1);
4899 stream->write((uint64_t*)&cgen_var_366, 1 * 8);
4900 uint64_t cgen_var_367;
4901 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_367, 1);
4902 stream->write((uint64_t*)&cgen_var_367, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004903 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004904 uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
4905 stream->putBe64(cgen_var_368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004906 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004907 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004908 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004909 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004910 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004911 mImpl->log("finish vkDestroyPipelineLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004912}
4913
4914VkResult VkEncoder::vkCreateSampler(
4915 VkDevice device,
4916 const VkSamplerCreateInfo* pCreateInfo,
4917 const VkAllocationCallbacks* pAllocator,
4918 VkSampler* pSampler)
4919{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004920 mImpl->log("start vkCreateSampler");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004921 auto stream = mImpl->stream();
4922 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004923 auto resources = mImpl->resources();
4924 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004925 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004926 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004927 VkSamplerCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004928 VkAllocationCallbacks* local_pAllocator;
4929 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004930 local_pCreateInfo = nullptr;
4931 if (pCreateInfo)
4932 {
4933 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
4934 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
4935 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004936 local_pAllocator = nullptr;
4937 if (pAllocator)
4938 {
4939 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4940 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4941 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004942 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004943 if (local_pCreateInfo)
4944 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004945 transform_tohost_VkSamplerCreateInfo(mImpl->resources(), (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004946 }
4947 if (local_pAllocator)
4948 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004949 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004950 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004951 countingStream->rewind();
4952 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004953 uint64_t cgen_var_369;
4954 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_369, 1);
4955 countingStream->write((uint64_t*)&cgen_var_369, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004956 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004957 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004958 uint64_t cgen_var_370 = (uint64_t)(uintptr_t)local_pAllocator;
4959 countingStream->putBe64(cgen_var_370);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004960 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004961 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004962 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004963 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004964 uint64_t cgen_var_371;
4965 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_371, 1);
4966 countingStream->write((uint64_t*)&cgen_var_371, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004967 }
4968 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4969 countingStream->rewind();
4970 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
4971 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
4972 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004973 uint64_t cgen_var_372;
4974 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_372, 1);
4975 stream->write((uint64_t*)&cgen_var_372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004976 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004977 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004978 uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
4979 stream->putBe64(cgen_var_373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004980 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004981 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004982 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004983 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004984 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004985 uint64_t cgen_var_374;
4986 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_374, 1);
4987 stream->write((uint64_t*)&cgen_var_374, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004988 stream->setHandleMapping(resources->unwrapMapping());
4989 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004990 uint64_t cgen_var_375;
4991 stream->read((uint64_t*)&cgen_var_375, 8);
4992 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_375, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004993 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004994 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
4995 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004996 countingStream->clearPool();
4997 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004998 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004999 mImpl->log("finish vkCreateSampler");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005000 return vkCreateSampler_VkResult_return;
5001}
5002
5003void VkEncoder::vkDestroySampler(
5004 VkDevice device,
5005 VkSampler sampler,
5006 const VkAllocationCallbacks* pAllocator)
5007{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005008 mImpl->log("start vkDestroySampler");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005009 auto stream = mImpl->stream();
5010 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005011 auto resources = mImpl->resources();
5012 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005013 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005014 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005015 VkSampler local_sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005016 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005017 local_device = device;
5018 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005019 local_pAllocator = nullptr;
5020 if (pAllocator)
5021 {
5022 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5023 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5024 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005025 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005026 if (local_pAllocator)
5027 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005028 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005029 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005030 countingStream->rewind();
5031 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005032 uint64_t cgen_var_376;
5033 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_376, 1);
5034 countingStream->write((uint64_t*)&cgen_var_376, 1 * 8);
5035 uint64_t cgen_var_377;
5036 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_377, 1);
5037 countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005038 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005039 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
5040 countingStream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005041 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005042 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005043 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005044 }
5045 }
5046 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5047 countingStream->rewind();
5048 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
5049 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
5050 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005051 uint64_t cgen_var_379;
5052 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_379, 1);
5053 stream->write((uint64_t*)&cgen_var_379, 1 * 8);
5054 uint64_t cgen_var_380;
5055 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_380, 1);
5056 stream->write((uint64_t*)&cgen_var_380, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005057 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005058 uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
5059 stream->putBe64(cgen_var_381);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005060 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005061 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005062 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005063 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005064 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005065 mImpl->log("finish vkDestroySampler");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005066}
5067
5068VkResult VkEncoder::vkCreateDescriptorSetLayout(
5069 VkDevice device,
5070 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
5071 const VkAllocationCallbacks* pAllocator,
5072 VkDescriptorSetLayout* pSetLayout)
5073{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005074 mImpl->log("start vkCreateDescriptorSetLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005075 auto stream = mImpl->stream();
5076 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005077 auto resources = mImpl->resources();
5078 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005079 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005080 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005081 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005082 VkAllocationCallbacks* local_pAllocator;
5083 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005084 local_pCreateInfo = nullptr;
5085 if (pCreateInfo)
5086 {
5087 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
5088 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
5089 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005090 local_pAllocator = nullptr;
5091 if (pAllocator)
5092 {
5093 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5094 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5095 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005096 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005097 if (local_pCreateInfo)
5098 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005099 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005100 }
5101 if (local_pAllocator)
5102 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005103 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005104 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005105 countingStream->rewind();
5106 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005107 uint64_t cgen_var_382;
5108 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_382, 1);
5109 countingStream->write((uint64_t*)&cgen_var_382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005110 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005111 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005112 uint64_t cgen_var_383 = (uint64_t)(uintptr_t)local_pAllocator;
5113 countingStream->putBe64(cgen_var_383);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005114 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005115 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005116 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005117 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005118 uint64_t cgen_var_384;
5119 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_384, 1);
5120 countingStream->write((uint64_t*)&cgen_var_384, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005121 }
5122 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5123 countingStream->rewind();
5124 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
5125 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
5126 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005127 uint64_t cgen_var_385;
5128 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_385, 1);
5129 stream->write((uint64_t*)&cgen_var_385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005130 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005131 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005132 uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
5133 stream->putBe64(cgen_var_386);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005134 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005135 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005136 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005137 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005138 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005139 uint64_t cgen_var_387;
5140 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_387, 1);
5141 stream->write((uint64_t*)&cgen_var_387, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005142 stream->setHandleMapping(resources->unwrapMapping());
5143 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005144 uint64_t cgen_var_388;
5145 stream->read((uint64_t*)&cgen_var_388, 8);
5146 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_388, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005147 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005148 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
5149 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005150 countingStream->clearPool();
5151 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005152 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005153 mImpl->log("finish vkCreateDescriptorSetLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005154 return vkCreateDescriptorSetLayout_VkResult_return;
5155}
5156
5157void VkEncoder::vkDestroyDescriptorSetLayout(
5158 VkDevice device,
5159 VkDescriptorSetLayout descriptorSetLayout,
5160 const VkAllocationCallbacks* pAllocator)
5161{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005162 mImpl->log("start vkDestroyDescriptorSetLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005163 auto stream = mImpl->stream();
5164 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005165 auto resources = mImpl->resources();
5166 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005167 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005168 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005169 VkDescriptorSetLayout local_descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005170 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005171 local_device = device;
5172 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005173 local_pAllocator = nullptr;
5174 if (pAllocator)
5175 {
5176 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5177 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5178 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005179 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005180 if (local_pAllocator)
5181 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005182 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005183 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005184 countingStream->rewind();
5185 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005186 uint64_t cgen_var_389;
5187 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_389, 1);
5188 countingStream->write((uint64_t*)&cgen_var_389, 1 * 8);
5189 uint64_t cgen_var_390;
5190 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_390, 1);
5191 countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005192 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005193 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
5194 countingStream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005195 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005196 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005197 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005198 }
5199 }
5200 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5201 countingStream->rewind();
5202 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
5203 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
5204 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005205 uint64_t cgen_var_392;
5206 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_392, 1);
5207 stream->write((uint64_t*)&cgen_var_392, 1 * 8);
5208 uint64_t cgen_var_393;
5209 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_393, 1);
5210 stream->write((uint64_t*)&cgen_var_393, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005211 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005212 uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
5213 stream->putBe64(cgen_var_394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005214 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005215 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005216 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005217 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005218 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005219 mImpl->log("finish vkDestroyDescriptorSetLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005220}
5221
5222VkResult VkEncoder::vkCreateDescriptorPool(
5223 VkDevice device,
5224 const VkDescriptorPoolCreateInfo* pCreateInfo,
5225 const VkAllocationCallbacks* pAllocator,
5226 VkDescriptorPool* pDescriptorPool)
5227{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005228 mImpl->log("start vkCreateDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005229 auto stream = mImpl->stream();
5230 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005231 auto resources = mImpl->resources();
5232 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005233 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005234 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005235 VkDescriptorPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005236 VkAllocationCallbacks* local_pAllocator;
5237 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005238 local_pCreateInfo = nullptr;
5239 if (pCreateInfo)
5240 {
5241 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
5242 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5243 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005244 local_pAllocator = nullptr;
5245 if (pAllocator)
5246 {
5247 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5248 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5249 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005250 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005251 if (local_pCreateInfo)
5252 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005253 transform_tohost_VkDescriptorPoolCreateInfo(mImpl->resources(), (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005254 }
5255 if (local_pAllocator)
5256 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005257 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005258 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005259 countingStream->rewind();
5260 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005261 uint64_t cgen_var_395;
5262 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_395, 1);
5263 countingStream->write((uint64_t*)&cgen_var_395, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005264 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005265 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005266 uint64_t cgen_var_396 = (uint64_t)(uintptr_t)local_pAllocator;
5267 countingStream->putBe64(cgen_var_396);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005268 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005269 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005270 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005271 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005272 uint64_t cgen_var_397;
5273 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_397, 1);
5274 countingStream->write((uint64_t*)&cgen_var_397, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005275 }
5276 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5277 countingStream->rewind();
5278 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
5279 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
5280 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005281 uint64_t cgen_var_398;
5282 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_398, 1);
5283 stream->write((uint64_t*)&cgen_var_398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005284 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005285 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005286 uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
5287 stream->putBe64(cgen_var_399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005288 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005289 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005290 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005291 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005292 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005293 uint64_t cgen_var_400;
5294 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_400, 1);
5295 stream->write((uint64_t*)&cgen_var_400, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005296 stream->setHandleMapping(resources->unwrapMapping());
5297 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005298 uint64_t cgen_var_401;
5299 stream->read((uint64_t*)&cgen_var_401, 8);
5300 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_401, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005301 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005302 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
5303 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005304 countingStream->clearPool();
5305 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005306 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005307 mImpl->log("finish vkCreateDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005308 return vkCreateDescriptorPool_VkResult_return;
5309}
5310
5311void VkEncoder::vkDestroyDescriptorPool(
5312 VkDevice device,
5313 VkDescriptorPool descriptorPool,
5314 const VkAllocationCallbacks* pAllocator)
5315{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005316 mImpl->log("start vkDestroyDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005317 auto stream = mImpl->stream();
5318 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005319 auto resources = mImpl->resources();
5320 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005321 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005322 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005323 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005324 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005325 local_device = device;
5326 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005327 local_pAllocator = nullptr;
5328 if (pAllocator)
5329 {
5330 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5331 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5332 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005333 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005334 if (local_pAllocator)
5335 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005336 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005337 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005338 countingStream->rewind();
5339 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005340 uint64_t cgen_var_402;
5341 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_402, 1);
5342 countingStream->write((uint64_t*)&cgen_var_402, 1 * 8);
5343 uint64_t cgen_var_403;
5344 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_403, 1);
5345 countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005346 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005347 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
5348 countingStream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005349 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005350 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005351 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005352 }
5353 }
5354 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5355 countingStream->rewind();
5356 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
5357 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
5358 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005359 uint64_t cgen_var_405;
5360 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_405, 1);
5361 stream->write((uint64_t*)&cgen_var_405, 1 * 8);
5362 uint64_t cgen_var_406;
5363 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_406, 1);
5364 stream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005365 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005366 uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
5367 stream->putBe64(cgen_var_407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005368 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005369 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005370 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005371 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005372 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005373 mImpl->log("finish vkDestroyDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005374}
5375
5376VkResult VkEncoder::vkResetDescriptorPool(
5377 VkDevice device,
5378 VkDescriptorPool descriptorPool,
5379 VkDescriptorPoolResetFlags flags)
5380{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005381 mImpl->log("start vkResetDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005382 auto stream = mImpl->stream();
5383 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005384 auto resources = mImpl->resources();
5385 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005386 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005387 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005388 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005389 VkDescriptorPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005390 local_device = device;
5391 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005392 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005393 countingStream->rewind();
5394 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005395 uint64_t cgen_var_408;
5396 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_408, 1);
5397 countingStream->write((uint64_t*)&cgen_var_408, 1 * 8);
5398 uint64_t cgen_var_409;
5399 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_409, 1);
5400 countingStream->write((uint64_t*)&cgen_var_409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005401 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005402 }
5403 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5404 countingStream->rewind();
5405 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
5406 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
5407 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005408 uint64_t cgen_var_410;
5409 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
5410 stream->write((uint64_t*)&cgen_var_410, 1 * 8);
5411 uint64_t cgen_var_411;
5412 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
5413 stream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005414 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005415 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
5416 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005417 countingStream->clearPool();
5418 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005419 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005420 mImpl->log("finish vkResetDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005421 return vkResetDescriptorPool_VkResult_return;
5422}
5423
5424VkResult VkEncoder::vkAllocateDescriptorSets(
5425 VkDevice device,
5426 const VkDescriptorSetAllocateInfo* pAllocateInfo,
5427 VkDescriptorSet* pDescriptorSets)
5428{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005429 mImpl->log("start vkAllocateDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005430 auto stream = mImpl->stream();
5431 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005432 auto resources = mImpl->resources();
5433 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005434 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005435 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005436 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005437 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005438 local_pAllocateInfo = nullptr;
5439 if (pAllocateInfo)
5440 {
5441 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
5442 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5443 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005444 if (local_pAllocateInfo)
5445 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005446 transform_tohost_VkDescriptorSetAllocateInfo(mImpl->resources(), (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005447 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005448 countingStream->rewind();
5449 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005450 uint64_t cgen_var_412;
5451 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_412, 1);
5452 countingStream->write((uint64_t*)&cgen_var_412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005453 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005454 if (pAllocateInfo->descriptorSetCount)
5455 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005456 uint64_t* cgen_var_413;
5457 countingStream->alloc((void**)&cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
5458 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_413, pAllocateInfo->descriptorSetCount);
5459 countingStream->write((uint64_t*)cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005460 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005461 }
5462 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5463 countingStream->rewind();
5464 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
5465 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
5466 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005467 uint64_t cgen_var_414;
5468 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_414, 1);
5469 stream->write((uint64_t*)&cgen_var_414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005470 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005471 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005472 if (pAllocateInfo->descriptorSetCount)
5473 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005474 uint64_t* cgen_var_415;
5475 stream->alloc((void**)&cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
5476 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_415, pAllocateInfo->descriptorSetCount);
5477 stream->write((uint64_t*)cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005478 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005479 stream->setHandleMapping(resources->unwrapMapping());
5480 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005481 if (pAllocateInfo->descriptorSetCount)
5482 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005483 uint64_t* cgen_var_416;
5484 stream->alloc((void**)&cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
5485 stream->read((uint64_t*)cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
5486 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_416, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005487 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005488 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005489 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
5490 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005491 countingStream->clearPool();
5492 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005493 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005494 mImpl->log("finish vkAllocateDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005495 return vkAllocateDescriptorSets_VkResult_return;
5496}
5497
5498VkResult VkEncoder::vkFreeDescriptorSets(
5499 VkDevice device,
5500 VkDescriptorPool descriptorPool,
5501 uint32_t descriptorSetCount,
5502 const VkDescriptorSet* pDescriptorSets)
5503{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005504 mImpl->log("start vkFreeDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005505 auto stream = mImpl->stream();
5506 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005507 auto resources = mImpl->resources();
5508 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005509 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005510 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005511 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005512 uint32_t local_descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005513 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005514 local_device = device;
5515 local_descriptorPool = descriptorPool;
5516 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005517 local_pDescriptorSets = nullptr;
5518 if (pDescriptorSets)
5519 {
5520 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5521 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005522 countingStream->rewind();
5523 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005524 uint64_t cgen_var_417;
5525 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_417, 1);
5526 countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
5527 uint64_t cgen_var_418;
5528 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_418, 1);
5529 countingStream->write((uint64_t*)&cgen_var_418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005530 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005531 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005532 uint64_t cgen_var_419 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5533 countingStream->putBe64(cgen_var_419);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005534 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005535 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005536 if (((descriptorSetCount)))
5537 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005538 uint64_t* cgen_var_420;
5539 countingStream->alloc((void**)&cgen_var_420, ((descriptorSetCount)) * 8);
5540 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_420, ((descriptorSetCount)));
5541 countingStream->write((uint64_t*)cgen_var_420, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005542 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005543 }
5544 }
5545 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5546 countingStream->rewind();
5547 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5548 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5549 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005550 uint64_t cgen_var_421;
5551 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_421, 1);
5552 stream->write((uint64_t*)&cgen_var_421, 1 * 8);
5553 uint64_t cgen_var_422;
5554 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_422, 1);
5555 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005556 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005557 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005558 uint64_t cgen_var_423 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5559 stream->putBe64(cgen_var_423);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005560 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005561 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005562 if (((descriptorSetCount)))
5563 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005564 uint64_t* cgen_var_424;
5565 stream->alloc((void**)&cgen_var_424, ((descriptorSetCount)) * 8);
5566 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_424, ((descriptorSetCount)));
5567 stream->write((uint64_t*)cgen_var_424, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005568 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005569 }
5570 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5571 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005572 countingStream->clearPool();
5573 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005574 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08005575 if (pDescriptorSets)
5576 {
5577 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5578 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005579 mImpl->log("finish vkFreeDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005580 return vkFreeDescriptorSets_VkResult_return;
5581}
5582
5583void VkEncoder::vkUpdateDescriptorSets(
5584 VkDevice device,
5585 uint32_t descriptorWriteCount,
5586 const VkWriteDescriptorSet* pDescriptorWrites,
5587 uint32_t descriptorCopyCount,
5588 const VkCopyDescriptorSet* pDescriptorCopies)
5589{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005590 mImpl->log("start vkUpdateDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005591 auto stream = mImpl->stream();
5592 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005593 auto resources = mImpl->resources();
5594 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005595 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005596 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005597 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005598 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005599 uint32_t local_descriptorCopyCount;
5600 VkCopyDescriptorSet* local_pDescriptorCopies;
5601 local_device = device;
5602 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005603 local_pDescriptorWrites = nullptr;
5604 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005605 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005606 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005607 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5608 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005609 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005610 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005611 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005612 local_descriptorCopyCount = descriptorCopyCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005613 local_pDescriptorCopies = nullptr;
5614 if (pDescriptorCopies)
5615 {
5616 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005617 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5618 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005619 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5620 }
5621 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005622 if (local_pDescriptorWrites)
5623 {
5624 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5625 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005626 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005627 }
5628 }
5629 if (local_pDescriptorCopies)
5630 {
5631 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5632 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005633 transform_tohost_VkCopyDescriptorSet(mImpl->resources(), (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005634 }
5635 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005636 countingStream->rewind();
5637 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005638 uint64_t cgen_var_425;
5639 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5640 countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005641 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5642 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5643 {
5644 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5645 }
5646 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5647 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5648 {
5649 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005650 }
5651 }
5652 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5653 countingStream->rewind();
5654 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5655 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5656 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005657 uint64_t cgen_var_426;
5658 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_426, 1);
5659 stream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005660 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005661 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5662 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005663 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005664 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005665 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005666 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5667 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005668 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005669 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005670 mImpl->log("finish vkUpdateDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005671}
5672
5673VkResult VkEncoder::vkCreateFramebuffer(
5674 VkDevice device,
5675 const VkFramebufferCreateInfo* pCreateInfo,
5676 const VkAllocationCallbacks* pAllocator,
5677 VkFramebuffer* pFramebuffer)
5678{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005679 mImpl->log("start vkCreateFramebuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005680 auto stream = mImpl->stream();
5681 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005682 auto resources = mImpl->resources();
5683 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005684 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005685 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005686 VkFramebufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005687 VkAllocationCallbacks* local_pAllocator;
5688 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005689 local_pCreateInfo = nullptr;
5690 if (pCreateInfo)
5691 {
5692 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
5693 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
5694 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005695 local_pAllocator = nullptr;
5696 if (pAllocator)
5697 {
5698 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5699 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5700 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005701 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005702 if (local_pCreateInfo)
5703 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005704 transform_tohost_VkFramebufferCreateInfo(mImpl->resources(), (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005705 }
5706 if (local_pAllocator)
5707 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005708 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005709 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005710 countingStream->rewind();
5711 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005712 uint64_t cgen_var_427;
5713 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_427, 1);
5714 countingStream->write((uint64_t*)&cgen_var_427, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005715 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005716 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005717 uint64_t cgen_var_428 = (uint64_t)(uintptr_t)local_pAllocator;
5718 countingStream->putBe64(cgen_var_428);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005719 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005720 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005721 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005722 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005723 uint64_t cgen_var_429;
5724 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_429, 1);
5725 countingStream->write((uint64_t*)&cgen_var_429, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005726 }
5727 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5728 countingStream->rewind();
5729 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
5730 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
5731 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005732 uint64_t cgen_var_430;
5733 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_430, 1);
5734 stream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005735 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005736 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005737 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pAllocator;
5738 stream->putBe64(cgen_var_431);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005739 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005740 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005741 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005742 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005743 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005744 uint64_t cgen_var_432;
5745 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_432, 1);
5746 stream->write((uint64_t*)&cgen_var_432, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005747 stream->setHandleMapping(resources->unwrapMapping());
5748 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005749 uint64_t cgen_var_433;
5750 stream->read((uint64_t*)&cgen_var_433, 8);
5751 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_433, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005752 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005753 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
5754 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005755 countingStream->clearPool();
5756 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005757 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005758 mImpl->log("finish vkCreateFramebuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005759 return vkCreateFramebuffer_VkResult_return;
5760}
5761
5762void VkEncoder::vkDestroyFramebuffer(
5763 VkDevice device,
5764 VkFramebuffer framebuffer,
5765 const VkAllocationCallbacks* pAllocator)
5766{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005767 mImpl->log("start vkDestroyFramebuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005768 auto stream = mImpl->stream();
5769 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005770 auto resources = mImpl->resources();
5771 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005772 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005773 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005774 VkFramebuffer local_framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005775 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005776 local_device = device;
5777 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005778 local_pAllocator = nullptr;
5779 if (pAllocator)
5780 {
5781 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5782 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5783 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005784 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005785 if (local_pAllocator)
5786 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005787 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005788 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005789 countingStream->rewind();
5790 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005791 uint64_t cgen_var_434;
5792 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5793 countingStream->write((uint64_t*)&cgen_var_434, 1 * 8);
5794 uint64_t cgen_var_435;
5795 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_435, 1);
5796 countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005797 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005798 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
5799 countingStream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005800 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005801 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005802 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005803 }
5804 }
5805 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5806 countingStream->rewind();
5807 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
5808 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
5809 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005810 uint64_t cgen_var_437;
5811 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_437, 1);
5812 stream->write((uint64_t*)&cgen_var_437, 1 * 8);
5813 uint64_t cgen_var_438;
5814 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_438, 1);
5815 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005816 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005817 uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
5818 stream->putBe64(cgen_var_439);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005819 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005820 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005821 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005822 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005823 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005824 mImpl->log("finish vkDestroyFramebuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005825}
5826
5827VkResult VkEncoder::vkCreateRenderPass(
5828 VkDevice device,
5829 const VkRenderPassCreateInfo* pCreateInfo,
5830 const VkAllocationCallbacks* pAllocator,
5831 VkRenderPass* pRenderPass)
5832{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005833 mImpl->log("start vkCreateRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005834 auto stream = mImpl->stream();
5835 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005836 auto resources = mImpl->resources();
5837 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005838 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005839 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005840 VkRenderPassCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005841 VkAllocationCallbacks* local_pAllocator;
5842 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005843 local_pCreateInfo = nullptr;
5844 if (pCreateInfo)
5845 {
5846 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
5847 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
5848 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005849 local_pAllocator = nullptr;
5850 if (pAllocator)
5851 {
5852 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5853 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5854 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005855 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005856 if (local_pCreateInfo)
5857 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005858 transform_tohost_VkRenderPassCreateInfo(mImpl->resources(), (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005859 }
5860 if (local_pAllocator)
5861 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005862 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005863 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005864 countingStream->rewind();
5865 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005866 uint64_t cgen_var_440;
5867 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_440, 1);
5868 countingStream->write((uint64_t*)&cgen_var_440, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005869 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005870 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005871 uint64_t cgen_var_441 = (uint64_t)(uintptr_t)local_pAllocator;
5872 countingStream->putBe64(cgen_var_441);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005873 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005874 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005875 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005876 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005877 uint64_t cgen_var_442;
5878 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_442, 1);
5879 countingStream->write((uint64_t*)&cgen_var_442, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005880 }
5881 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5882 countingStream->rewind();
5883 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
5884 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
5885 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005886 uint64_t cgen_var_443;
5887 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_443, 1);
5888 stream->write((uint64_t*)&cgen_var_443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005889 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005890 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005891 uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
5892 stream->putBe64(cgen_var_444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005893 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005894 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005895 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005896 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005897 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005898 uint64_t cgen_var_445;
5899 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_445, 1);
5900 stream->write((uint64_t*)&cgen_var_445, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005901 stream->setHandleMapping(resources->unwrapMapping());
5902 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005903 uint64_t cgen_var_446;
5904 stream->read((uint64_t*)&cgen_var_446, 8);
5905 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_446, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005906 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005907 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
5908 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005909 countingStream->clearPool();
5910 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005911 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005912 mImpl->log("finish vkCreateRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005913 return vkCreateRenderPass_VkResult_return;
5914}
5915
5916void VkEncoder::vkDestroyRenderPass(
5917 VkDevice device,
5918 VkRenderPass renderPass,
5919 const VkAllocationCallbacks* pAllocator)
5920{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005921 mImpl->log("start vkDestroyRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005922 auto stream = mImpl->stream();
5923 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005924 auto resources = mImpl->resources();
5925 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005926 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005927 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005928 VkRenderPass local_renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005929 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005930 local_device = device;
5931 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005932 local_pAllocator = nullptr;
5933 if (pAllocator)
5934 {
5935 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5936 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5937 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005938 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005939 if (local_pAllocator)
5940 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005941 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005942 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005943 countingStream->rewind();
5944 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005945 uint64_t cgen_var_447;
5946 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_447, 1);
5947 countingStream->write((uint64_t*)&cgen_var_447, 1 * 8);
5948 uint64_t cgen_var_448;
5949 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_448, 1);
5950 countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005951 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005952 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
5953 countingStream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005954 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005955 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005956 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005957 }
5958 }
5959 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5960 countingStream->rewind();
5961 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
5962 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
5963 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005964 uint64_t cgen_var_450;
5965 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_450, 1);
5966 stream->write((uint64_t*)&cgen_var_450, 1 * 8);
5967 uint64_t cgen_var_451;
5968 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_451, 1);
5969 stream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005970 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005971 uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
5972 stream->putBe64(cgen_var_452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005973 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005974 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005975 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005976 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005977 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005978 mImpl->log("finish vkDestroyRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005979}
5980
5981void VkEncoder::vkGetRenderAreaGranularity(
5982 VkDevice device,
5983 VkRenderPass renderPass,
5984 VkExtent2D* pGranularity)
5985{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005986 mImpl->log("start vkGetRenderAreaGranularity");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005987 auto stream = mImpl->stream();
5988 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005989 auto resources = mImpl->resources();
5990 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005991 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005992 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005993 VkRenderPass local_renderPass;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005994 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005995 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005996 countingStream->rewind();
5997 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005998 uint64_t cgen_var_453;
5999 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_453, 1);
6000 countingStream->write((uint64_t*)&cgen_var_453, 1 * 8);
6001 uint64_t cgen_var_454;
6002 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_454, 1);
6003 countingStream->write((uint64_t*)&cgen_var_454, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006004 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
6005 }
6006 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6007 countingStream->rewind();
6008 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
6009 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
6010 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006011 uint64_t cgen_var_455;
6012 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
6013 stream->write((uint64_t*)&cgen_var_455, 1 * 8);
6014 uint64_t cgen_var_456;
6015 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
6016 stream->write((uint64_t*)&cgen_var_456, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006017 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
6018 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
Lingfeng Yang97a06702018-12-24 17:02:43 -08006019 if (pGranularity)
6020 {
6021 transform_fromhost_VkExtent2D(mImpl->resources(), (VkExtent2D*)(pGranularity));
6022 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006023 mImpl->log("finish vkGetRenderAreaGranularity");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006024}
6025
6026VkResult VkEncoder::vkCreateCommandPool(
6027 VkDevice device,
6028 const VkCommandPoolCreateInfo* pCreateInfo,
6029 const VkAllocationCallbacks* pAllocator,
6030 VkCommandPool* pCommandPool)
6031{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006032 mImpl->log("start vkCreateCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006033 auto stream = mImpl->stream();
6034 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006035 auto resources = mImpl->resources();
6036 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006037 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006038 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006039 VkCommandPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006040 VkAllocationCallbacks* local_pAllocator;
6041 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006042 local_pCreateInfo = nullptr;
6043 if (pCreateInfo)
6044 {
6045 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
6046 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
6047 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006048 local_pAllocator = nullptr;
6049 if (pAllocator)
6050 {
6051 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6052 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6053 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006054 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006055 if (local_pCreateInfo)
6056 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006057 transform_tohost_VkCommandPoolCreateInfo(mImpl->resources(), (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006058 }
6059 if (local_pAllocator)
6060 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006061 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006062 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006063 countingStream->rewind();
6064 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006065 uint64_t cgen_var_457;
6066 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_457, 1);
6067 countingStream->write((uint64_t*)&cgen_var_457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006068 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006069 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006070 uint64_t cgen_var_458 = (uint64_t)(uintptr_t)local_pAllocator;
6071 countingStream->putBe64(cgen_var_458);
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(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006075 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006076 uint64_t cgen_var_459;
6077 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_459, 1);
6078 countingStream->write((uint64_t*)&cgen_var_459, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006079 }
6080 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6081 countingStream->rewind();
6082 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
6083 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
6084 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006085 uint64_t cgen_var_460;
6086 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_460, 1);
6087 stream->write((uint64_t*)&cgen_var_460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006088 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006089 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006090 uint64_t cgen_var_461 = (uint64_t)(uintptr_t)local_pAllocator;
6091 stream->putBe64(cgen_var_461);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006092 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006093 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006094 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006095 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006096 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006097 uint64_t cgen_var_462;
6098 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_462, 1);
6099 stream->write((uint64_t*)&cgen_var_462, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006100 stream->setHandleMapping(resources->unwrapMapping());
6101 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006102 uint64_t cgen_var_463;
6103 stream->read((uint64_t*)&cgen_var_463, 8);
6104 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_463, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006105 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006106 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
6107 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006108 countingStream->clearPool();
6109 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006110 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006111 mImpl->log("finish vkCreateCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006112 return vkCreateCommandPool_VkResult_return;
6113}
6114
6115void VkEncoder::vkDestroyCommandPool(
6116 VkDevice device,
6117 VkCommandPool commandPool,
6118 const VkAllocationCallbacks* pAllocator)
6119{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006120 mImpl->log("start vkDestroyCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006121 auto stream = mImpl->stream();
6122 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006123 auto resources = mImpl->resources();
6124 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006125 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006126 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006127 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006128 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006129 local_device = device;
6130 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006131 local_pAllocator = nullptr;
6132 if (pAllocator)
6133 {
6134 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6135 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6136 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006137 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006138 if (local_pAllocator)
6139 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006140 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006141 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006142 countingStream->rewind();
6143 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006144 uint64_t cgen_var_464;
6145 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_464, 1);
6146 countingStream->write((uint64_t*)&cgen_var_464, 1 * 8);
6147 uint64_t cgen_var_465;
6148 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_465, 1);
6149 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006150 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006151 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
6152 countingStream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006153 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006154 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006155 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006156 }
6157 }
6158 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6159 countingStream->rewind();
6160 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
6161 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
6162 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006163 uint64_t cgen_var_467;
6164 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1);
6165 stream->write((uint64_t*)&cgen_var_467, 1 * 8);
6166 uint64_t cgen_var_468;
6167 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_468, 1);
6168 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006169 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006170 uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
6171 stream->putBe64(cgen_var_469);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006172 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006173 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006174 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006175 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006176 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006177 mImpl->log("finish vkDestroyCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006178}
6179
6180VkResult VkEncoder::vkResetCommandPool(
6181 VkDevice device,
6182 VkCommandPool commandPool,
6183 VkCommandPoolResetFlags flags)
6184{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006185 mImpl->log("start vkResetCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006186 auto stream = mImpl->stream();
6187 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006188 auto resources = mImpl->resources();
6189 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006190 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006191 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006192 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006193 VkCommandPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006194 local_device = device;
6195 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006196 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006197 countingStream->rewind();
6198 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006199 uint64_t cgen_var_470;
6200 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_470, 1);
6201 countingStream->write((uint64_t*)&cgen_var_470, 1 * 8);
6202 uint64_t cgen_var_471;
6203 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_471, 1);
6204 countingStream->write((uint64_t*)&cgen_var_471, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006205 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006206 }
6207 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6208 countingStream->rewind();
6209 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
6210 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
6211 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006212 uint64_t cgen_var_472;
6213 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
6214 stream->write((uint64_t*)&cgen_var_472, 1 * 8);
6215 uint64_t cgen_var_473;
6216 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
6217 stream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006218 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006219 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
6220 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006221 countingStream->clearPool();
6222 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006223 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006224 mImpl->log("finish vkResetCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006225 return vkResetCommandPool_VkResult_return;
6226}
6227
6228VkResult VkEncoder::vkAllocateCommandBuffers(
6229 VkDevice device,
6230 const VkCommandBufferAllocateInfo* pAllocateInfo,
6231 VkCommandBuffer* pCommandBuffers)
6232{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006233 mImpl->log("start vkAllocateCommandBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006234 auto stream = mImpl->stream();
6235 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006236 auto resources = mImpl->resources();
6237 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006238 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006239 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006240 VkCommandBufferAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006241 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006242 local_pAllocateInfo = nullptr;
6243 if (pAllocateInfo)
6244 {
6245 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
6246 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
6247 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006248 if (local_pAllocateInfo)
6249 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006250 transform_tohost_VkCommandBufferAllocateInfo(mImpl->resources(), (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006251 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006252 countingStream->rewind();
6253 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006254 uint64_t cgen_var_474;
6255 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_474, 1);
6256 countingStream->write((uint64_t*)&cgen_var_474, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006257 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006258 if (pAllocateInfo->commandBufferCount)
6259 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006260 uint64_t* cgen_var_475;
6261 countingStream->alloc((void**)&cgen_var_475, pAllocateInfo->commandBufferCount * 8);
6262 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_475, pAllocateInfo->commandBufferCount);
6263 countingStream->write((uint64_t*)cgen_var_475, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006264 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006265 }
6266 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6267 countingStream->rewind();
6268 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
6269 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
6270 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006271 uint64_t cgen_var_476;
6272 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_476, 1);
6273 stream->write((uint64_t*)&cgen_var_476, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006274 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08006275 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08006276 if (pAllocateInfo->commandBufferCount)
6277 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006278 uint64_t* cgen_var_477;
6279 stream->alloc((void**)&cgen_var_477, pAllocateInfo->commandBufferCount * 8);
6280 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_477, pAllocateInfo->commandBufferCount);
6281 stream->write((uint64_t*)cgen_var_477, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006282 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006283 stream->setHandleMapping(resources->unwrapMapping());
6284 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08006285 if (pAllocateInfo->commandBufferCount)
6286 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006287 uint64_t* cgen_var_478;
6288 stream->alloc((void**)&cgen_var_478, pAllocateInfo->commandBufferCount * 8);
6289 stream->read((uint64_t*)cgen_var_478, pAllocateInfo->commandBufferCount * 8);
6290 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_478, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006291 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006292 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006293 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
6294 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006295 countingStream->clearPool();
6296 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006297 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006298 mImpl->log("finish vkAllocateCommandBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006299 return vkAllocateCommandBuffers_VkResult_return;
6300}
6301
6302void VkEncoder::vkFreeCommandBuffers(
6303 VkDevice device,
6304 VkCommandPool commandPool,
6305 uint32_t commandBufferCount,
6306 const VkCommandBuffer* pCommandBuffers)
6307{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006308 mImpl->log("start vkFreeCommandBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006309 auto stream = mImpl->stream();
6310 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006311 auto resources = mImpl->resources();
6312 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006313 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006314 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006315 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006316 uint32_t local_commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006317 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006318 local_device = device;
6319 local_commandPool = commandPool;
6320 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006321 local_pCommandBuffers = nullptr;
6322 if (pCommandBuffers)
6323 {
6324 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
6325 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006326 countingStream->rewind();
6327 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006328 uint64_t cgen_var_479;
6329 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_479, 1);
6330 countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
6331 uint64_t cgen_var_480;
6332 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_480, 1);
6333 countingStream->write((uint64_t*)&cgen_var_480, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006334 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006335 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006336 uint64_t cgen_var_481 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6337 countingStream->putBe64(cgen_var_481);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006338 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006339 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006340 if (((commandBufferCount)))
6341 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006342 uint64_t* cgen_var_482;
6343 countingStream->alloc((void**)&cgen_var_482, ((commandBufferCount)) * 8);
6344 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_482, ((commandBufferCount)));
6345 countingStream->write((uint64_t*)cgen_var_482, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006346 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006347 }
6348 }
6349 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6350 countingStream->rewind();
6351 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
6352 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
6353 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006354 uint64_t cgen_var_483;
6355 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_483, 1);
6356 stream->write((uint64_t*)&cgen_var_483, 1 * 8);
6357 uint64_t cgen_var_484;
6358 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_484, 1);
6359 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006360 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006361 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006362 uint64_t cgen_var_485 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6363 stream->putBe64(cgen_var_485);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006364 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006365 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006366 if (((commandBufferCount)))
6367 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006368 uint64_t* cgen_var_486;
6369 stream->alloc((void**)&cgen_var_486, ((commandBufferCount)) * 8);
6370 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_486, ((commandBufferCount)));
6371 stream->write((uint64_t*)cgen_var_486, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006372 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006373 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006374 if (pCommandBuffers)
6375 {
6376 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
6377 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006378 mImpl->log("finish vkFreeCommandBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006379}
6380
6381VkResult VkEncoder::vkBeginCommandBuffer(
6382 VkCommandBuffer commandBuffer,
6383 const VkCommandBufferBeginInfo* pBeginInfo)
6384{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006385 mImpl->log("start vkBeginCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006386 auto stream = mImpl->stream();
6387 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006388 auto resources = mImpl->resources();
6389 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006390 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006391 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006392 VkCommandBufferBeginInfo* local_pBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006393 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006394 local_pBeginInfo = nullptr;
6395 if (pBeginInfo)
6396 {
6397 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
6398 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6399 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006400 if (local_pBeginInfo)
6401 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006402 transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006403 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006404 countingStream->rewind();
6405 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006406 uint64_t cgen_var_487;
6407 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_487, 1);
6408 countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006409 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006410 }
6411 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6412 countingStream->rewind();
6413 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
6414 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
6415 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006416 uint64_t cgen_var_488;
6417 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_488, 1);
6418 stream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006419 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006420 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
6421 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006422 countingStream->clearPool();
6423 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006424 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006425 mImpl->log("finish vkBeginCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006426 return vkBeginCommandBuffer_VkResult_return;
6427}
6428
6429VkResult VkEncoder::vkEndCommandBuffer(
6430 VkCommandBuffer commandBuffer)
6431{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006432 mImpl->log("start vkEndCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006433 auto stream = mImpl->stream();
6434 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006435 auto resources = mImpl->resources();
6436 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006437 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006438 VkCommandBuffer local_commandBuffer;
6439 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006440 countingStream->rewind();
6441 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006442 uint64_t cgen_var_489;
6443 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_489, 1);
6444 countingStream->write((uint64_t*)&cgen_var_489, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006445 }
6446 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6447 countingStream->rewind();
6448 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
6449 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
6450 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006451 uint64_t cgen_var_490;
6452 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_490, 1);
6453 stream->write((uint64_t*)&cgen_var_490, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006454 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
6455 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006456 countingStream->clearPool();
6457 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006458 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006459 mImpl->log("finish vkEndCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006460 return vkEndCommandBuffer_VkResult_return;
6461}
6462
6463VkResult VkEncoder::vkResetCommandBuffer(
6464 VkCommandBuffer commandBuffer,
6465 VkCommandBufferResetFlags flags)
6466{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006467 mImpl->log("start vkResetCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006468 auto stream = mImpl->stream();
6469 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006470 auto resources = mImpl->resources();
6471 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006472 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006473 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006474 VkCommandBufferResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006475 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006476 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006477 countingStream->rewind();
6478 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006479 uint64_t cgen_var_491;
6480 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_491, 1);
6481 countingStream->write((uint64_t*)&cgen_var_491, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006482 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006483 }
6484 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6485 countingStream->rewind();
6486 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
6487 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
6488 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006489 uint64_t cgen_var_492;
6490 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_492, 1);
6491 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006492 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006493 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
6494 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006495 countingStream->clearPool();
6496 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006497 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006498 mImpl->log("finish vkResetCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006499 return vkResetCommandBuffer_VkResult_return;
6500}
6501
6502void VkEncoder::vkCmdBindPipeline(
6503 VkCommandBuffer commandBuffer,
6504 VkPipelineBindPoint pipelineBindPoint,
6505 VkPipeline pipeline)
6506{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006507 mImpl->log("start vkCmdBindPipeline");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006508 auto stream = mImpl->stream();
6509 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006510 auto resources = mImpl->resources();
6511 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006512 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006513 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006514 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006515 VkPipeline local_pipeline;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006516 local_commandBuffer = commandBuffer;
6517 local_pipelineBindPoint = pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006518 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006519 countingStream->rewind();
6520 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006521 uint64_t cgen_var_493;
6522 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_493, 1);
6523 countingStream->write((uint64_t*)&cgen_var_493, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006524 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006525 uint64_t cgen_var_494;
6526 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_494, 1);
6527 countingStream->write((uint64_t*)&cgen_var_494, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006528 }
6529 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6530 countingStream->rewind();
6531 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
6532 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
6533 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006534 uint64_t cgen_var_495;
6535 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
6536 stream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006537 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006538 uint64_t cgen_var_496;
6539 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_496, 1);
6540 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006541 mImpl->log("finish vkCmdBindPipeline");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006542}
6543
6544void VkEncoder::vkCmdSetViewport(
6545 VkCommandBuffer commandBuffer,
6546 uint32_t firstViewport,
6547 uint32_t viewportCount,
6548 const VkViewport* pViewports)
6549{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006550 mImpl->log("start vkCmdSetViewport");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006551 auto stream = mImpl->stream();
6552 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006553 auto resources = mImpl->resources();
6554 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006555 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006556 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006557 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006558 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006559 VkViewport* local_pViewports;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006560 local_commandBuffer = commandBuffer;
6561 local_firstViewport = firstViewport;
6562 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006563 local_pViewports = nullptr;
6564 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006565 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006566 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006567 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6568 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006569 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
6570 }
6571 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006572 if (local_pViewports)
6573 {
6574 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6575 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006576 transform_tohost_VkViewport(mImpl->resources(), (VkViewport*)(local_pViewports + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006577 }
6578 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006579 countingStream->rewind();
6580 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006581 uint64_t cgen_var_497;
6582 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
6583 countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006584 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6585 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
6586 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6587 {
6588 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006589 }
6590 }
6591 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6592 countingStream->rewind();
6593 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
6594 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
6595 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006596 uint64_t cgen_var_498;
6597 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
6598 stream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006599 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6600 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006601 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6602 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006603 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006604 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006605 mImpl->log("finish vkCmdSetViewport");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006606}
6607
6608void VkEncoder::vkCmdSetScissor(
6609 VkCommandBuffer commandBuffer,
6610 uint32_t firstScissor,
6611 uint32_t scissorCount,
6612 const VkRect2D* pScissors)
6613{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006614 mImpl->log("start vkCmdSetScissor");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006615 auto stream = mImpl->stream();
6616 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006617 auto resources = mImpl->resources();
6618 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006619 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006620 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006621 uint32_t local_firstScissor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006622 uint32_t local_scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006623 VkRect2D* local_pScissors;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006624 local_commandBuffer = commandBuffer;
6625 local_firstScissor = firstScissor;
6626 local_scissorCount = scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006627 local_pScissors = nullptr;
6628 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006629 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006630 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006631 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6632 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006633 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
6634 }
6635 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006636 if (local_pScissors)
6637 {
6638 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6639 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006640 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pScissors + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006641 }
6642 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006643 countingStream->rewind();
6644 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006645 uint64_t cgen_var_499;
6646 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6647 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006648 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6649 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
6650 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6651 {
6652 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006653 }
6654 }
6655 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6656 countingStream->rewind();
6657 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
6658 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
6659 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006660 uint64_t cgen_var_500;
6661 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6662 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006663 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6664 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006665 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6666 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006667 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006668 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006669 mImpl->log("finish vkCmdSetScissor");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006670}
6671
6672void VkEncoder::vkCmdSetLineWidth(
6673 VkCommandBuffer commandBuffer,
6674 float lineWidth)
6675{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006676 mImpl->log("start vkCmdSetLineWidth");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006677 auto stream = mImpl->stream();
6678 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006679 auto resources = mImpl->resources();
6680 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006681 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006682 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006683 float local_lineWidth;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006684 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006685 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006686 countingStream->rewind();
6687 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006688 uint64_t cgen_var_501;
6689 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6690 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006691 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006692 }
6693 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6694 countingStream->rewind();
6695 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
6696 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
6697 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006698 uint64_t cgen_var_502;
6699 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1);
6700 stream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006701 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006702 mImpl->log("finish vkCmdSetLineWidth");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006703}
6704
6705void VkEncoder::vkCmdSetDepthBias(
6706 VkCommandBuffer commandBuffer,
6707 float depthBiasConstantFactor,
6708 float depthBiasClamp,
6709 float depthBiasSlopeFactor)
6710{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006711 mImpl->log("start vkCmdSetDepthBias");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006712 auto stream = mImpl->stream();
6713 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006714 auto resources = mImpl->resources();
6715 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006716 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006717 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006718 float local_depthBiasConstantFactor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006719 float local_depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006720 float local_depthBiasSlopeFactor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006721 local_commandBuffer = commandBuffer;
6722 local_depthBiasConstantFactor = depthBiasConstantFactor;
6723 local_depthBiasClamp = depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006724 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006725 countingStream->rewind();
6726 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006727 uint64_t cgen_var_503;
6728 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6729 countingStream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006730 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6731 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
6732 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006733 }
6734 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6735 countingStream->rewind();
6736 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
6737 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
6738 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006739 uint64_t cgen_var_504;
6740 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1);
6741 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006742 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6743 stream->write((float*)&local_depthBiasClamp, sizeof(float));
6744 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006745 mImpl->log("finish vkCmdSetDepthBias");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006746}
6747
6748void VkEncoder::vkCmdSetBlendConstants(
6749 VkCommandBuffer commandBuffer,
6750 const float blendConstants)
6751{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006752 mImpl->log("start vkCmdSetBlendConstants");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006753 auto stream = mImpl->stream();
6754 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006755 auto resources = mImpl->resources();
6756 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006757 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006758 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006759 float local_blendConstants[4];
Lingfeng Yang9666b852018-11-13 23:09:59 -08006760 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006761 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006762 countingStream->rewind();
6763 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006764 uint64_t cgen_var_505;
6765 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6766 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006767 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006768 }
6769 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6770 countingStream->rewind();
6771 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
6772 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
6773 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006774 uint64_t cgen_var_506;
6775 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6776 stream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006777 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006778 mImpl->log("finish vkCmdSetBlendConstants");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006779}
6780
6781void VkEncoder::vkCmdSetDepthBounds(
6782 VkCommandBuffer commandBuffer,
6783 float minDepthBounds,
6784 float maxDepthBounds)
6785{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006786 mImpl->log("start vkCmdSetDepthBounds");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006787 auto stream = mImpl->stream();
6788 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006789 auto resources = mImpl->resources();
6790 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006791 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006792 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006793 float local_minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006794 float local_maxDepthBounds;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006795 local_commandBuffer = commandBuffer;
6796 local_minDepthBounds = minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006797 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006798 countingStream->rewind();
6799 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006800 uint64_t cgen_var_507;
6801 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6802 countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006803 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
6804 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006805 }
6806 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6807 countingStream->rewind();
6808 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
6809 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
6810 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006811 uint64_t cgen_var_508;
6812 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
6813 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006814 stream->write((float*)&local_minDepthBounds, sizeof(float));
6815 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006816 mImpl->log("finish vkCmdSetDepthBounds");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006817}
6818
6819void VkEncoder::vkCmdSetStencilCompareMask(
6820 VkCommandBuffer commandBuffer,
6821 VkStencilFaceFlags faceMask,
6822 uint32_t compareMask)
6823{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006824 mImpl->log("start vkCmdSetStencilCompareMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006825 auto stream = mImpl->stream();
6826 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006827 auto resources = mImpl->resources();
6828 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006829 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006830 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006831 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006832 uint32_t local_compareMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006833 local_commandBuffer = commandBuffer;
6834 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006835 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006836 countingStream->rewind();
6837 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006838 uint64_t cgen_var_509;
6839 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6840 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006841 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6842 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006843 }
6844 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6845 countingStream->rewind();
6846 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
6847 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
6848 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006849 uint64_t cgen_var_510;
6850 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
6851 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006852 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6853 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006854 mImpl->log("finish vkCmdSetStencilCompareMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006855}
6856
6857void VkEncoder::vkCmdSetStencilWriteMask(
6858 VkCommandBuffer commandBuffer,
6859 VkStencilFaceFlags faceMask,
6860 uint32_t writeMask)
6861{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006862 mImpl->log("start vkCmdSetStencilWriteMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006863 auto stream = mImpl->stream();
6864 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006865 auto resources = mImpl->resources();
6866 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006867 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006868 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006869 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006870 uint32_t local_writeMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006871 local_commandBuffer = commandBuffer;
6872 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006873 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006874 countingStream->rewind();
6875 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006876 uint64_t cgen_var_511;
6877 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
6878 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006879 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6880 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006881 }
6882 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6883 countingStream->rewind();
6884 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
6885 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
6886 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006887 uint64_t cgen_var_512;
6888 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
6889 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006890 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6891 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006892 mImpl->log("finish vkCmdSetStencilWriteMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006893}
6894
6895void VkEncoder::vkCmdSetStencilReference(
6896 VkCommandBuffer commandBuffer,
6897 VkStencilFaceFlags faceMask,
6898 uint32_t reference)
6899{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006900 mImpl->log("start vkCmdSetStencilReference");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006901 auto stream = mImpl->stream();
6902 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006903 auto resources = mImpl->resources();
6904 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006905 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006906 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006907 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006908 uint32_t local_reference;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006909 local_commandBuffer = commandBuffer;
6910 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006911 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006912 countingStream->rewind();
6913 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006914 uint64_t cgen_var_513;
6915 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
6916 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006917 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6918 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006919 }
6920 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6921 countingStream->rewind();
6922 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
6923 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
6924 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006925 uint64_t cgen_var_514;
6926 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
6927 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006928 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6929 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006930 mImpl->log("finish vkCmdSetStencilReference");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006931}
6932
6933void VkEncoder::vkCmdBindDescriptorSets(
6934 VkCommandBuffer commandBuffer,
6935 VkPipelineBindPoint pipelineBindPoint,
6936 VkPipelineLayout layout,
6937 uint32_t firstSet,
6938 uint32_t descriptorSetCount,
6939 const VkDescriptorSet* pDescriptorSets,
6940 uint32_t dynamicOffsetCount,
6941 const uint32_t* pDynamicOffsets)
6942{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006943 mImpl->log("start vkCmdBindDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006944 auto stream = mImpl->stream();
6945 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006946 auto resources = mImpl->resources();
6947 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006948 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006949 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006950 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006951 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006952 uint32_t local_firstSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006953 uint32_t local_descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006954 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006955 uint32_t local_dynamicOffsetCount;
6956 uint32_t* local_pDynamicOffsets;
6957 local_commandBuffer = commandBuffer;
6958 local_pipelineBindPoint = pipelineBindPoint;
6959 local_layout = layout;
6960 local_firstSet = firstSet;
6961 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006962 local_pDescriptorSets = nullptr;
6963 if (pDescriptorSets)
6964 {
6965 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
6966 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006967 local_dynamicOffsetCount = dynamicOffsetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006968 local_pDynamicOffsets = nullptr;
6969 if (pDynamicOffsets)
6970 {
6971 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
6972 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006973 countingStream->rewind();
6974 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006975 uint64_t cgen_var_515;
6976 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
6977 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006978 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006979 uint64_t cgen_var_516;
6980 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_516, 1);
6981 countingStream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006982 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6983 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006984 if (((descriptorSetCount)))
6985 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006986 uint64_t* cgen_var_517;
6987 countingStream->alloc((void**)&cgen_var_517, ((descriptorSetCount)) * 8);
6988 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_517, ((descriptorSetCount)));
6989 countingStream->write((uint64_t*)cgen_var_517, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006990 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006991 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6992 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006993 }
6994 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6995 countingStream->rewind();
6996 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
6997 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
6998 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006999 uint64_t cgen_var_518;
7000 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
7001 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007002 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007003 uint64_t cgen_var_519;
7004 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_519, 1);
7005 stream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007006 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
7007 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007008 if (((descriptorSetCount)))
7009 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007010 uint64_t* cgen_var_520;
7011 stream->alloc((void**)&cgen_var_520, ((descriptorSetCount)) * 8);
7012 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_520, ((descriptorSetCount)));
7013 stream->write((uint64_t*)cgen_var_520, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007014 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007015 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
7016 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007017 mImpl->log("finish vkCmdBindDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007018}
7019
7020void VkEncoder::vkCmdBindIndexBuffer(
7021 VkCommandBuffer commandBuffer,
7022 VkBuffer buffer,
7023 VkDeviceSize offset,
7024 VkIndexType indexType)
7025{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007026 mImpl->log("start vkCmdBindIndexBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007027 auto stream = mImpl->stream();
7028 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007029 auto resources = mImpl->resources();
7030 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007031 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007032 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007033 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007034 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007035 VkIndexType local_indexType;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007036 local_commandBuffer = commandBuffer;
7037 local_buffer = buffer;
7038 local_offset = offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007039 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007040 countingStream->rewind();
7041 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007042 uint64_t cgen_var_521;
7043 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
7044 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
7045 uint64_t cgen_var_522;
7046 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_522, 1);
7047 countingStream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007048 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7049 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007050 }
7051 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7052 countingStream->rewind();
7053 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
7054 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
7055 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007056 uint64_t cgen_var_523;
7057 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
7058 stream->write((uint64_t*)&cgen_var_523, 1 * 8);
7059 uint64_t cgen_var_524;
7060 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_524, 1);
7061 stream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007062 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7063 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007064 mImpl->log("finish vkCmdBindIndexBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007065}
7066
7067void VkEncoder::vkCmdBindVertexBuffers(
7068 VkCommandBuffer commandBuffer,
7069 uint32_t firstBinding,
7070 uint32_t bindingCount,
7071 const VkBuffer* pBuffers,
7072 const VkDeviceSize* pOffsets)
7073{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007074 mImpl->log("start vkCmdBindVertexBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007075 auto stream = mImpl->stream();
7076 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007077 auto resources = mImpl->resources();
7078 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007079 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007080 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007081 uint32_t local_firstBinding;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007082 uint32_t local_bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007083 VkBuffer* local_pBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007084 VkDeviceSize* local_pOffsets;
7085 local_commandBuffer = commandBuffer;
7086 local_firstBinding = firstBinding;
7087 local_bindingCount = bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007088 local_pBuffers = nullptr;
7089 if (pBuffers)
7090 {
7091 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
7092 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007093 local_pOffsets = nullptr;
7094 if (pOffsets)
7095 {
7096 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
7097 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007098 countingStream->rewind();
7099 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007100 uint64_t cgen_var_525;
7101 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_525, 1);
7102 countingStream->write((uint64_t*)&cgen_var_525, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007103 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7104 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007105 if (((bindingCount)))
7106 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007107 uint64_t* cgen_var_526;
7108 countingStream->alloc((void**)&cgen_var_526, ((bindingCount)) * 8);
7109 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_526, ((bindingCount)));
7110 countingStream->write((uint64_t*)cgen_var_526, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007111 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007112 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007113 }
7114 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7115 countingStream->rewind();
7116 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
7117 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
7118 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007119 uint64_t cgen_var_527;
7120 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1);
7121 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007122 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7123 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007124 if (((bindingCount)))
7125 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007126 uint64_t* cgen_var_528;
7127 stream->alloc((void**)&cgen_var_528, ((bindingCount)) * 8);
7128 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_528, ((bindingCount)));
7129 stream->write((uint64_t*)cgen_var_528, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007130 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007131 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007132 mImpl->log("finish vkCmdBindVertexBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007133}
7134
7135void VkEncoder::vkCmdDraw(
7136 VkCommandBuffer commandBuffer,
7137 uint32_t vertexCount,
7138 uint32_t instanceCount,
7139 uint32_t firstVertex,
7140 uint32_t firstInstance)
7141{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007142 mImpl->log("start vkCmdDraw");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007143 auto stream = mImpl->stream();
7144 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007145 auto resources = mImpl->resources();
7146 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007147 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007148 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007149 uint32_t local_vertexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007150 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007151 uint32_t local_firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007152 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007153 local_commandBuffer = commandBuffer;
7154 local_vertexCount = vertexCount;
7155 local_instanceCount = instanceCount;
7156 local_firstVertex = firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007157 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007158 countingStream->rewind();
7159 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007160 uint64_t cgen_var_529;
7161 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
7162 countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007163 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7164 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7165 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7166 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007167 }
7168 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7169 countingStream->rewind();
7170 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
7171 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
7172 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007173 uint64_t cgen_var_530;
7174 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1);
7175 stream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007176 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7177 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7178 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7179 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007180 mImpl->log("finish vkCmdDraw");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007181}
7182
7183void VkEncoder::vkCmdDrawIndexed(
7184 VkCommandBuffer commandBuffer,
7185 uint32_t indexCount,
7186 uint32_t instanceCount,
7187 uint32_t firstIndex,
7188 int32_t vertexOffset,
7189 uint32_t firstInstance)
7190{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007191 mImpl->log("start vkCmdDrawIndexed");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007192 auto stream = mImpl->stream();
7193 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007194 auto resources = mImpl->resources();
7195 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007196 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007197 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007198 uint32_t local_indexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007199 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007200 uint32_t local_firstIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007201 int32_t local_vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007202 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007203 local_commandBuffer = commandBuffer;
7204 local_indexCount = indexCount;
7205 local_instanceCount = instanceCount;
7206 local_firstIndex = firstIndex;
7207 local_vertexOffset = vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007208 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007209 countingStream->rewind();
7210 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007211 uint64_t cgen_var_531;
7212 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
7213 countingStream->write((uint64_t*)&cgen_var_531, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007214 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7215 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7216 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7217 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7218 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007219 }
7220 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7221 countingStream->rewind();
7222 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
7223 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
7224 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007225 uint64_t cgen_var_532;
7226 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_532, 1);
7227 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007228 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7229 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7230 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7231 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7232 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007233 mImpl->log("finish vkCmdDrawIndexed");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007234}
7235
7236void VkEncoder::vkCmdDrawIndirect(
7237 VkCommandBuffer commandBuffer,
7238 VkBuffer buffer,
7239 VkDeviceSize offset,
7240 uint32_t drawCount,
7241 uint32_t stride)
7242{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007243 mImpl->log("start vkCmdDrawIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007244 auto stream = mImpl->stream();
7245 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007246 auto resources = mImpl->resources();
7247 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007248 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007249 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007250 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007251 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007252 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007253 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007254 local_commandBuffer = commandBuffer;
7255 local_buffer = buffer;
7256 local_offset = offset;
7257 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007258 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007259 countingStream->rewind();
7260 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007261 uint64_t cgen_var_533;
7262 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
7263 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
7264 uint64_t cgen_var_534;
7265 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_534, 1);
7266 countingStream->write((uint64_t*)&cgen_var_534, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007267 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7268 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7269 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007270 }
7271 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7272 countingStream->rewind();
7273 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
7274 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
7275 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007276 uint64_t cgen_var_535;
7277 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
7278 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
7279 uint64_t cgen_var_536;
7280 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_536, 1);
7281 stream->write((uint64_t*)&cgen_var_536, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007282 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7283 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7284 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007285 mImpl->log("finish vkCmdDrawIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007286}
7287
7288void VkEncoder::vkCmdDrawIndexedIndirect(
7289 VkCommandBuffer commandBuffer,
7290 VkBuffer buffer,
7291 VkDeviceSize offset,
7292 uint32_t drawCount,
7293 uint32_t stride)
7294{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007295 mImpl->log("start vkCmdDrawIndexedIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007296 auto stream = mImpl->stream();
7297 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007298 auto resources = mImpl->resources();
7299 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007300 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007301 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007302 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007303 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007304 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007305 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007306 local_commandBuffer = commandBuffer;
7307 local_buffer = buffer;
7308 local_offset = offset;
7309 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007310 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007311 countingStream->rewind();
7312 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007313 uint64_t cgen_var_537;
7314 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
7315 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
7316 uint64_t cgen_var_538;
7317 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_538, 1);
7318 countingStream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007319 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7320 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7321 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007322 }
7323 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7324 countingStream->rewind();
7325 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
7326 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
7327 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007328 uint64_t cgen_var_539;
7329 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
7330 stream->write((uint64_t*)&cgen_var_539, 1 * 8);
7331 uint64_t cgen_var_540;
7332 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_540, 1);
7333 stream->write((uint64_t*)&cgen_var_540, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007334 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7335 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7336 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007337 mImpl->log("finish vkCmdDrawIndexedIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007338}
7339
7340void VkEncoder::vkCmdDispatch(
7341 VkCommandBuffer commandBuffer,
7342 uint32_t groupCountX,
7343 uint32_t groupCountY,
7344 uint32_t groupCountZ)
7345{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007346 mImpl->log("start vkCmdDispatch");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007347 auto stream = mImpl->stream();
7348 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007349 auto resources = mImpl->resources();
7350 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007351 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007352 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007353 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007354 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007355 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007356 local_commandBuffer = commandBuffer;
7357 local_groupCountX = groupCountX;
7358 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007359 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007360 countingStream->rewind();
7361 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007362 uint64_t cgen_var_541;
7363 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
7364 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007365 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7366 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7367 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007368 }
7369 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7370 countingStream->rewind();
7371 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
7372 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
7373 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007374 uint64_t cgen_var_542;
7375 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1);
7376 stream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007377 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7378 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7379 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007380 mImpl->log("finish vkCmdDispatch");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007381}
7382
7383void VkEncoder::vkCmdDispatchIndirect(
7384 VkCommandBuffer commandBuffer,
7385 VkBuffer buffer,
7386 VkDeviceSize offset)
7387{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007388 mImpl->log("start vkCmdDispatchIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007389 auto stream = mImpl->stream();
7390 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007391 auto resources = mImpl->resources();
7392 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007393 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007394 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007395 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007396 VkDeviceSize local_offset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007397 local_commandBuffer = commandBuffer;
7398 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007399 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007400 countingStream->rewind();
7401 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007402 uint64_t cgen_var_543;
7403 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
7404 countingStream->write((uint64_t*)&cgen_var_543, 1 * 8);
7405 uint64_t cgen_var_544;
7406 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
7407 countingStream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007408 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007409 }
7410 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7411 countingStream->rewind();
7412 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
7413 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
7414 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007415 uint64_t cgen_var_545;
7416 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
7417 stream->write((uint64_t*)&cgen_var_545, 1 * 8);
7418 uint64_t cgen_var_546;
7419 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
7420 stream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007421 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007422 mImpl->log("finish vkCmdDispatchIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007423}
7424
7425void VkEncoder::vkCmdCopyBuffer(
7426 VkCommandBuffer commandBuffer,
7427 VkBuffer srcBuffer,
7428 VkBuffer dstBuffer,
7429 uint32_t regionCount,
7430 const VkBufferCopy* pRegions)
7431{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007432 mImpl->log("start vkCmdCopyBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007433 auto stream = mImpl->stream();
7434 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007435 auto resources = mImpl->resources();
7436 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007437 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007438 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007439 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007440 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007441 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007442 VkBufferCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007443 local_commandBuffer = commandBuffer;
7444 local_srcBuffer = srcBuffer;
7445 local_dstBuffer = dstBuffer;
7446 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007447 local_pRegions = nullptr;
7448 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007449 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007450 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007451 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7452 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007453 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
7454 }
7455 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007456 if (local_pRegions)
7457 {
7458 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7459 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007460 transform_tohost_VkBufferCopy(mImpl->resources(), (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007461 }
7462 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007463 countingStream->rewind();
7464 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007465 uint64_t cgen_var_547;
7466 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
7467 countingStream->write((uint64_t*)&cgen_var_547, 1 * 8);
7468 uint64_t cgen_var_548;
7469 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_548, 1);
7470 countingStream->write((uint64_t*)&cgen_var_548, 1 * 8);
7471 uint64_t cgen_var_549;
7472 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_549, 1);
7473 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007474 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7475 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7476 {
7477 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007478 }
7479 }
7480 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7481 countingStream->rewind();
7482 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
7483 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
7484 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007485 uint64_t cgen_var_550;
7486 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
7487 stream->write((uint64_t*)&cgen_var_550, 1 * 8);
7488 uint64_t cgen_var_551;
7489 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_551, 1);
7490 stream->write((uint64_t*)&cgen_var_551, 1 * 8);
7491 uint64_t cgen_var_552;
7492 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_552, 1);
7493 stream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007494 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007495 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7496 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007497 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007498 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007499 mImpl->log("finish vkCmdCopyBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007500}
7501
7502void VkEncoder::vkCmdCopyImage(
7503 VkCommandBuffer commandBuffer,
7504 VkImage srcImage,
7505 VkImageLayout srcImageLayout,
7506 VkImage dstImage,
7507 VkImageLayout dstImageLayout,
7508 uint32_t regionCount,
7509 const VkImageCopy* pRegions)
7510{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007511 mImpl->log("start vkCmdCopyImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007512 auto stream = mImpl->stream();
7513 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007514 auto resources = mImpl->resources();
7515 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007516 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007517 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007518 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007519 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007520 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007521 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007522 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007523 VkImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007524 local_commandBuffer = commandBuffer;
7525 local_srcImage = srcImage;
7526 local_srcImageLayout = srcImageLayout;
7527 local_dstImage = dstImage;
7528 local_dstImageLayout = dstImageLayout;
7529 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007530 local_pRegions = nullptr;
7531 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007532 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007533 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007534 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7535 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007536 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
7537 }
7538 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007539 if (local_pRegions)
7540 {
7541 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7542 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007543 transform_tohost_VkImageCopy(mImpl->resources(), (VkImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007544 }
7545 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007546 countingStream->rewind();
7547 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007548 uint64_t cgen_var_553;
7549 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
7550 countingStream->write((uint64_t*)&cgen_var_553, 1 * 8);
7551 uint64_t cgen_var_554;
7552 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_554, 1);
7553 countingStream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007554 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007555 uint64_t cgen_var_555;
7556 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_555, 1);
7557 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007558 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7559 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7560 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7561 {
7562 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007563 }
7564 }
7565 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7566 countingStream->rewind();
7567 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
7568 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
7569 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007570 uint64_t cgen_var_556;
7571 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_556, 1);
7572 stream->write((uint64_t*)&cgen_var_556, 1 * 8);
7573 uint64_t cgen_var_557;
7574 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_557, 1);
7575 stream->write((uint64_t*)&cgen_var_557, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007576 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007577 uint64_t cgen_var_558;
7578 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_558, 1);
7579 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007580 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7581 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007582 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7583 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007584 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007585 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007586 mImpl->log("finish vkCmdCopyImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007587}
7588
7589void VkEncoder::vkCmdBlitImage(
7590 VkCommandBuffer commandBuffer,
7591 VkImage srcImage,
7592 VkImageLayout srcImageLayout,
7593 VkImage dstImage,
7594 VkImageLayout dstImageLayout,
7595 uint32_t regionCount,
7596 const VkImageBlit* pRegions,
7597 VkFilter filter)
7598{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007599 mImpl->log("start vkCmdBlitImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007600 auto stream = mImpl->stream();
7601 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007602 auto resources = mImpl->resources();
7603 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007604 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007605 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007606 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007607 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007608 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007609 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007610 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007611 VkImageBlit* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007612 VkFilter local_filter;
7613 local_commandBuffer = commandBuffer;
7614 local_srcImage = srcImage;
7615 local_srcImageLayout = srcImageLayout;
7616 local_dstImage = dstImage;
7617 local_dstImageLayout = dstImageLayout;
7618 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007619 local_pRegions = nullptr;
7620 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007621 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007622 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007623 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7624 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007625 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007626 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007627 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007628 local_filter = filter;
Lingfeng Yang62b23322018-12-24 12:45:47 -08007629 if (local_pRegions)
7630 {
7631 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7632 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007633 transform_tohost_VkImageBlit(mImpl->resources(), (VkImageBlit*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007634 }
7635 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007636 countingStream->rewind();
7637 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007638 uint64_t cgen_var_559;
7639 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_559, 1);
7640 countingStream->write((uint64_t*)&cgen_var_559, 1 * 8);
7641 uint64_t cgen_var_560;
7642 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_560, 1);
7643 countingStream->write((uint64_t*)&cgen_var_560, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007644 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007645 uint64_t cgen_var_561;
7646 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_561, 1);
7647 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007648 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7649 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7650 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7651 {
7652 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
7653 }
7654 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007655 }
7656 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7657 countingStream->rewind();
7658 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
7659 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
7660 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007661 uint64_t cgen_var_562;
7662 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_562, 1);
7663 stream->write((uint64_t*)&cgen_var_562, 1 * 8);
7664 uint64_t cgen_var_563;
7665 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_563, 1);
7666 stream->write((uint64_t*)&cgen_var_563, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007667 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007668 uint64_t cgen_var_564;
7669 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_564, 1);
7670 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007671 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7672 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007673 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7674 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007675 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007676 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007677 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007678 mImpl->log("finish vkCmdBlitImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007679}
7680
7681void VkEncoder::vkCmdCopyBufferToImage(
7682 VkCommandBuffer commandBuffer,
7683 VkBuffer srcBuffer,
7684 VkImage dstImage,
7685 VkImageLayout dstImageLayout,
7686 uint32_t regionCount,
7687 const VkBufferImageCopy* pRegions)
7688{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007689 mImpl->log("start vkCmdCopyBufferToImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007690 auto stream = mImpl->stream();
7691 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007692 auto resources = mImpl->resources();
7693 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007694 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007695 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007696 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007697 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007698 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007699 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007700 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007701 local_commandBuffer = commandBuffer;
7702 local_srcBuffer = srcBuffer;
7703 local_dstImage = dstImage;
7704 local_dstImageLayout = dstImageLayout;
7705 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007706 local_pRegions = nullptr;
7707 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007708 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007709 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007710 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7711 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007712 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7713 }
7714 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007715 if (local_pRegions)
7716 {
7717 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7718 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007719 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007720 }
7721 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007722 countingStream->rewind();
7723 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007724 uint64_t cgen_var_565;
7725 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_565, 1);
7726 countingStream->write((uint64_t*)&cgen_var_565, 1 * 8);
7727 uint64_t cgen_var_566;
7728 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_566, 1);
7729 countingStream->write((uint64_t*)&cgen_var_566, 1 * 8);
7730 uint64_t cgen_var_567;
7731 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_567, 1);
7732 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007733 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7734 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7735 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7736 {
7737 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007738 }
7739 }
7740 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7741 countingStream->rewind();
7742 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
7743 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
7744 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007745 uint64_t cgen_var_568;
7746 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_568, 1);
7747 stream->write((uint64_t*)&cgen_var_568, 1 * 8);
7748 uint64_t cgen_var_569;
7749 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_569, 1);
7750 stream->write((uint64_t*)&cgen_var_569, 1 * 8);
7751 uint64_t cgen_var_570;
7752 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_570, 1);
7753 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007754 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7755 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007756 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7757 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007758 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007759 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007760 mImpl->log("finish vkCmdCopyBufferToImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007761}
7762
7763void VkEncoder::vkCmdCopyImageToBuffer(
7764 VkCommandBuffer commandBuffer,
7765 VkImage srcImage,
7766 VkImageLayout srcImageLayout,
7767 VkBuffer dstBuffer,
7768 uint32_t regionCount,
7769 const VkBufferImageCopy* pRegions)
7770{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007771 mImpl->log("start vkCmdCopyImageToBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007772 auto stream = mImpl->stream();
7773 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007774 auto resources = mImpl->resources();
7775 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007776 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007777 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007778 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007779 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007780 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007781 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007782 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007783 local_commandBuffer = commandBuffer;
7784 local_srcImage = srcImage;
7785 local_srcImageLayout = srcImageLayout;
7786 local_dstBuffer = dstBuffer;
7787 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007788 local_pRegions = nullptr;
7789 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007790 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007791 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007792 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7793 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007794 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7795 }
7796 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007797 if (local_pRegions)
7798 {
7799 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7800 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007801 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007802 }
7803 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007804 countingStream->rewind();
7805 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007806 uint64_t cgen_var_571;
7807 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_571, 1);
7808 countingStream->write((uint64_t*)&cgen_var_571, 1 * 8);
7809 uint64_t cgen_var_572;
7810 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_572, 1);
7811 countingStream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007812 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007813 uint64_t cgen_var_573;
7814 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_573, 1);
7815 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007816 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7817 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7818 {
7819 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007820 }
7821 }
7822 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7823 countingStream->rewind();
7824 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
7825 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
7826 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007827 uint64_t cgen_var_574;
7828 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1);
7829 stream->write((uint64_t*)&cgen_var_574, 1 * 8);
7830 uint64_t cgen_var_575;
7831 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_575, 1);
7832 stream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007833 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007834 uint64_t cgen_var_576;
7835 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_576, 1);
7836 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007837 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007838 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7839 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007840 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007841 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007842 mImpl->log("finish vkCmdCopyImageToBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007843}
7844
7845void VkEncoder::vkCmdUpdateBuffer(
7846 VkCommandBuffer commandBuffer,
7847 VkBuffer dstBuffer,
7848 VkDeviceSize dstOffset,
7849 VkDeviceSize dataSize,
7850 const void* pData)
7851{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007852 mImpl->log("start vkCmdUpdateBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007853 auto stream = mImpl->stream();
7854 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007855 auto resources = mImpl->resources();
7856 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007857 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007858 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007859 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007860 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007861 VkDeviceSize local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007862 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007863 local_commandBuffer = commandBuffer;
7864 local_dstBuffer = dstBuffer;
7865 local_dstOffset = dstOffset;
7866 local_dataSize = dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007867 local_pData = nullptr;
7868 if (pData)
7869 {
7870 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
7871 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007872 countingStream->rewind();
7873 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007874 uint64_t cgen_var_577;
7875 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_577, 1);
7876 countingStream->write((uint64_t*)&cgen_var_577, 1 * 8);
7877 uint64_t cgen_var_578;
7878 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_578, 1);
7879 countingStream->write((uint64_t*)&cgen_var_578, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007880 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7881 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7882 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007883 }
7884 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7885 countingStream->rewind();
7886 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
7887 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
7888 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007889 uint64_t cgen_var_579;
7890 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
7891 stream->write((uint64_t*)&cgen_var_579, 1 * 8);
7892 uint64_t cgen_var_580;
7893 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_580, 1);
7894 stream->write((uint64_t*)&cgen_var_580, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007895 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7896 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7897 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007898 mImpl->log("finish vkCmdUpdateBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007899}
7900
7901void VkEncoder::vkCmdFillBuffer(
7902 VkCommandBuffer commandBuffer,
7903 VkBuffer dstBuffer,
7904 VkDeviceSize dstOffset,
7905 VkDeviceSize size,
7906 uint32_t data)
7907{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007908 mImpl->log("start vkCmdFillBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007909 auto stream = mImpl->stream();
7910 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007911 auto resources = mImpl->resources();
7912 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007913 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007914 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007915 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007916 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007917 VkDeviceSize local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007918 uint32_t local_data;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007919 local_commandBuffer = commandBuffer;
7920 local_dstBuffer = dstBuffer;
7921 local_dstOffset = dstOffset;
7922 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007923 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007924 countingStream->rewind();
7925 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007926 uint64_t cgen_var_581;
7927 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_581, 1);
7928 countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
7929 uint64_t cgen_var_582;
7930 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_582, 1);
7931 countingStream->write((uint64_t*)&cgen_var_582, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007932 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7933 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7934 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007935 }
7936 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7937 countingStream->rewind();
7938 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
7939 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
7940 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007941 uint64_t cgen_var_583;
7942 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_583, 1);
7943 stream->write((uint64_t*)&cgen_var_583, 1 * 8);
7944 uint64_t cgen_var_584;
7945 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
7946 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007947 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7948 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7949 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007950 mImpl->log("finish vkCmdFillBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007951}
7952
7953void VkEncoder::vkCmdClearColorImage(
7954 VkCommandBuffer commandBuffer,
7955 VkImage image,
7956 VkImageLayout imageLayout,
7957 const VkClearColorValue* pColor,
7958 uint32_t rangeCount,
7959 const VkImageSubresourceRange* pRanges)
7960{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007961 mImpl->log("start vkCmdClearColorImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007962 auto stream = mImpl->stream();
7963 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007964 auto resources = mImpl->resources();
7965 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007966 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007967 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007968 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007969 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007970 VkClearColorValue* local_pColor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007971 uint32_t local_rangeCount;
7972 VkImageSubresourceRange* local_pRanges;
7973 local_commandBuffer = commandBuffer;
7974 local_image = image;
7975 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007976 local_pColor = nullptr;
7977 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007978 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007979 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
7980 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
7981 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007982 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007983 local_pRanges = nullptr;
7984 if (pRanges)
7985 {
7986 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007987 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7988 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007989 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7990 }
7991 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007992 if (local_pColor)
7993 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007994 transform_tohost_VkClearColorValue(mImpl->resources(), (VkClearColorValue*)(local_pColor));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007995 }
7996 if (local_pRanges)
7997 {
7998 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7999 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008000 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008001 }
8002 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008003 countingStream->rewind();
8004 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008005 uint64_t cgen_var_585;
8006 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
8007 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
8008 uint64_t cgen_var_586;
8009 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_586, 1);
8010 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008011 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8012 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
8013 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8014 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8015 {
8016 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008017 }
8018 }
8019 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8020 countingStream->rewind();
8021 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
8022 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
8023 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008024 uint64_t cgen_var_587;
8025 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
8026 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
8027 uint64_t cgen_var_588;
8028 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_588, 1);
8029 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008030 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8031 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
8032 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008033 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8034 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008035 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008036 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008037 mImpl->log("finish vkCmdClearColorImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008038}
8039
8040void VkEncoder::vkCmdClearDepthStencilImage(
8041 VkCommandBuffer commandBuffer,
8042 VkImage image,
8043 VkImageLayout imageLayout,
8044 const VkClearDepthStencilValue* pDepthStencil,
8045 uint32_t rangeCount,
8046 const VkImageSubresourceRange* pRanges)
8047{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008048 mImpl->log("start vkCmdClearDepthStencilImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008049 auto stream = mImpl->stream();
8050 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008051 auto resources = mImpl->resources();
8052 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008053 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008054 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008055 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008056 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008057 VkClearDepthStencilValue* local_pDepthStencil;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008058 uint32_t local_rangeCount;
8059 VkImageSubresourceRange* local_pRanges;
8060 local_commandBuffer = commandBuffer;
8061 local_image = image;
8062 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008063 local_pDepthStencil = nullptr;
8064 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008065 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008066 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
8067 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
8068 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008069 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008070 local_pRanges = nullptr;
8071 if (pRanges)
8072 {
8073 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008074 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8075 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008076 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
8077 }
8078 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008079 if (local_pDepthStencil)
8080 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008081 transform_tohost_VkClearDepthStencilValue(mImpl->resources(), (VkClearDepthStencilValue*)(local_pDepthStencil));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008082 }
8083 if (local_pRanges)
8084 {
8085 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8086 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008087 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008088 }
8089 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008090 countingStream->rewind();
8091 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008092 uint64_t cgen_var_589;
8093 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
8094 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
8095 uint64_t cgen_var_590;
8096 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_590, 1);
8097 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008098 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8099 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8100 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8101 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8102 {
8103 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008104 }
8105 }
8106 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8107 countingStream->rewind();
8108 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
8109 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
8110 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008111 uint64_t cgen_var_591;
8112 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
8113 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
8114 uint64_t cgen_var_592;
8115 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_592, 1);
8116 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008117 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8118 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8119 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008120 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8121 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008122 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008123 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008124 mImpl->log("finish vkCmdClearDepthStencilImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008125}
8126
8127void VkEncoder::vkCmdClearAttachments(
8128 VkCommandBuffer commandBuffer,
8129 uint32_t attachmentCount,
8130 const VkClearAttachment* pAttachments,
8131 uint32_t rectCount,
8132 const VkClearRect* pRects)
8133{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008134 mImpl->log("start vkCmdClearAttachments");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008135 auto stream = mImpl->stream();
8136 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008137 auto resources = mImpl->resources();
8138 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008139 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008140 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008141 uint32_t local_attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008142 VkClearAttachment* local_pAttachments;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008143 uint32_t local_rectCount;
8144 VkClearRect* local_pRects;
8145 local_commandBuffer = commandBuffer;
8146 local_attachmentCount = attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008147 local_pAttachments = nullptr;
8148 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008149 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008150 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008151 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8152 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008153 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008154 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008155 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008156 local_rectCount = rectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008157 local_pRects = nullptr;
8158 if (pRects)
8159 {
8160 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008161 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8162 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008163 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
8164 }
8165 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008166 if (local_pAttachments)
8167 {
8168 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8169 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008170 transform_tohost_VkClearAttachment(mImpl->resources(), (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008171 }
8172 }
8173 if (local_pRects)
8174 {
8175 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8176 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008177 transform_tohost_VkClearRect(mImpl->resources(), (VkClearRect*)(local_pRects + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008178 }
8179 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008180 countingStream->rewind();
8181 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008182 uint64_t cgen_var_593;
8183 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
8184 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008185 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
8186 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8187 {
8188 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
8189 }
8190 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
8191 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8192 {
8193 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008194 }
8195 }
8196 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8197 countingStream->rewind();
8198 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
8199 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
8200 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008201 uint64_t cgen_var_594;
8202 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_594, 1);
8203 stream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008204 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008205 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8206 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008207 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008208 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008209 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008210 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8211 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008212 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008213 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008214 mImpl->log("finish vkCmdClearAttachments");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008215}
8216
8217void VkEncoder::vkCmdResolveImage(
8218 VkCommandBuffer commandBuffer,
8219 VkImage srcImage,
8220 VkImageLayout srcImageLayout,
8221 VkImage dstImage,
8222 VkImageLayout dstImageLayout,
8223 uint32_t regionCount,
8224 const VkImageResolve* pRegions)
8225{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008226 mImpl->log("start vkCmdResolveImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008227 auto stream = mImpl->stream();
8228 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008229 auto resources = mImpl->resources();
8230 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008231 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008232 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008233 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008234 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008235 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008236 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008237 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008238 VkImageResolve* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008239 local_commandBuffer = commandBuffer;
8240 local_srcImage = srcImage;
8241 local_srcImageLayout = srcImageLayout;
8242 local_dstImage = dstImage;
8243 local_dstImageLayout = dstImageLayout;
8244 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008245 local_pRegions = nullptr;
8246 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008247 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008248 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008249 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8250 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008251 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
8252 }
8253 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008254 if (local_pRegions)
8255 {
8256 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8257 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008258 transform_tohost_VkImageResolve(mImpl->resources(), (VkImageResolve*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008259 }
8260 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008261 countingStream->rewind();
8262 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008263 uint64_t cgen_var_595;
8264 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
8265 countingStream->write((uint64_t*)&cgen_var_595, 1 * 8);
8266 uint64_t cgen_var_596;
8267 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_596, 1);
8268 countingStream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008269 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008270 uint64_t cgen_var_597;
8271 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_597, 1);
8272 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008273 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8274 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8275 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8276 {
8277 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008278 }
8279 }
8280 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8281 countingStream->rewind();
8282 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
8283 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
8284 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008285 uint64_t cgen_var_598;
8286 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_598, 1);
8287 stream->write((uint64_t*)&cgen_var_598, 1 * 8);
8288 uint64_t cgen_var_599;
8289 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_599, 1);
8290 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008291 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008292 uint64_t cgen_var_600;
8293 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_600, 1);
8294 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008295 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8296 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008297 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8298 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008299 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008300 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008301 mImpl->log("finish vkCmdResolveImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008302}
8303
8304void VkEncoder::vkCmdSetEvent(
8305 VkCommandBuffer commandBuffer,
8306 VkEvent event,
8307 VkPipelineStageFlags stageMask)
8308{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008309 mImpl->log("start vkCmdSetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008310 auto stream = mImpl->stream();
8311 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008312 auto resources = mImpl->resources();
8313 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008314 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008315 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008316 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008317 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008318 local_commandBuffer = commandBuffer;
8319 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008320 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008321 countingStream->rewind();
8322 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008323 uint64_t cgen_var_601;
8324 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
8325 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
8326 uint64_t cgen_var_602;
8327 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_602, 1);
8328 countingStream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008329 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008330 }
8331 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8332 countingStream->rewind();
8333 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
8334 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
8335 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008336 uint64_t cgen_var_603;
8337 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
8338 stream->write((uint64_t*)&cgen_var_603, 1 * 8);
8339 uint64_t cgen_var_604;
8340 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_604, 1);
8341 stream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008342 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008343 mImpl->log("finish vkCmdSetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008344}
8345
8346void VkEncoder::vkCmdResetEvent(
8347 VkCommandBuffer commandBuffer,
8348 VkEvent event,
8349 VkPipelineStageFlags stageMask)
8350{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008351 mImpl->log("start vkCmdResetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008352 auto stream = mImpl->stream();
8353 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008354 auto resources = mImpl->resources();
8355 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008356 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008357 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008358 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008359 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008360 local_commandBuffer = commandBuffer;
8361 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008362 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008363 countingStream->rewind();
8364 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008365 uint64_t cgen_var_605;
8366 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_605, 1);
8367 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
8368 uint64_t cgen_var_606;
8369 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_606, 1);
8370 countingStream->write((uint64_t*)&cgen_var_606, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008371 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008372 }
8373 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8374 countingStream->rewind();
8375 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
8376 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
8377 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008378 uint64_t cgen_var_607;
8379 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_607, 1);
8380 stream->write((uint64_t*)&cgen_var_607, 1 * 8);
8381 uint64_t cgen_var_608;
8382 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_608, 1);
8383 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008384 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008385 mImpl->log("finish vkCmdResetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008386}
8387
8388void VkEncoder::vkCmdWaitEvents(
8389 VkCommandBuffer commandBuffer,
8390 uint32_t eventCount,
8391 const VkEvent* pEvents,
8392 VkPipelineStageFlags srcStageMask,
8393 VkPipelineStageFlags dstStageMask,
8394 uint32_t memoryBarrierCount,
8395 const VkMemoryBarrier* pMemoryBarriers,
8396 uint32_t bufferMemoryBarrierCount,
8397 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8398 uint32_t imageMemoryBarrierCount,
8399 const VkImageMemoryBarrier* pImageMemoryBarriers)
8400{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008401 mImpl->log("start vkCmdWaitEvents");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008402 auto stream = mImpl->stream();
8403 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008404 auto resources = mImpl->resources();
8405 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008406 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008407 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008408 uint32_t local_eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008409 VkEvent* local_pEvents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008410 VkPipelineStageFlags local_srcStageMask;
8411 VkPipelineStageFlags local_dstStageMask;
8412 uint32_t local_memoryBarrierCount;
8413 VkMemoryBarrier* local_pMemoryBarriers;
8414 uint32_t local_bufferMemoryBarrierCount;
8415 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8416 uint32_t local_imageMemoryBarrierCount;
8417 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8418 local_commandBuffer = commandBuffer;
8419 local_eventCount = eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008420 local_pEvents = nullptr;
8421 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008422 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008423 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
8424 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008425 local_srcStageMask = srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008426 local_dstStageMask = dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008427 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008428 local_pMemoryBarriers = nullptr;
8429 if (pMemoryBarriers)
8430 {
8431 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008432 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8433 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008434 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008435 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008436 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008437 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008438 local_pBufferMemoryBarriers = nullptr;
8439 if (pBufferMemoryBarriers)
8440 {
8441 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008442 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8443 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008444 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008445 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008446 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008447 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008448 local_pImageMemoryBarriers = nullptr;
8449 if (pImageMemoryBarriers)
8450 {
8451 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008452 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8453 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008454 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8455 }
8456 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008457 if (local_pMemoryBarriers)
8458 {
8459 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8460 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008461 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008462 }
8463 }
8464 if (local_pBufferMemoryBarriers)
8465 {
8466 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8467 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008468 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008469 }
8470 }
8471 if (local_pImageMemoryBarriers)
8472 {
8473 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8474 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008475 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008476 }
8477 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008478 countingStream->rewind();
8479 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008480 uint64_t cgen_var_609;
8481 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
8482 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008483 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008484 if (((eventCount)))
8485 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008486 uint64_t* cgen_var_610;
8487 countingStream->alloc((void**)&cgen_var_610, ((eventCount)) * 8);
8488 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_610, ((eventCount)));
8489 countingStream->write((uint64_t*)cgen_var_610, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008490 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008491 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8492 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8493 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8494 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8495 {
8496 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8497 }
8498 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8499 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8500 {
8501 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8502 }
8503 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8504 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8505 {
8506 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008507 }
8508 }
8509 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8510 countingStream->rewind();
8511 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
8512 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
8513 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008514 uint64_t cgen_var_611;
8515 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
8516 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008517 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008518 if (((eventCount)))
8519 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008520 uint64_t* cgen_var_612;
8521 stream->alloc((void**)&cgen_var_612, ((eventCount)) * 8);
8522 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_612, ((eventCount)));
8523 stream->write((uint64_t*)cgen_var_612, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008524 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008525 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8526 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8527 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008528 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8529 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008530 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008531 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008532 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008533 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8534 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008535 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008536 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008537 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008538 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8539 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008540 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008541 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008542 mImpl->log("finish vkCmdWaitEvents");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008543}
8544
8545void VkEncoder::vkCmdPipelineBarrier(
8546 VkCommandBuffer commandBuffer,
8547 VkPipelineStageFlags srcStageMask,
8548 VkPipelineStageFlags dstStageMask,
8549 VkDependencyFlags dependencyFlags,
8550 uint32_t memoryBarrierCount,
8551 const VkMemoryBarrier* pMemoryBarriers,
8552 uint32_t bufferMemoryBarrierCount,
8553 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8554 uint32_t imageMemoryBarrierCount,
8555 const VkImageMemoryBarrier* pImageMemoryBarriers)
8556{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008557 mImpl->log("start vkCmdPipelineBarrier");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008558 auto stream = mImpl->stream();
8559 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008560 auto resources = mImpl->resources();
8561 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008562 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008563 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008564 VkPipelineStageFlags local_srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008565 VkPipelineStageFlags local_dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008566 VkDependencyFlags local_dependencyFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008567 uint32_t local_memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008568 VkMemoryBarrier* local_pMemoryBarriers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008569 uint32_t local_bufferMemoryBarrierCount;
8570 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8571 uint32_t local_imageMemoryBarrierCount;
8572 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8573 local_commandBuffer = commandBuffer;
8574 local_srcStageMask = srcStageMask;
8575 local_dstStageMask = dstStageMask;
8576 local_dependencyFlags = dependencyFlags;
8577 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008578 local_pMemoryBarriers = nullptr;
8579 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008580 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008581 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008582 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8583 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008584 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008585 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008586 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008587 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008588 local_pBufferMemoryBarriers = nullptr;
8589 if (pBufferMemoryBarriers)
8590 {
8591 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008592 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8593 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008594 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008595 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008596 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008597 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008598 local_pImageMemoryBarriers = nullptr;
8599 if (pImageMemoryBarriers)
8600 {
8601 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008602 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8603 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008604 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8605 }
8606 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008607 if (local_pMemoryBarriers)
8608 {
8609 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8610 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008611 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008612 }
8613 }
8614 if (local_pBufferMemoryBarriers)
8615 {
8616 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8617 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008618 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008619 }
8620 }
8621 if (local_pImageMemoryBarriers)
8622 {
8623 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8624 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008625 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008626 }
8627 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008628 countingStream->rewind();
8629 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008630 uint64_t cgen_var_613;
8631 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
8632 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008633 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8634 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8635 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
8636 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8637 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8638 {
8639 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8640 }
8641 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8642 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8643 {
8644 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8645 }
8646 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8647 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8648 {
8649 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008650 }
8651 }
8652 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8653 countingStream->rewind();
8654 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
8655 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
8656 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008657 uint64_t cgen_var_614;
8658 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_614, 1);
8659 stream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008660 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8661 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8662 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
8663 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008664 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8665 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008666 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008667 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008668 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008669 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8670 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008671 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008672 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008673 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008674 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8675 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008676 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008677 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008678 mImpl->log("finish vkCmdPipelineBarrier");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008679}
8680
8681void VkEncoder::vkCmdBeginQuery(
8682 VkCommandBuffer commandBuffer,
8683 VkQueryPool queryPool,
8684 uint32_t query,
8685 VkQueryControlFlags flags)
8686{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008687 mImpl->log("start vkCmdBeginQuery");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008688 auto stream = mImpl->stream();
8689 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008690 auto resources = mImpl->resources();
8691 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008692 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008693 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008694 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008695 uint32_t local_query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008696 VkQueryControlFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008697 local_commandBuffer = commandBuffer;
8698 local_queryPool = queryPool;
8699 local_query = query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008700 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008701 countingStream->rewind();
8702 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008703 uint64_t cgen_var_615;
8704 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
8705 countingStream->write((uint64_t*)&cgen_var_615, 1 * 8);
8706 uint64_t cgen_var_616;
8707 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_616, 1);
8708 countingStream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008709 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
8710 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008711 }
8712 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8713 countingStream->rewind();
8714 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
8715 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
8716 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008717 uint64_t cgen_var_617;
8718 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
8719 stream->write((uint64_t*)&cgen_var_617, 1 * 8);
8720 uint64_t cgen_var_618;
8721 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_618, 1);
8722 stream->write((uint64_t*)&cgen_var_618, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008723 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
8724 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008725 mImpl->log("finish vkCmdBeginQuery");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008726}
8727
8728void VkEncoder::vkCmdEndQuery(
8729 VkCommandBuffer commandBuffer,
8730 VkQueryPool queryPool,
8731 uint32_t query)
8732{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008733 mImpl->log("start vkCmdEndQuery");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008734 auto stream = mImpl->stream();
8735 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008736 auto resources = mImpl->resources();
8737 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008738 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008739 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008740 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008741 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008742 local_commandBuffer = commandBuffer;
8743 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008744 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008745 countingStream->rewind();
8746 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008747 uint64_t cgen_var_619;
8748 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
8749 countingStream->write((uint64_t*)&cgen_var_619, 1 * 8);
8750 uint64_t cgen_var_620;
8751 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_620, 1);
8752 countingStream->write((uint64_t*)&cgen_var_620, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008753 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008754 }
8755 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8756 countingStream->rewind();
8757 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
8758 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
8759 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008760 uint64_t cgen_var_621;
8761 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
8762 stream->write((uint64_t*)&cgen_var_621, 1 * 8);
8763 uint64_t cgen_var_622;
8764 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_622, 1);
8765 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008766 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008767 mImpl->log("finish vkCmdEndQuery");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008768}
8769
8770void VkEncoder::vkCmdResetQueryPool(
8771 VkCommandBuffer commandBuffer,
8772 VkQueryPool queryPool,
8773 uint32_t firstQuery,
8774 uint32_t queryCount)
8775{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008776 mImpl->log("start vkCmdResetQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008777 auto stream = mImpl->stream();
8778 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008779 auto resources = mImpl->resources();
8780 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008781 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008782 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008783 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008784 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008785 uint32_t local_queryCount;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008786 local_commandBuffer = commandBuffer;
8787 local_queryPool = queryPool;
8788 local_firstQuery = firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008789 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008790 countingStream->rewind();
8791 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008792 uint64_t cgen_var_623;
8793 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
8794 countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
8795 uint64_t cgen_var_624;
8796 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
8797 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008798 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8799 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008800 }
8801 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8802 countingStream->rewind();
8803 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
8804 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
8805 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008806 uint64_t cgen_var_625;
8807 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
8808 stream->write((uint64_t*)&cgen_var_625, 1 * 8);
8809 uint64_t cgen_var_626;
8810 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
8811 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008812 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8813 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008814 mImpl->log("finish vkCmdResetQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008815}
8816
8817void VkEncoder::vkCmdWriteTimestamp(
8818 VkCommandBuffer commandBuffer,
8819 VkPipelineStageFlagBits pipelineStage,
8820 VkQueryPool queryPool,
8821 uint32_t query)
8822{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008823 mImpl->log("start vkCmdWriteTimestamp");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008824 auto stream = mImpl->stream();
8825 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008826 auto resources = mImpl->resources();
8827 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008828 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008829 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008830 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008831 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008832 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008833 local_commandBuffer = commandBuffer;
8834 local_pipelineStage = pipelineStage;
8835 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008836 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008837 countingStream->rewind();
8838 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008839 uint64_t cgen_var_627;
8840 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
8841 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008842 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008843 uint64_t cgen_var_628;
8844 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
8845 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008846 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008847 }
8848 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8849 countingStream->rewind();
8850 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
8851 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
8852 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008853 uint64_t cgen_var_629;
8854 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
8855 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008856 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008857 uint64_t cgen_var_630;
8858 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
8859 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008860 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008861 mImpl->log("finish vkCmdWriteTimestamp");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008862}
8863
8864void VkEncoder::vkCmdCopyQueryPoolResults(
8865 VkCommandBuffer commandBuffer,
8866 VkQueryPool queryPool,
8867 uint32_t firstQuery,
8868 uint32_t queryCount,
8869 VkBuffer dstBuffer,
8870 VkDeviceSize dstOffset,
8871 VkDeviceSize stride,
8872 VkQueryResultFlags flags)
8873{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008874 mImpl->log("start vkCmdCopyQueryPoolResults");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008875 auto stream = mImpl->stream();
8876 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008877 auto resources = mImpl->resources();
8878 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008879 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008880 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008881 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008882 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008883 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008884 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008885 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008886 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008887 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008888 local_commandBuffer = commandBuffer;
8889 local_queryPool = queryPool;
8890 local_firstQuery = firstQuery;
8891 local_queryCount = queryCount;
8892 local_dstBuffer = dstBuffer;
8893 local_dstOffset = dstOffset;
8894 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008895 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008896 countingStream->rewind();
8897 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008898 uint64_t cgen_var_631;
8899 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
8900 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
8901 uint64_t cgen_var_632;
8902 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
8903 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008904 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8905 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008906 uint64_t cgen_var_633;
8907 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_633, 1);
8908 countingStream->write((uint64_t*)&cgen_var_633, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008909 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8910 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8911 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008912 }
8913 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8914 countingStream->rewind();
8915 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
8916 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
8917 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008918 uint64_t cgen_var_634;
8919 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_634, 1);
8920 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
8921 uint64_t cgen_var_635;
8922 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_635, 1);
8923 stream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008924 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8925 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008926 uint64_t cgen_var_636;
8927 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_636, 1);
8928 stream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008929 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8930 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8931 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008932 mImpl->log("finish vkCmdCopyQueryPoolResults");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008933}
8934
8935void VkEncoder::vkCmdPushConstants(
8936 VkCommandBuffer commandBuffer,
8937 VkPipelineLayout layout,
8938 VkShaderStageFlags stageFlags,
8939 uint32_t offset,
8940 uint32_t size,
8941 const void* pValues)
8942{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008943 mImpl->log("start vkCmdPushConstants");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008944 auto stream = mImpl->stream();
8945 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008946 auto resources = mImpl->resources();
8947 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008948 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008949 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008950 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008951 VkShaderStageFlags local_stageFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008952 uint32_t local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008953 uint32_t local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008954 void* local_pValues;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008955 local_commandBuffer = commandBuffer;
8956 local_layout = layout;
8957 local_stageFlags = stageFlags;
8958 local_offset = offset;
8959 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008960 local_pValues = nullptr;
8961 if (pValues)
8962 {
8963 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
8964 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008965 countingStream->rewind();
8966 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008967 uint64_t cgen_var_637;
8968 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
8969 countingStream->write((uint64_t*)&cgen_var_637, 1 * 8);
8970 uint64_t cgen_var_638;
8971 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_638, 1);
8972 countingStream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008973 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8974 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8975 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
8976 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008977 }
8978 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8979 countingStream->rewind();
8980 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
8981 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
8982 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008983 uint64_t cgen_var_639;
8984 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
8985 stream->write((uint64_t*)&cgen_var_639, 1 * 8);
8986 uint64_t cgen_var_640;
8987 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_640, 1);
8988 stream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008989 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8990 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8991 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
8992 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008993 mImpl->log("finish vkCmdPushConstants");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008994}
8995
8996void VkEncoder::vkCmdBeginRenderPass(
8997 VkCommandBuffer commandBuffer,
8998 const VkRenderPassBeginInfo* pRenderPassBegin,
8999 VkSubpassContents contents)
9000{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009001 mImpl->log("start vkCmdBeginRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009002 auto stream = mImpl->stream();
9003 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009004 auto resources = mImpl->resources();
9005 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009006 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009007 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009008 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009009 VkSubpassContents local_contents;
9010 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009011 local_pRenderPassBegin = nullptr;
9012 if (pRenderPassBegin)
9013 {
9014 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
9015 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9016 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009017 local_contents = contents;
Lingfeng Yang62b23322018-12-24 12:45:47 -08009018 if (local_pRenderPassBegin)
9019 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009020 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009021 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009022 countingStream->rewind();
9023 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009024 uint64_t cgen_var_641;
9025 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1);
9026 countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009027 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9028 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009029 }
9030 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9031 countingStream->rewind();
9032 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
9033 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
9034 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009035 uint64_t cgen_var_642;
9036 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
9037 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009038 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9039 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009040 mImpl->log("finish vkCmdBeginRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009041}
9042
9043void VkEncoder::vkCmdNextSubpass(
9044 VkCommandBuffer commandBuffer,
9045 VkSubpassContents contents)
9046{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009047 mImpl->log("start vkCmdNextSubpass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009048 auto stream = mImpl->stream();
9049 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009050 auto resources = mImpl->resources();
9051 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009052 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009053 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009054 VkSubpassContents local_contents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009055 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009056 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009057 countingStream->rewind();
9058 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009059 uint64_t cgen_var_643;
9060 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_643, 1);
9061 countingStream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009062 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009063 }
9064 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9065 countingStream->rewind();
9066 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
9067 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
9068 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009069 uint64_t cgen_var_644;
9070 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_644, 1);
9071 stream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009072 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009073 mImpl->log("finish vkCmdNextSubpass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009074}
9075
9076void VkEncoder::vkCmdEndRenderPass(
9077 VkCommandBuffer commandBuffer)
9078{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009079 mImpl->log("start vkCmdEndRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009080 auto stream = mImpl->stream();
9081 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009082 auto resources = mImpl->resources();
9083 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009084 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009085 VkCommandBuffer local_commandBuffer;
9086 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009087 countingStream->rewind();
9088 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009089 uint64_t cgen_var_645;
9090 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
9091 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009092 }
9093 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9094 countingStream->rewind();
9095 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
9096 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
9097 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009098 uint64_t cgen_var_646;
9099 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_646, 1);
9100 stream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009101 mImpl->log("finish vkCmdEndRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009102}
9103
9104void VkEncoder::vkCmdExecuteCommands(
9105 VkCommandBuffer commandBuffer,
9106 uint32_t commandBufferCount,
9107 const VkCommandBuffer* pCommandBuffers)
9108{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009109 mImpl->log("start vkCmdExecuteCommands");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009110 auto stream = mImpl->stream();
9111 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009112 auto resources = mImpl->resources();
9113 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009114 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009115 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009116 uint32_t local_commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009117 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009118 local_commandBuffer = commandBuffer;
9119 local_commandBufferCount = commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009120 local_pCommandBuffers = nullptr;
9121 if (pCommandBuffers)
9122 {
9123 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
9124 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009125 countingStream->rewind();
9126 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009127 uint64_t cgen_var_647;
9128 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
9129 countingStream->write((uint64_t*)&cgen_var_647, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009130 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009131 if (((commandBufferCount)))
9132 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009133 uint64_t* cgen_var_648;
9134 countingStream->alloc((void**)&cgen_var_648, ((commandBufferCount)) * 8);
9135 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_648, ((commandBufferCount)));
9136 countingStream->write((uint64_t*)cgen_var_648, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08009137 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009138 }
9139 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9140 countingStream->rewind();
9141 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
9142 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
9143 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009144 uint64_t cgen_var_649;
9145 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
9146 stream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009147 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009148 if (((commandBufferCount)))
9149 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009150 uint64_t* cgen_var_650;
9151 stream->alloc((void**)&cgen_var_650, ((commandBufferCount)) * 8);
9152 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_650, ((commandBufferCount)));
9153 stream->write((uint64_t*)cgen_var_650, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08009154 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009155 mImpl->log("finish vkCmdExecuteCommands");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009156}
9157
9158#endif
9159#ifdef VK_VERSION_1_1
9160VkResult VkEncoder::vkEnumerateInstanceVersion(
9161 uint32_t* pApiVersion)
9162{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009163 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08009164 vkEnumerateInstanceVersion_VkResult_return = mImpl->resources()->on_vkEnumerateInstanceVersion(this, VK_SUCCESS, pApiVersion);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009165 mImpl->log("finish vkEnumerateInstanceVersion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009166 return vkEnumerateInstanceVersion_VkResult_return;
9167}
9168
9169VkResult VkEncoder::vkBindBufferMemory2(
9170 VkDevice device,
9171 uint32_t bindInfoCount,
9172 const VkBindBufferMemoryInfo* pBindInfos)
9173{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009174 mImpl->log("start vkBindBufferMemory2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009175 auto stream = mImpl->stream();
9176 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009177 auto resources = mImpl->resources();
9178 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009179 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009180 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009181 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009182 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009183 local_device = device;
9184 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009185 local_pBindInfos = nullptr;
9186 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009187 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009188 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009189 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9190 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009191 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
9192 }
9193 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009194 if (local_pBindInfos)
9195 {
9196 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9197 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009198 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009199 }
9200 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009201 countingStream->rewind();
9202 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009203 uint64_t cgen_var_651;
9204 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_651, 1);
9205 countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009206 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9207 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9208 {
9209 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009210 }
9211 }
9212 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9213 countingStream->rewind();
9214 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
9215 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
9216 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009217 uint64_t cgen_var_652;
9218 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_652, 1);
9219 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009220 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009221 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9222 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009223 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009224 }
9225 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
9226 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009227 countingStream->clearPool();
9228 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009229 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009230 mImpl->log("finish vkBindBufferMemory2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009231 return vkBindBufferMemory2_VkResult_return;
9232}
9233
9234VkResult VkEncoder::vkBindImageMemory2(
9235 VkDevice device,
9236 uint32_t bindInfoCount,
9237 const VkBindImageMemoryInfo* pBindInfos)
9238{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009239 mImpl->log("start vkBindImageMemory2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009240 auto stream = mImpl->stream();
9241 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009242 auto resources = mImpl->resources();
9243 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009244 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009245 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009246 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009247 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009248 local_device = device;
9249 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009250 local_pBindInfos = nullptr;
9251 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009252 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009253 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009254 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9255 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009256 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
9257 }
9258 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009259 if (local_pBindInfos)
9260 {
9261 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9262 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009263 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009264 }
9265 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009266 countingStream->rewind();
9267 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009268 uint64_t cgen_var_653;
9269 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_653, 1);
9270 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009271 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9272 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9273 {
9274 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009275 }
9276 }
9277 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9278 countingStream->rewind();
9279 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
9280 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
9281 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009282 uint64_t cgen_var_654;
9283 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_654, 1);
9284 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009285 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009286 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9287 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009288 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009289 }
9290 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
9291 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009292 countingStream->clearPool();
9293 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009294 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009295 mImpl->log("finish vkBindImageMemory2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009296 return vkBindImageMemory2_VkResult_return;
9297}
9298
9299void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
9300 VkDevice device,
9301 uint32_t heapIndex,
9302 uint32_t localDeviceIndex,
9303 uint32_t remoteDeviceIndex,
9304 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
9305{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009306 mImpl->log("start vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009307 auto stream = mImpl->stream();
9308 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009309 auto resources = mImpl->resources();
9310 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009311 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009312 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009313 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009314 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009315 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009316 local_device = device;
9317 local_heapIndex = heapIndex;
9318 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009319 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009320 countingStream->rewind();
9321 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009322 uint64_t cgen_var_655;
9323 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_655, 1);
9324 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009325 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9326 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9327 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009328 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9329 }
9330 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9331 countingStream->rewind();
9332 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
9333 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
9334 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009335 uint64_t cgen_var_656;
9336 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_656, 1);
9337 stream->write((uint64_t*)&cgen_var_656, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009338 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9339 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9340 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009341 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9342 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009343 mImpl->log("finish vkGetDeviceGroupPeerMemoryFeatures");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009344}
9345
9346void VkEncoder::vkCmdSetDeviceMask(
9347 VkCommandBuffer commandBuffer,
9348 uint32_t deviceMask)
9349{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009350 mImpl->log("start vkCmdSetDeviceMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009351 auto stream = mImpl->stream();
9352 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009353 auto resources = mImpl->resources();
9354 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009355 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009356 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009357 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009358 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009359 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009360 countingStream->rewind();
9361 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009362 uint64_t cgen_var_657;
9363 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
9364 countingStream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009365 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009366 }
9367 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9368 countingStream->rewind();
9369 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
9370 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
9371 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009372 uint64_t cgen_var_658;
9373 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_658, 1);
9374 stream->write((uint64_t*)&cgen_var_658, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009375 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009376 mImpl->log("finish vkCmdSetDeviceMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009377}
9378
9379void VkEncoder::vkCmdDispatchBase(
9380 VkCommandBuffer commandBuffer,
9381 uint32_t baseGroupX,
9382 uint32_t baseGroupY,
9383 uint32_t baseGroupZ,
9384 uint32_t groupCountX,
9385 uint32_t groupCountY,
9386 uint32_t groupCountZ)
9387{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009388 mImpl->log("start vkCmdDispatchBase");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009389 auto stream = mImpl->stream();
9390 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009391 auto resources = mImpl->resources();
9392 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009393 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009394 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009395 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009396 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009397 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009398 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009399 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009400 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009401 local_commandBuffer = commandBuffer;
9402 local_baseGroupX = baseGroupX;
9403 local_baseGroupY = baseGroupY;
9404 local_baseGroupZ = baseGroupZ;
9405 local_groupCountX = groupCountX;
9406 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009407 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009408 countingStream->rewind();
9409 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009410 uint64_t cgen_var_659;
9411 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_659, 1);
9412 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009413 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9414 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9415 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9416 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9417 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9418 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009419 }
9420 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9421 countingStream->rewind();
9422 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
9423 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
9424 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009425 uint64_t cgen_var_660;
9426 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_660, 1);
9427 stream->write((uint64_t*)&cgen_var_660, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009428 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9429 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9430 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9431 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9432 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9433 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009434 mImpl->log("finish vkCmdDispatchBase");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009435}
9436
9437VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
9438 VkInstance instance,
9439 uint32_t* pPhysicalDeviceGroupCount,
9440 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
9441{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009442 mImpl->log("start vkEnumeratePhysicalDeviceGroups");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009443 auto stream = mImpl->stream();
9444 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009445 auto resources = mImpl->resources();
9446 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009447 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009448 VkInstance local_instance;
9449 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009450 countingStream->rewind();
9451 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009452 uint64_t cgen_var_661;
9453 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_661, 1);
9454 countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009455 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009456 uint64_t cgen_var_662 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
9457 countingStream->putBe64(cgen_var_662);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009458 if (pPhysicalDeviceGroupCount)
9459 {
9460 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9461 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009462 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009463 uint64_t cgen_var_663 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
9464 countingStream->putBe64(cgen_var_663);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009465 if (pPhysicalDeviceGroupProperties)
9466 {
9467 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9468 {
9469 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9470 }
9471 }
9472 }
9473 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9474 countingStream->rewind();
9475 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
9476 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
9477 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009478 uint64_t cgen_var_664;
9479 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_664, 1);
9480 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009481 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009482 uint64_t cgen_var_665 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
9483 stream->putBe64(cgen_var_665);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009484 if (pPhysicalDeviceGroupCount)
9485 {
9486 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9487 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009488 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009489 uint64_t cgen_var_666 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
9490 stream->putBe64(cgen_var_666);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009491 if (pPhysicalDeviceGroupProperties)
9492 {
9493 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9494 {
9495 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9496 }
9497 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009498 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009499 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009500 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009501 if (pPhysicalDeviceGroupCount)
9502 {
9503 if (!(check_pPhysicalDeviceGroupCount))
9504 {
9505 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
9506 }
9507 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
9508 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009509 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009510 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009511 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009512 if (pPhysicalDeviceGroupProperties)
9513 {
9514 if (!(check_pPhysicalDeviceGroupProperties))
9515 {
9516 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
9517 }
9518 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9519 {
9520 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9521 }
9522 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08009523 if (pPhysicalDeviceGroupProperties)
9524 {
9525 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
9526 {
9527 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
9528 }
9529 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009530 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
9531 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009532 countingStream->clearPool();
9533 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009534 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009535 mImpl->log("finish vkEnumeratePhysicalDeviceGroups");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009536 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
9537}
9538
9539void VkEncoder::vkGetImageMemoryRequirements2(
9540 VkDevice device,
9541 const VkImageMemoryRequirementsInfo2* pInfo,
9542 VkMemoryRequirements2* pMemoryRequirements)
9543{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009544 mImpl->log("start vkGetImageMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009545 auto stream = mImpl->stream();
9546 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009547 auto resources = mImpl->resources();
9548 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009549 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009550 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009551 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009552 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009553 local_pInfo = nullptr;
9554 if (pInfo)
9555 {
9556 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
9557 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
9558 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009559 if (local_pInfo)
9560 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009561 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009562 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009563 countingStream->rewind();
9564 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009565 uint64_t cgen_var_669;
9566 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_669, 1);
9567 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009568 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009569 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
9570 }
9571 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9572 countingStream->rewind();
9573 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
9574 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
9575 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009576 uint64_t cgen_var_670;
9577 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_670, 1);
9578 stream->write((uint64_t*)&cgen_var_670, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009579 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009580 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9581 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009582 if (pMemoryRequirements)
9583 {
9584 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
9585 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009586 mImpl->log("finish vkGetImageMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009587}
9588
9589void VkEncoder::vkGetBufferMemoryRequirements2(
9590 VkDevice device,
9591 const VkBufferMemoryRequirementsInfo2* pInfo,
9592 VkMemoryRequirements2* pMemoryRequirements)
9593{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009594 mImpl->log("start vkGetBufferMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009595 auto stream = mImpl->stream();
9596 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009597 auto resources = mImpl->resources();
9598 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009599 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009600 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009601 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009602 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009603 local_pInfo = nullptr;
9604 if (pInfo)
9605 {
9606 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
9607 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
9608 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009609 if (local_pInfo)
9610 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009611 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009612 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009613 countingStream->rewind();
9614 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009615 uint64_t cgen_var_671;
9616 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_671, 1);
9617 countingStream->write((uint64_t*)&cgen_var_671, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009618 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009619 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
9620 }
9621 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9622 countingStream->rewind();
9623 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
9624 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
9625 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009626 uint64_t cgen_var_672;
9627 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_672, 1);
9628 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009629 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009630 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
9631 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009632 if (pMemoryRequirements)
9633 {
9634 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
9635 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009636 mImpl->log("finish vkGetBufferMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009637}
9638
9639void VkEncoder::vkGetImageSparseMemoryRequirements2(
9640 VkDevice device,
9641 const VkImageSparseMemoryRequirementsInfo2* pInfo,
9642 uint32_t* pSparseMemoryRequirementCount,
9643 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
9644{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009645 mImpl->log("start vkGetImageSparseMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009646 auto stream = mImpl->stream();
9647 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009648 auto resources = mImpl->resources();
9649 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009650 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009651 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009652 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009653 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009654 local_pInfo = nullptr;
9655 if (pInfo)
9656 {
9657 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
9658 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
9659 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009660 if (local_pInfo)
9661 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009662 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009663 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009664 countingStream->rewind();
9665 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009666 uint64_t cgen_var_673;
9667 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_673, 1);
9668 countingStream->write((uint64_t*)&cgen_var_673, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009669 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009670 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009671 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
9672 countingStream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009673 if (pSparseMemoryRequirementCount)
9674 {
9675 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9676 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009677 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009678 uint64_t cgen_var_675 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
9679 countingStream->putBe64(cgen_var_675);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009680 if (pSparseMemoryRequirements)
9681 {
9682 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9683 {
9684 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9685 }
9686 }
9687 }
9688 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9689 countingStream->rewind();
9690 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
9691 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
9692 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009693 uint64_t cgen_var_676;
9694 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_676, 1);
9695 stream->write((uint64_t*)&cgen_var_676, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009696 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009697 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009698 uint64_t cgen_var_677 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
9699 stream->putBe64(cgen_var_677);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009700 if (pSparseMemoryRequirementCount)
9701 {
9702 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9703 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009704 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009705 uint64_t cgen_var_678 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
9706 stream->putBe64(cgen_var_678);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009707 if (pSparseMemoryRequirements)
9708 {
9709 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9710 {
9711 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9712 }
9713 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009714 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009715 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009716 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009717 if (pSparseMemoryRequirementCount)
9718 {
9719 if (!(check_pSparseMemoryRequirementCount))
9720 {
9721 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
9722 }
9723 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
9724 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009725 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009726 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009727 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009728 if (pSparseMemoryRequirements)
9729 {
9730 if (!(check_pSparseMemoryRequirements))
9731 {
9732 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
9733 }
9734 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9735 {
9736 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9737 }
9738 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08009739 if (pSparseMemoryRequirements)
9740 {
9741 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
9742 {
9743 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
9744 }
9745 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009746 mImpl->log("finish vkGetImageSparseMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009747}
9748
9749void VkEncoder::vkGetPhysicalDeviceFeatures2(
9750 VkPhysicalDevice physicalDevice,
9751 VkPhysicalDeviceFeatures2* pFeatures)
9752{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009753 mImpl->log("start vkGetPhysicalDeviceFeatures2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009754 auto stream = mImpl->stream();
9755 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009756 auto resources = mImpl->resources();
9757 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009758 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009759 VkPhysicalDevice local_physicalDevice;
9760 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009761 countingStream->rewind();
9762 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009763 uint64_t cgen_var_681;
9764 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_681, 1);
9765 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009766 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
9767 }
9768 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9769 countingStream->rewind();
9770 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
9771 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
9772 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009773 uint64_t cgen_var_682;
9774 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_682, 1);
9775 stream->write((uint64_t*)&cgen_var_682, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009776 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
9777 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009778 if (pFeatures)
9779 {
9780 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
9781 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009782 mImpl->log("finish vkGetPhysicalDeviceFeatures2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009783}
9784
9785void VkEncoder::vkGetPhysicalDeviceProperties2(
9786 VkPhysicalDevice physicalDevice,
9787 VkPhysicalDeviceProperties2* pProperties)
9788{
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08009789 mImpl->resources()->on_vkGetPhysicalDeviceProperties2(this, physicalDevice, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009790}
9791
9792void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
9793 VkPhysicalDevice physicalDevice,
9794 VkFormat format,
9795 VkFormatProperties2* pFormatProperties)
9796{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009797 mImpl->log("start vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009798 auto stream = mImpl->stream();
9799 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009800 auto resources = mImpl->resources();
9801 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009802 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009803 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009804 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009805 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009806 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009807 countingStream->rewind();
9808 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009809 uint64_t cgen_var_683;
9810 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_683, 1);
9811 countingStream->write((uint64_t*)&cgen_var_683, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009812 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009813 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
9814 }
9815 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9816 countingStream->rewind();
9817 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
9818 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
9819 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009820 uint64_t cgen_var_684;
9821 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_684, 1);
9822 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009823 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009824 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
9825 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009826 if (pFormatProperties)
9827 {
9828 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
9829 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009830 mImpl->log("finish vkGetPhysicalDeviceFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009831}
9832
9833VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
9834 VkPhysicalDevice physicalDevice,
9835 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
9836 VkImageFormatProperties2* pImageFormatProperties)
9837{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009838 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009839 auto stream = mImpl->stream();
9840 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009841 auto resources = mImpl->resources();
9842 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009843 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009844 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009845 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009846 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009847 local_pImageFormatInfo = nullptr;
9848 if (pImageFormatInfo)
9849 {
9850 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
9851 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
9852 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009853 if (local_pImageFormatInfo)
9854 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009855 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009856 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009857 countingStream->rewind();
9858 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009859 uint64_t cgen_var_685;
9860 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_685, 1);
9861 countingStream->write((uint64_t*)&cgen_var_685, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009862 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009863 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
9864 }
9865 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9866 countingStream->rewind();
9867 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
9868 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
9869 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009870 uint64_t cgen_var_686;
9871 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_686, 1);
9872 stream->write((uint64_t*)&cgen_var_686, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009873 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009874 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
9875 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -08009876 if (pImageFormatProperties)
9877 {
9878 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
9879 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009880 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
9881 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009882 countingStream->clearPool();
9883 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009884 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009885 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009886 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
9887}
9888
9889void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
9890 VkPhysicalDevice physicalDevice,
9891 uint32_t* pQueueFamilyPropertyCount,
9892 VkQueueFamilyProperties2* pQueueFamilyProperties)
9893{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009894 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009895 auto stream = mImpl->stream();
9896 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009897 auto resources = mImpl->resources();
9898 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009899 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009900 VkPhysicalDevice local_physicalDevice;
9901 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009902 countingStream->rewind();
9903 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009904 uint64_t cgen_var_687;
9905 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_687, 1);
9906 countingStream->write((uint64_t*)&cgen_var_687, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009907 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009908 uint64_t cgen_var_688 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
9909 countingStream->putBe64(cgen_var_688);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009910 if (pQueueFamilyPropertyCount)
9911 {
9912 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9913 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009914 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009915 uint64_t cgen_var_689 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
9916 countingStream->putBe64(cgen_var_689);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009917 if (pQueueFamilyProperties)
9918 {
9919 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9920 {
9921 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9922 }
9923 }
9924 }
9925 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9926 countingStream->rewind();
9927 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
9928 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
9929 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009930 uint64_t cgen_var_690;
9931 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
9932 stream->write((uint64_t*)&cgen_var_690, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009933 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009934 uint64_t cgen_var_691 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
9935 stream->putBe64(cgen_var_691);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009936 if (pQueueFamilyPropertyCount)
9937 {
9938 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9939 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009940 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009941 uint64_t cgen_var_692 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
9942 stream->putBe64(cgen_var_692);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009943 if (pQueueFamilyProperties)
9944 {
9945 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9946 {
9947 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9948 }
9949 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009950 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009951 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009952 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009953 if (pQueueFamilyPropertyCount)
9954 {
9955 if (!(check_pQueueFamilyPropertyCount))
9956 {
9957 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
9958 }
9959 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9960 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009961 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009962 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009963 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009964 if (pQueueFamilyProperties)
9965 {
9966 if (!(check_pQueueFamilyProperties))
9967 {
9968 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
9969 }
9970 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9971 {
9972 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9973 }
9974 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08009975 if (pQueueFamilyProperties)
9976 {
9977 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9978 {
9979 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9980 }
9981 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009982 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009983}
9984
9985void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
9986 VkPhysicalDevice physicalDevice,
9987 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
9988{
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009989 mImpl->log("start vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009990 auto stream = mImpl->stream();
9991 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009992 auto resources = mImpl->resources();
9993 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009994 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009995 VkPhysicalDevice local_physicalDevice;
9996 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009997 countingStream->rewind();
9998 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009999 uint64_t cgen_var_695;
10000 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
10001 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010002 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10003 }
10004 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10005 countingStream->rewind();
10006 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
10007 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
10008 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010009 uint64_t cgen_var_696;
10010 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
10011 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010012 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10013 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010014 if (pMemoryProperties)
10015 {
10016 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10017 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010018 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010019}
10020
10021void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
10022 VkPhysicalDevice physicalDevice,
10023 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
10024 uint32_t* pPropertyCount,
10025 VkSparseImageFormatProperties2* pProperties)
10026{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010027 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010028 auto stream = mImpl->stream();
10029 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010030 auto resources = mImpl->resources();
10031 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010032 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010033 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010034 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010035 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010036 local_pFormatInfo = nullptr;
10037 if (pFormatInfo)
10038 {
10039 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
10040 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
10041 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010042 if (local_pFormatInfo)
10043 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010044 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010045 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010046 countingStream->rewind();
10047 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010048 uint64_t cgen_var_697;
10049 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
10050 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010051 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010052 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010053 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pPropertyCount;
10054 countingStream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010055 if (pPropertyCount)
10056 {
10057 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10058 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010059 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010060 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pProperties;
10061 countingStream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010062 if (pProperties)
10063 {
10064 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10065 {
10066 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
10067 }
10068 }
10069 }
10070 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10071 countingStream->rewind();
10072 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
10073 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
10074 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010075 uint64_t cgen_var_700;
10076 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
10077 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010078 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010079 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010080 uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pPropertyCount;
10081 stream->putBe64(cgen_var_701);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010082 if (pPropertyCount)
10083 {
10084 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10085 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010086 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010087 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pProperties;
10088 stream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010089 if (pProperties)
10090 {
10091 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10092 {
10093 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10094 }
10095 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010096 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010097 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010098 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010099 if (pPropertyCount)
10100 {
10101 if (!(check_pPropertyCount))
10102 {
10103 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10104 }
10105 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10106 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010107 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010108 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010109 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010110 if (pProperties)
10111 {
10112 if (!(check_pProperties))
10113 {
10114 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10115 }
10116 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10117 {
10118 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10119 }
10120 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010121 if (pProperties)
10122 {
10123 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10124 {
10125 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
10126 }
10127 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010128 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010129}
10130
10131void VkEncoder::vkTrimCommandPool(
10132 VkDevice device,
10133 VkCommandPool commandPool,
10134 VkCommandPoolTrimFlags flags)
10135{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010136 mImpl->log("start vkTrimCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010137 auto stream = mImpl->stream();
10138 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010139 auto resources = mImpl->resources();
10140 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010141 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010142 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010143 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010144 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010145 local_device = device;
10146 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010147 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010148 countingStream->rewind();
10149 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010150 uint64_t cgen_var_705;
10151 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_705, 1);
10152 countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
10153 uint64_t cgen_var_706;
10154 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_706, 1);
10155 countingStream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010156 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010157 }
10158 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10159 countingStream->rewind();
10160 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
10161 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
10162 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010163 uint64_t cgen_var_707;
10164 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_707, 1);
10165 stream->write((uint64_t*)&cgen_var_707, 1 * 8);
10166 uint64_t cgen_var_708;
10167 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_708, 1);
10168 stream->write((uint64_t*)&cgen_var_708, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010169 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010170 mImpl->log("finish vkTrimCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010171}
10172
10173void VkEncoder::vkGetDeviceQueue2(
10174 VkDevice device,
10175 const VkDeviceQueueInfo2* pQueueInfo,
10176 VkQueue* pQueue)
10177{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010178 mImpl->log("start vkGetDeviceQueue2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010179 auto stream = mImpl->stream();
10180 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010181 auto resources = mImpl->resources();
10182 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010183 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010184 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010185 VkDeviceQueueInfo2* local_pQueueInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010186 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010187 local_pQueueInfo = nullptr;
10188 if (pQueueInfo)
10189 {
10190 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
10191 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
10192 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010193 if (local_pQueueInfo)
10194 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010195 transform_tohost_VkDeviceQueueInfo2(mImpl->resources(), (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010196 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010197 countingStream->rewind();
10198 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010199 uint64_t cgen_var_709;
10200 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_709, 1);
10201 countingStream->write((uint64_t*)&cgen_var_709, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010202 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010203 uint64_t cgen_var_710;
10204 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_710, 1);
10205 countingStream->write((uint64_t*)&cgen_var_710, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010206 }
10207 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10208 countingStream->rewind();
10209 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
10210 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
10211 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010212 uint64_t cgen_var_711;
10213 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_711, 1);
10214 stream->write((uint64_t*)&cgen_var_711, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010215 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -080010216 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010217 uint64_t cgen_var_712;
10218 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_712, 1);
10219 stream->write((uint64_t*)&cgen_var_712, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010220 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010221 uint64_t cgen_var_713;
10222 stream->read((uint64_t*)&cgen_var_713, 8);
10223 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_713, (VkQueue*)pQueue, 1);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010224 mImpl->log("finish vkGetDeviceQueue2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010225}
10226
10227VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
10228 VkDevice device,
10229 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
10230 const VkAllocationCallbacks* pAllocator,
10231 VkSamplerYcbcrConversion* pYcbcrConversion)
10232{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010233 mImpl->log("start vkCreateSamplerYcbcrConversion");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010234 auto stream = mImpl->stream();
10235 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010236 auto resources = mImpl->resources();
10237 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010238 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010239 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010240 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010241 VkAllocationCallbacks* local_pAllocator;
10242 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010243 local_pCreateInfo = nullptr;
10244 if (pCreateInfo)
10245 {
10246 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
10247 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
10248 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010249 local_pAllocator = nullptr;
10250 if (pAllocator)
10251 {
10252 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10253 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10254 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010255 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010256 if (local_pCreateInfo)
10257 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010258 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010259 }
10260 if (local_pAllocator)
10261 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010262 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010263 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010264 countingStream->rewind();
10265 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010266 uint64_t cgen_var_714;
10267 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_714, 1);
10268 countingStream->write((uint64_t*)&cgen_var_714, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010269 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010270 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010271 uint64_t cgen_var_715 = (uint64_t)(uintptr_t)local_pAllocator;
10272 countingStream->putBe64(cgen_var_715);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010273 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010274 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010275 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010276 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010277 uint64_t cgen_var_716;
10278 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_716, 1);
10279 countingStream->write((uint64_t*)&cgen_var_716, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010280 }
10281 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10282 countingStream->rewind();
10283 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
10284 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
10285 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010286 uint64_t cgen_var_717;
10287 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
10288 stream->write((uint64_t*)&cgen_var_717, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010289 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010290 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010291 uint64_t cgen_var_718 = (uint64_t)(uintptr_t)local_pAllocator;
10292 stream->putBe64(cgen_var_718);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010293 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010294 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010295 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010296 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010297 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010298 uint64_t cgen_var_719;
10299 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_719, 1);
10300 stream->write((uint64_t*)&cgen_var_719, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010301 stream->setHandleMapping(resources->unwrapMapping());
10302 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010303 uint64_t cgen_var_720;
10304 stream->read((uint64_t*)&cgen_var_720, 8);
10305 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_720, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010306 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010307 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
10308 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010309 countingStream->clearPool();
10310 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010311 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010312 mImpl->log("finish vkCreateSamplerYcbcrConversion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010313 return vkCreateSamplerYcbcrConversion_VkResult_return;
10314}
10315
10316void VkEncoder::vkDestroySamplerYcbcrConversion(
10317 VkDevice device,
10318 VkSamplerYcbcrConversion ycbcrConversion,
10319 const VkAllocationCallbacks* pAllocator)
10320{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010321 mImpl->log("start vkDestroySamplerYcbcrConversion");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010322 auto stream = mImpl->stream();
10323 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010324 auto resources = mImpl->resources();
10325 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010326 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010327 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010328 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010329 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010330 local_device = device;
10331 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010332 local_pAllocator = nullptr;
10333 if (pAllocator)
10334 {
10335 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10336 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10337 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010338 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010339 if (local_pAllocator)
10340 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010341 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010342 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010343 countingStream->rewind();
10344 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010345 uint64_t cgen_var_721;
10346 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
10347 countingStream->write((uint64_t*)&cgen_var_721, 1 * 8);
10348 uint64_t cgen_var_722;
10349 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_722, 1);
10350 countingStream->write((uint64_t*)&cgen_var_722, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010351 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010352 uint64_t cgen_var_723 = (uint64_t)(uintptr_t)local_pAllocator;
10353 countingStream->putBe64(cgen_var_723);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010354 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010355 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010356 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010357 }
10358 }
10359 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10360 countingStream->rewind();
10361 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
10362 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
10363 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010364 uint64_t cgen_var_724;
10365 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
10366 stream->write((uint64_t*)&cgen_var_724, 1 * 8);
10367 uint64_t cgen_var_725;
10368 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_725, 1);
10369 stream->write((uint64_t*)&cgen_var_725, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010370 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010371 uint64_t cgen_var_726 = (uint64_t)(uintptr_t)local_pAllocator;
10372 stream->putBe64(cgen_var_726);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010373 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010374 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010375 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010376 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010377 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010378 mImpl->log("finish vkDestroySamplerYcbcrConversion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010379}
10380
10381VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
10382 VkDevice device,
10383 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
10384 const VkAllocationCallbacks* pAllocator,
10385 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
10386{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010387 mImpl->log("start vkCreateDescriptorUpdateTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010388 auto stream = mImpl->stream();
10389 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010390 auto resources = mImpl->resources();
10391 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010392 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010393 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010394 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010395 VkAllocationCallbacks* local_pAllocator;
10396 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010397 local_pCreateInfo = nullptr;
10398 if (pCreateInfo)
10399 {
10400 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
10401 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
10402 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010403 local_pAllocator = nullptr;
10404 if (pAllocator)
10405 {
10406 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10407 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10408 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010409 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010410 if (local_pCreateInfo)
10411 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010412 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010413 }
10414 if (local_pAllocator)
10415 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010416 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010417 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010418 countingStream->rewind();
10419 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010420 uint64_t cgen_var_727;
10421 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
10422 countingStream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010423 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010424 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010425 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
10426 countingStream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010427 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010428 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010429 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010430 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010431 uint64_t cgen_var_729;
10432 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_729, 1);
10433 countingStream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010434 }
10435 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10436 countingStream->rewind();
10437 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
10438 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
10439 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010440 uint64_t cgen_var_730;
10441 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_730, 1);
10442 stream->write((uint64_t*)&cgen_var_730, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010443 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010444 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010445 uint64_t cgen_var_731 = (uint64_t)(uintptr_t)local_pAllocator;
10446 stream->putBe64(cgen_var_731);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010447 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010448 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010449 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010450 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010451 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010452 uint64_t cgen_var_732;
10453 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_732, 1);
10454 stream->write((uint64_t*)&cgen_var_732, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010455 stream->setHandleMapping(resources->unwrapMapping());
10456 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010457 uint64_t cgen_var_733;
10458 stream->read((uint64_t*)&cgen_var_733, 8);
10459 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_733, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010460 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010461 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
10462 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010463 countingStream->clearPool();
10464 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010465 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010466 mImpl->log("finish vkCreateDescriptorUpdateTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010467 return vkCreateDescriptorUpdateTemplate_VkResult_return;
10468}
10469
10470void VkEncoder::vkDestroyDescriptorUpdateTemplate(
10471 VkDevice device,
10472 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
10473 const VkAllocationCallbacks* pAllocator)
10474{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010475 mImpl->log("start vkDestroyDescriptorUpdateTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010476 auto stream = mImpl->stream();
10477 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010478 auto resources = mImpl->resources();
10479 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010480 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010481 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010482 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010483 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010484 local_device = device;
10485 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010486 local_pAllocator = nullptr;
10487 if (pAllocator)
10488 {
10489 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10490 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10491 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010492 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010493 if (local_pAllocator)
10494 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010495 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010496 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010497 countingStream->rewind();
10498 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010499 uint64_t cgen_var_734;
10500 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
10501 countingStream->write((uint64_t*)&cgen_var_734, 1 * 8);
10502 uint64_t cgen_var_735;
10503 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_735, 1);
10504 countingStream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010505 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010506 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
10507 countingStream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010508 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010509 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010510 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010511 }
10512 }
10513 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10514 countingStream->rewind();
10515 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
10516 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
10517 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010518 uint64_t cgen_var_737;
10519 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
10520 stream->write((uint64_t*)&cgen_var_737, 1 * 8);
10521 uint64_t cgen_var_738;
10522 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_738, 1);
10523 stream->write((uint64_t*)&cgen_var_738, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010524 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010525 uint64_t cgen_var_739 = (uint64_t)(uintptr_t)local_pAllocator;
10526 stream->putBe64(cgen_var_739);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010527 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010528 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010529 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010530 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010531 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010532 mImpl->log("finish vkDestroyDescriptorUpdateTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010533}
10534
10535void VkEncoder::vkUpdateDescriptorSetWithTemplate(
10536 VkDevice device,
10537 VkDescriptorSet descriptorSet,
10538 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
10539 const void* pData)
10540{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010541 mImpl->log("start vkUpdateDescriptorSetWithTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010542 auto stream = mImpl->stream();
10543 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010544 auto resources = mImpl->resources();
10545 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010546 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010547 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010548 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010549 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010550 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010551 local_device = device;
10552 local_descriptorSet = descriptorSet;
10553 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010554 local_pData = nullptr;
10555 if (pData)
10556 {
10557 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
10558 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010559 countingStream->rewind();
10560 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010561 uint64_t cgen_var_740;
10562 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
10563 countingStream->write((uint64_t*)&cgen_var_740, 1 * 8);
10564 uint64_t cgen_var_741;
10565 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_741, 1);
10566 countingStream->write((uint64_t*)&cgen_var_741, 1 * 8);
10567 uint64_t cgen_var_742;
10568 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_742, 1);
10569 countingStream->write((uint64_t*)&cgen_var_742, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010570 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010571 uint64_t cgen_var_743 = (uint64_t)(uintptr_t)local_pData;
10572 countingStream->putBe64(cgen_var_743);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010573 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010574 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010575 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010576 }
10577 }
10578 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10579 countingStream->rewind();
10580 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
10581 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
10582 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010583 uint64_t cgen_var_744;
10584 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
10585 stream->write((uint64_t*)&cgen_var_744, 1 * 8);
10586 uint64_t cgen_var_745;
10587 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_745, 1);
10588 stream->write((uint64_t*)&cgen_var_745, 1 * 8);
10589 uint64_t cgen_var_746;
10590 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_746, 1);
10591 stream->write((uint64_t*)&cgen_var_746, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010592 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010593 uint64_t cgen_var_747 = (uint64_t)(uintptr_t)local_pData;
10594 stream->putBe64(cgen_var_747);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010595 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010596 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010597 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010598 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010599 mImpl->log("finish vkUpdateDescriptorSetWithTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010600}
10601
10602void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
10603 VkPhysicalDevice physicalDevice,
10604 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
10605 VkExternalBufferProperties* pExternalBufferProperties)
10606{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010607 mImpl->log("start vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010608 auto stream = mImpl->stream();
10609 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010610 auto resources = mImpl->resources();
10611 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010612 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010613 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010614 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010615 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010616 local_pExternalBufferInfo = nullptr;
10617 if (pExternalBufferInfo)
10618 {
10619 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
10620 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
10621 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010622 if (local_pExternalBufferInfo)
10623 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010624 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010625 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010626 countingStream->rewind();
10627 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010628 uint64_t cgen_var_748;
10629 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_748, 1);
10630 countingStream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010631 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010632 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10633 }
10634 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10635 countingStream->rewind();
10636 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
10637 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
10638 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010639 uint64_t cgen_var_749;
10640 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_749, 1);
10641 stream->write((uint64_t*)&cgen_var_749, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010642 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010643 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
10644 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010645 if (pExternalBufferProperties)
10646 {
10647 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
10648 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010649 mImpl->log("finish vkGetPhysicalDeviceExternalBufferProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010650}
10651
10652void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
10653 VkPhysicalDevice physicalDevice,
10654 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
10655 VkExternalFenceProperties* pExternalFenceProperties)
10656{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010657 mImpl->log("start vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010658 auto stream = mImpl->stream();
10659 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010660 auto resources = mImpl->resources();
10661 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010663 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010664 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010665 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010666 local_pExternalFenceInfo = nullptr;
10667 if (pExternalFenceInfo)
10668 {
10669 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
10670 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
10671 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010672 if (local_pExternalFenceInfo)
10673 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010674 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010675 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010676 countingStream->rewind();
10677 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010678 uint64_t cgen_var_750;
10679 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_750, 1);
10680 countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010681 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010682 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10683 }
10684 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10685 countingStream->rewind();
10686 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
10687 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
10688 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010689 uint64_t cgen_var_751;
10690 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_751, 1);
10691 stream->write((uint64_t*)&cgen_var_751, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010692 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010693 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
10694 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010695 if (pExternalFenceProperties)
10696 {
10697 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
10698 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010699 mImpl->log("finish vkGetPhysicalDeviceExternalFenceProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010700}
10701
10702void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
10703 VkPhysicalDevice physicalDevice,
10704 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
10705 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
10706{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010707 mImpl->log("start vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010708 auto stream = mImpl->stream();
10709 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010710 auto resources = mImpl->resources();
10711 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010712 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010713 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010714 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010715 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010716 local_pExternalSemaphoreInfo = nullptr;
10717 if (pExternalSemaphoreInfo)
10718 {
10719 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
10720 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
10721 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010722 if (local_pExternalSemaphoreInfo)
10723 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010724 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010725 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010726 countingStream->rewind();
10727 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010728 uint64_t cgen_var_752;
10729 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_752, 1);
10730 countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010731 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010732 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10733 }
10734 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10735 countingStream->rewind();
10736 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
10737 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
10738 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010739 uint64_t cgen_var_753;
10740 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_753, 1);
10741 stream->write((uint64_t*)&cgen_var_753, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010742 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010743 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10744 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010745 if (pExternalSemaphoreProperties)
10746 {
10747 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
10748 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010749 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphoreProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010750}
10751
10752void VkEncoder::vkGetDescriptorSetLayoutSupport(
10753 VkDevice device,
10754 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
10755 VkDescriptorSetLayoutSupport* pSupport)
10756{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010757 mImpl->log("start vkGetDescriptorSetLayoutSupport");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010758 auto stream = mImpl->stream();
10759 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010760 auto resources = mImpl->resources();
10761 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010762 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010763 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010764 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010765 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010766 local_pCreateInfo = nullptr;
10767 if (pCreateInfo)
10768 {
10769 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
10770 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
10771 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010772 if (local_pCreateInfo)
10773 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010774 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010775 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010776 countingStream->rewind();
10777 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010778 uint64_t cgen_var_754;
10779 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
10780 countingStream->write((uint64_t*)&cgen_var_754, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010781 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010782 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
10783 }
10784 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10785 countingStream->rewind();
10786 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
10787 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
10788 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010789 uint64_t cgen_var_755;
10790 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_755, 1);
10791 stream->write((uint64_t*)&cgen_var_755, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010792 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010793 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
10794 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010795 if (pSupport)
10796 {
10797 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
10798 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010799 mImpl->log("finish vkGetDescriptorSetLayoutSupport");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010800}
10801
10802#endif
10803#ifdef VK_KHR_surface
10804void VkEncoder::vkDestroySurfaceKHR(
10805 VkInstance instance,
10806 VkSurfaceKHR surface,
10807 const VkAllocationCallbacks* pAllocator)
10808{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010809 mImpl->log("start vkDestroySurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010810 auto stream = mImpl->stream();
10811 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010812 auto resources = mImpl->resources();
10813 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010814 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010815 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010816 VkSurfaceKHR local_surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010817 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010818 local_instance = instance;
10819 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010820 local_pAllocator = nullptr;
10821 if (pAllocator)
10822 {
10823 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10824 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10825 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010826 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010827 if (local_pAllocator)
10828 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010829 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010830 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010831 countingStream->rewind();
10832 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010833 uint64_t cgen_var_756;
10834 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_756, 1);
10835 countingStream->write((uint64_t*)&cgen_var_756, 1 * 8);
10836 uint64_t cgen_var_757;
10837 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_757, 1);
10838 countingStream->write((uint64_t*)&cgen_var_757, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010839 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010840 uint64_t cgen_var_758 = (uint64_t)(uintptr_t)local_pAllocator;
10841 countingStream->putBe64(cgen_var_758);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010842 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010843 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010844 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010845 }
10846 }
10847 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10848 countingStream->rewind();
10849 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
10850 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
10851 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010852 uint64_t cgen_var_759;
10853 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_759, 1);
10854 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
10855 uint64_t cgen_var_760;
10856 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_760, 1);
10857 stream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010858 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010859 uint64_t cgen_var_761 = (uint64_t)(uintptr_t)local_pAllocator;
10860 stream->putBe64(cgen_var_761);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010861 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010862 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010863 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010864 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010865 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010866 mImpl->log("finish vkDestroySurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010867}
10868
10869VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
10870 VkPhysicalDevice physicalDevice,
10871 uint32_t queueFamilyIndex,
10872 VkSurfaceKHR surface,
10873 VkBool32* pSupported)
10874{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010875 mImpl->log("start vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010876 auto stream = mImpl->stream();
10877 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010878 auto resources = mImpl->resources();
10879 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010880 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010881 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010882 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010883 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010884 local_physicalDevice = physicalDevice;
10885 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010886 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010887 countingStream->rewind();
10888 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010889 uint64_t cgen_var_762;
10890 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
10891 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010892 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010893 uint64_t cgen_var_763;
10894 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_763, 1);
10895 countingStream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010896 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
10897 }
10898 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10899 countingStream->rewind();
10900 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
10901 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
10902 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010903 uint64_t cgen_var_764;
10904 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_764, 1);
10905 stream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010906 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010907 uint64_t cgen_var_765;
10908 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_765, 1);
10909 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010910 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
10911 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
10912 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
10913 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010914 countingStream->clearPool();
10915 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010916 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010917 mImpl->log("finish vkGetPhysicalDeviceSurfaceSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010918 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
10919}
10920
10921VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
10922 VkPhysicalDevice physicalDevice,
10923 VkSurfaceKHR surface,
10924 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
10925{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010926 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010927 auto stream = mImpl->stream();
10928 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010929 auto resources = mImpl->resources();
10930 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010931 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010932 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010933 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010934 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010935 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010936 countingStream->rewind();
10937 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010938 uint64_t cgen_var_766;
10939 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_766, 1);
10940 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
10941 uint64_t cgen_var_767;
10942 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
10943 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010944 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
10945 }
10946 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10947 countingStream->rewind();
10948 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
10949 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
10950 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010951 uint64_t cgen_var_768;
10952 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_768, 1);
10953 stream->write((uint64_t*)&cgen_var_768, 1 * 8);
10954 uint64_t cgen_var_769;
10955 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_769, 1);
10956 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010957 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
10958 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010959 if (pSurfaceCapabilities)
10960 {
10961 transform_fromhost_VkSurfaceCapabilitiesKHR(mImpl->resources(), (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
10962 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010963 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
10964 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010965 countingStream->clearPool();
10966 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010967 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010968 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010969 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
10970}
10971
10972VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
10973 VkPhysicalDevice physicalDevice,
10974 VkSurfaceKHR surface,
10975 uint32_t* pSurfaceFormatCount,
10976 VkSurfaceFormatKHR* pSurfaceFormats)
10977{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010978 mImpl->log("start vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010979 auto stream = mImpl->stream();
10980 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010981 auto resources = mImpl->resources();
10982 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010983 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010984 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010985 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010986 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010987 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010988 countingStream->rewind();
10989 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010990 uint64_t cgen_var_770;
10991 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_770, 1);
10992 countingStream->write((uint64_t*)&cgen_var_770, 1 * 8);
10993 uint64_t cgen_var_771;
10994 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_771, 1);
10995 countingStream->write((uint64_t*)&cgen_var_771, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010996 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010997 uint64_t cgen_var_772 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
10998 countingStream->putBe64(cgen_var_772);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010999 if (pSurfaceFormatCount)
11000 {
11001 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11002 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011003 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011004 uint64_t cgen_var_773 = (uint64_t)(uintptr_t)pSurfaceFormats;
11005 countingStream->putBe64(cgen_var_773);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011006 if (pSurfaceFormats)
11007 {
11008 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11009 {
11010 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11011 }
11012 }
11013 }
11014 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11015 countingStream->rewind();
11016 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
11017 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
11018 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011019 uint64_t cgen_var_774;
11020 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
11021 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
11022 uint64_t cgen_var_775;
11023 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
11024 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011025 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011026 uint64_t cgen_var_776 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11027 stream->putBe64(cgen_var_776);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011028 if (pSurfaceFormatCount)
11029 {
11030 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11031 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011032 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011033 uint64_t cgen_var_777 = (uint64_t)(uintptr_t)pSurfaceFormats;
11034 stream->putBe64(cgen_var_777);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011035 if (pSurfaceFormats)
11036 {
11037 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11038 {
11039 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11040 }
11041 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011042 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011043 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011044 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011045 if (pSurfaceFormatCount)
11046 {
11047 if (!(check_pSurfaceFormatCount))
11048 {
11049 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
11050 }
11051 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11052 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011053 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011054 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011055 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011056 if (pSurfaceFormats)
11057 {
11058 if (!(check_pSurfaceFormats))
11059 {
11060 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
11061 }
11062 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11063 {
11064 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11065 }
11066 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011067 if (pSurfaceFormats)
11068 {
11069 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11070 {
11071 transform_fromhost_VkSurfaceFormatKHR(mImpl->resources(), (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11072 }
11073 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011074 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
11075 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011076 countingStream->clearPool();
11077 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011078 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011079 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormatsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011080 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
11081}
11082
11083VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
11084 VkPhysicalDevice physicalDevice,
11085 VkSurfaceKHR surface,
11086 uint32_t* pPresentModeCount,
11087 VkPresentModeKHR* pPresentModes)
11088{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011089 mImpl->log("start vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011090 auto stream = mImpl->stream();
11091 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011092 auto resources = mImpl->resources();
11093 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011094 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011095 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011096 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011097 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011098 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011099 countingStream->rewind();
11100 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011101 uint64_t cgen_var_780;
11102 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
11103 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
11104 uint64_t cgen_var_781;
11105 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
11106 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011107 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011108 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pPresentModeCount;
11109 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011110 if (pPresentModeCount)
11111 {
11112 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11113 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011114 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011115 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pPresentModes;
11116 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011117 if (pPresentModes)
11118 {
11119 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11120 }
11121 }
11122 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11123 countingStream->rewind();
11124 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
11125 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
11126 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011127 uint64_t cgen_var_784;
11128 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
11129 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
11130 uint64_t cgen_var_785;
11131 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
11132 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011133 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011134 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pPresentModeCount;
11135 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011136 if (pPresentModeCount)
11137 {
11138 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11139 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011140 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011141 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pPresentModes;
11142 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011143 if (pPresentModes)
11144 {
11145 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11146 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011147 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011148 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011149 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011150 if (pPresentModeCount)
11151 {
11152 if (!(check_pPresentModeCount))
11153 {
11154 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
11155 }
11156 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11157 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011158 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011159 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011160 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011161 if (pPresentModes)
11162 {
11163 if (!(check_pPresentModes))
11164 {
11165 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
11166 }
11167 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11168 }
11169 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11170 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011171 countingStream->clearPool();
11172 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011173 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011174 mImpl->log("finish vkGetPhysicalDeviceSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011175 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
11176}
11177
11178#endif
11179#ifdef VK_KHR_swapchain
11180VkResult VkEncoder::vkCreateSwapchainKHR(
11181 VkDevice device,
11182 const VkSwapchainCreateInfoKHR* pCreateInfo,
11183 const VkAllocationCallbacks* pAllocator,
11184 VkSwapchainKHR* pSwapchain)
11185{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011186 mImpl->log("start vkCreateSwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011187 auto stream = mImpl->stream();
11188 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011189 auto resources = mImpl->resources();
11190 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011191 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011192 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011193 VkSwapchainCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011194 VkAllocationCallbacks* local_pAllocator;
11195 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011196 local_pCreateInfo = nullptr;
11197 if (pCreateInfo)
11198 {
11199 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
11200 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
11201 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011202 local_pAllocator = nullptr;
11203 if (pAllocator)
11204 {
11205 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11206 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11207 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011208 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011209 if (local_pCreateInfo)
11210 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011211 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011212 }
11213 if (local_pAllocator)
11214 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011215 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011216 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011217 countingStream->rewind();
11218 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011219 uint64_t cgen_var_790;
11220 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_790, 1);
11221 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011222 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011223 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011224 uint64_t cgen_var_791 = (uint64_t)(uintptr_t)local_pAllocator;
11225 countingStream->putBe64(cgen_var_791);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011226 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011227 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011228 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011229 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011230 uint64_t cgen_var_792;
11231 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_792, 1);
11232 countingStream->write((uint64_t*)&cgen_var_792, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011233 }
11234 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11235 countingStream->rewind();
11236 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
11237 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
11238 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011239 uint64_t cgen_var_793;
11240 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_793, 1);
11241 stream->write((uint64_t*)&cgen_var_793, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011242 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011243 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011244 uint64_t cgen_var_794 = (uint64_t)(uintptr_t)local_pAllocator;
11245 stream->putBe64(cgen_var_794);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011246 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011247 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011248 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011249 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011250 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011251 uint64_t cgen_var_795;
11252 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_795, 1);
11253 stream->write((uint64_t*)&cgen_var_795, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011254 stream->setHandleMapping(resources->unwrapMapping());
11255 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011256 uint64_t cgen_var_796;
11257 stream->read((uint64_t*)&cgen_var_796, 8);
11258 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_796, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011259 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011260 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
11261 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011262 countingStream->clearPool();
11263 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011264 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011265 mImpl->log("finish vkCreateSwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011266 return vkCreateSwapchainKHR_VkResult_return;
11267}
11268
11269void VkEncoder::vkDestroySwapchainKHR(
11270 VkDevice device,
11271 VkSwapchainKHR swapchain,
11272 const VkAllocationCallbacks* pAllocator)
11273{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011274 mImpl->log("start vkDestroySwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011275 auto stream = mImpl->stream();
11276 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011277 auto resources = mImpl->resources();
11278 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011279 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011280 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011281 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011282 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011283 local_device = device;
11284 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011285 local_pAllocator = nullptr;
11286 if (pAllocator)
11287 {
11288 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11289 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11290 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011291 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011292 if (local_pAllocator)
11293 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011294 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011295 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011296 countingStream->rewind();
11297 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011298 uint64_t cgen_var_797;
11299 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_797, 1);
11300 countingStream->write((uint64_t*)&cgen_var_797, 1 * 8);
11301 uint64_t cgen_var_798;
11302 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_798, 1);
11303 countingStream->write((uint64_t*)&cgen_var_798, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011304 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011305 uint64_t cgen_var_799 = (uint64_t)(uintptr_t)local_pAllocator;
11306 countingStream->putBe64(cgen_var_799);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011307 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011308 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011309 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011310 }
11311 }
11312 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11313 countingStream->rewind();
11314 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
11315 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
11316 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011317 uint64_t cgen_var_800;
11318 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
11319 stream->write((uint64_t*)&cgen_var_800, 1 * 8);
11320 uint64_t cgen_var_801;
11321 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_801, 1);
11322 stream->write((uint64_t*)&cgen_var_801, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011323 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011324 uint64_t cgen_var_802 = (uint64_t)(uintptr_t)local_pAllocator;
11325 stream->putBe64(cgen_var_802);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011326 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011327 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011328 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011329 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011330 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011331 mImpl->log("finish vkDestroySwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011332}
11333
11334VkResult VkEncoder::vkGetSwapchainImagesKHR(
11335 VkDevice device,
11336 VkSwapchainKHR swapchain,
11337 uint32_t* pSwapchainImageCount,
11338 VkImage* pSwapchainImages)
11339{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011340 mImpl->log("start vkGetSwapchainImagesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011341 auto stream = mImpl->stream();
11342 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011343 auto resources = mImpl->resources();
11344 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011345 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011346 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011347 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011348 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011349 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011350 countingStream->rewind();
11351 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011352 uint64_t cgen_var_803;
11353 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
11354 countingStream->write((uint64_t*)&cgen_var_803, 1 * 8);
11355 uint64_t cgen_var_804;
11356 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_804, 1);
11357 countingStream->write((uint64_t*)&cgen_var_804, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011358 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011359 uint64_t cgen_var_805 = (uint64_t)(uintptr_t)pSwapchainImageCount;
11360 countingStream->putBe64(cgen_var_805);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011361 if (pSwapchainImageCount)
11362 {
11363 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11364 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011365 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011366 uint64_t cgen_var_806 = (uint64_t)(uintptr_t)pSwapchainImages;
11367 countingStream->putBe64(cgen_var_806);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011368 if (pSwapchainImages)
11369 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011370 if ((*(pSwapchainImageCount)))
11371 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011372 uint64_t* cgen_var_807;
11373 countingStream->alloc((void**)&cgen_var_807, (*(pSwapchainImageCount)) * 8);
11374 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_807, (*(pSwapchainImageCount)));
11375 countingStream->write((uint64_t*)cgen_var_807, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011376 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011377 }
11378 }
11379 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11380 countingStream->rewind();
11381 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
11382 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
11383 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011384 uint64_t cgen_var_808;
11385 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_808, 1);
11386 stream->write((uint64_t*)&cgen_var_808, 1 * 8);
11387 uint64_t cgen_var_809;
11388 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_809, 1);
11389 stream->write((uint64_t*)&cgen_var_809, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011390 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011391 uint64_t cgen_var_810 = (uint64_t)(uintptr_t)pSwapchainImageCount;
11392 stream->putBe64(cgen_var_810);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011393 if (pSwapchainImageCount)
11394 {
11395 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11396 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011397 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011398 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011399 uint64_t cgen_var_811 = (uint64_t)(uintptr_t)pSwapchainImages;
11400 stream->putBe64(cgen_var_811);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011401 if (pSwapchainImages)
11402 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080011403 if ((*(pSwapchainImageCount)))
11404 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011405 uint64_t* cgen_var_812;
11406 stream->alloc((void**)&cgen_var_812, (*(pSwapchainImageCount)) * 8);
11407 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_812, (*(pSwapchainImageCount)));
11408 stream->write((uint64_t*)cgen_var_812, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011409 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011410 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011411 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011412 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011413 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011414 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011415 if (pSwapchainImageCount)
11416 {
11417 if (!(check_pSwapchainImageCount))
11418 {
11419 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
11420 }
11421 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
11422 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011423 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011424 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011425 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011426 if (pSwapchainImages)
11427 {
11428 if (!(check_pSwapchainImages))
11429 {
11430 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
11431 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011432 if ((*(pSwapchainImageCount)))
11433 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011434 uint64_t* cgen_var_815;
11435 stream->alloc((void**)&cgen_var_815, (*(pSwapchainImageCount)) * 8);
11436 stream->read((uint64_t*)cgen_var_815, (*(pSwapchainImageCount)) * 8);
11437 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_815, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011438 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011439 }
11440 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
11441 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011442 countingStream->clearPool();
11443 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011444 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011445 mImpl->log("finish vkGetSwapchainImagesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011446 return vkGetSwapchainImagesKHR_VkResult_return;
11447}
11448
11449VkResult VkEncoder::vkAcquireNextImageKHR(
11450 VkDevice device,
11451 VkSwapchainKHR swapchain,
11452 uint64_t timeout,
11453 VkSemaphore semaphore,
11454 VkFence fence,
11455 uint32_t* pImageIndex)
11456{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011457 mImpl->log("start vkAcquireNextImageKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011458 auto stream = mImpl->stream();
11459 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011460 auto resources = mImpl->resources();
11461 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011462 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011463 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011464 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011465 uint64_t local_timeout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011466 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011467 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011468 local_device = device;
11469 local_swapchain = swapchain;
11470 local_timeout = timeout;
11471 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011472 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011473 countingStream->rewind();
11474 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011475 uint64_t cgen_var_816;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011476 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_816, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011477 countingStream->write((uint64_t*)&cgen_var_816, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011478 uint64_t cgen_var_817;
11479 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_817, 1);
11480 countingStream->write((uint64_t*)&cgen_var_817, 1 * 8);
11481 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
11482 uint64_t cgen_var_818;
11483 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_818, 1);
11484 countingStream->write((uint64_t*)&cgen_var_818, 1 * 8);
11485 uint64_t cgen_var_819;
11486 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_819, 1);
11487 countingStream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011488 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11489 }
11490 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11491 countingStream->rewind();
11492 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
11493 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
11494 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011495 uint64_t cgen_var_820;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011496 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_820, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080011497 stream->write((uint64_t*)&cgen_var_820, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011498 uint64_t cgen_var_821;
11499 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_821, 1);
11500 stream->write((uint64_t*)&cgen_var_821, 1 * 8);
11501 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
11502 uint64_t cgen_var_822;
11503 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_822, 1);
11504 stream->write((uint64_t*)&cgen_var_822, 1 * 8);
11505 uint64_t cgen_var_823;
11506 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_823, 1);
11507 stream->write((uint64_t*)&cgen_var_823, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011508 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11509 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
11510 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
11511 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011512 countingStream->clearPool();
11513 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011514 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011515 mImpl->log("finish vkAcquireNextImageKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011516 return vkAcquireNextImageKHR_VkResult_return;
11517}
11518
11519VkResult VkEncoder::vkQueuePresentKHR(
11520 VkQueue queue,
11521 const VkPresentInfoKHR* pPresentInfo)
11522{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011523 mImpl->log("start vkQueuePresentKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011524 auto stream = mImpl->stream();
11525 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011526 auto resources = mImpl->resources();
11527 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011528 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011529 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011530 VkPresentInfoKHR* local_pPresentInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011531 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011532 local_pPresentInfo = nullptr;
11533 if (pPresentInfo)
11534 {
11535 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
11536 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
11537 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011538 if (local_pPresentInfo)
11539 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011540 transform_tohost_VkPresentInfoKHR(mImpl->resources(), (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011541 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011542 countingStream->rewind();
11543 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011544 uint64_t cgen_var_824;
11545 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_824, 1);
11546 countingStream->write((uint64_t*)&cgen_var_824, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011547 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011548 }
11549 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11550 countingStream->rewind();
11551 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
11552 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
11553 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011554 uint64_t cgen_var_825;
11555 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_825, 1);
11556 stream->write((uint64_t*)&cgen_var_825, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011557 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011558 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
11559 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011560 countingStream->clearPool();
11561 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011562 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011563 mImpl->log("finish vkQueuePresentKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011564 return vkQueuePresentKHR_VkResult_return;
11565}
11566
11567VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
11568 VkDevice device,
11569 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
11570{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011571 mImpl->log("start vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011572 auto stream = mImpl->stream();
11573 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011574 auto resources = mImpl->resources();
11575 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011576 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011577 VkDevice local_device;
11578 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011579 countingStream->rewind();
11580 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011581 uint64_t cgen_var_826;
11582 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
11583 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011584 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11585 }
11586 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11587 countingStream->rewind();
11588 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
11589 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
11590 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011591 uint64_t cgen_var_827;
11592 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_827, 1);
11593 stream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011594 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11595 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011596 if (pDeviceGroupPresentCapabilities)
11597 {
11598 transform_fromhost_VkDeviceGroupPresentCapabilitiesKHR(mImpl->resources(), (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
11599 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011600 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
11601 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011602 countingStream->clearPool();
11603 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011604 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011605 mImpl->log("finish vkGetDeviceGroupPresentCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011606 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
11607}
11608
11609VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
11610 VkDevice device,
11611 VkSurfaceKHR surface,
11612 VkDeviceGroupPresentModeFlagsKHR* pModes)
11613{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011614 mImpl->log("start vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011615 auto stream = mImpl->stream();
11616 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011617 auto resources = mImpl->resources();
11618 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011619 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011620 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011621 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011622 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011623 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011624 countingStream->rewind();
11625 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011626 uint64_t cgen_var_828;
11627 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_828, 1);
11628 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
11629 uint64_t cgen_var_829;
11630 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_829, 1);
11631 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011632 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011633 uint64_t cgen_var_830 = (uint64_t)(uintptr_t)pModes;
11634 countingStream->putBe64(cgen_var_830);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011635 if (pModes)
11636 {
11637 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11638 }
11639 }
11640 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11641 countingStream->rewind();
11642 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
11643 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
11644 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011645 uint64_t cgen_var_831;
11646 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_831, 1);
11647 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
11648 uint64_t cgen_var_832;
11649 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_832, 1);
11650 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011651 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011652 uint64_t cgen_var_833 = (uint64_t)(uintptr_t)pModes;
11653 stream->putBe64(cgen_var_833);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011654 if (pModes)
11655 {
11656 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11657 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011658 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011659 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011660 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011661 if (pModes)
11662 {
11663 if (!(check_pModes))
11664 {
11665 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
11666 }
11667 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
11668 }
11669 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11670 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011671 countingStream->clearPool();
11672 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011673 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011674 mImpl->log("finish vkGetDeviceGroupSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011675 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
11676}
11677
11678VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
11679 VkPhysicalDevice physicalDevice,
11680 VkSurfaceKHR surface,
11681 uint32_t* pRectCount,
11682 VkRect2D* pRects)
11683{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011684 mImpl->log("start vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011685 auto stream = mImpl->stream();
11686 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011687 auto resources = mImpl->resources();
11688 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011689 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011690 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011691 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011692 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011693 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011694 countingStream->rewind();
11695 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011696 uint64_t cgen_var_835;
11697 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_835, 1);
11698 countingStream->write((uint64_t*)&cgen_var_835, 1 * 8);
11699 uint64_t cgen_var_836;
11700 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_836, 1);
11701 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011702 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011703 uint64_t cgen_var_837 = (uint64_t)(uintptr_t)pRectCount;
11704 countingStream->putBe64(cgen_var_837);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011705 if (pRectCount)
11706 {
11707 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11708 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011709 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011710 uint64_t cgen_var_838 = (uint64_t)(uintptr_t)pRects;
11711 countingStream->putBe64(cgen_var_838);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011712 if (pRects)
11713 {
11714 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11715 {
11716 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
11717 }
11718 }
11719 }
11720 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11721 countingStream->rewind();
11722 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
11723 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
11724 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011725 uint64_t cgen_var_839;
11726 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_839, 1);
11727 stream->write((uint64_t*)&cgen_var_839, 1 * 8);
11728 uint64_t cgen_var_840;
11729 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_840, 1);
11730 stream->write((uint64_t*)&cgen_var_840, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011731 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011732 uint64_t cgen_var_841 = (uint64_t)(uintptr_t)pRectCount;
11733 stream->putBe64(cgen_var_841);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011734 if (pRectCount)
11735 {
11736 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
11737 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011738 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011739 uint64_t cgen_var_842 = (uint64_t)(uintptr_t)pRects;
11740 stream->putBe64(cgen_var_842);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011741 if (pRects)
11742 {
11743 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11744 {
11745 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11746 }
11747 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011748 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011749 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011750 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011751 if (pRectCount)
11752 {
11753 if (!(check_pRectCount))
11754 {
11755 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
11756 }
11757 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
11758 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011759 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011760 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011761 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011762 if (pRects)
11763 {
11764 if (!(check_pRects))
11765 {
11766 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
11767 }
11768 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11769 {
11770 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
11771 }
11772 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011773 if (pRects)
11774 {
11775 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
11776 {
11777 transform_fromhost_VkRect2D(mImpl->resources(), (VkRect2D*)(pRects + i));
11778 }
11779 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011780 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
11781 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011782 countingStream->clearPool();
11783 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011784 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011785 mImpl->log("finish vkGetPhysicalDevicePresentRectanglesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011786 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
11787}
11788
11789VkResult VkEncoder::vkAcquireNextImage2KHR(
11790 VkDevice device,
11791 const VkAcquireNextImageInfoKHR* pAcquireInfo,
11792 uint32_t* pImageIndex)
11793{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011794 mImpl->log("start vkAcquireNextImage2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011795 auto stream = mImpl->stream();
11796 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011797 auto resources = mImpl->resources();
11798 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011799 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011800 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011801 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011802 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011803 local_pAcquireInfo = nullptr;
11804 if (pAcquireInfo)
11805 {
11806 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
11807 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
11808 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011809 if (local_pAcquireInfo)
11810 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011811 transform_tohost_VkAcquireNextImageInfoKHR(mImpl->resources(), (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011812 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011813 countingStream->rewind();
11814 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011815 uint64_t cgen_var_845;
11816 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_845, 1);
11817 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011818 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011819 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11820 }
11821 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11822 countingStream->rewind();
11823 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
11824 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
11825 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011826 uint64_t cgen_var_846;
11827 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_846, 1);
11828 stream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011829 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011830 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
11831 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
11832 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
11833 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011834 countingStream->clearPool();
11835 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011836 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011837 mImpl->log("finish vkAcquireNextImage2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011838 return vkAcquireNextImage2KHR_VkResult_return;
11839}
11840
11841#endif
11842#ifdef VK_KHR_display
11843VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
11844 VkPhysicalDevice physicalDevice,
11845 uint32_t* pPropertyCount,
11846 VkDisplayPropertiesKHR* pProperties)
11847{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011848 mImpl->log("start vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011849 auto stream = mImpl->stream();
11850 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011851 auto resources = mImpl->resources();
11852 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011853 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011854 VkPhysicalDevice local_physicalDevice;
11855 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011856 countingStream->rewind();
11857 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011858 uint64_t cgen_var_847;
11859 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_847, 1);
11860 countingStream->write((uint64_t*)&cgen_var_847, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011861 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011862 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pPropertyCount;
11863 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011864 if (pPropertyCount)
11865 {
11866 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11867 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011868 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011869 uint64_t cgen_var_849 = (uint64_t)(uintptr_t)pProperties;
11870 countingStream->putBe64(cgen_var_849);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011871 if (pProperties)
11872 {
11873 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11874 {
11875 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
11876 }
11877 }
11878 }
11879 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11880 countingStream->rewind();
11881 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
11882 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
11883 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011884 uint64_t cgen_var_850;
11885 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_850, 1);
11886 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011887 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011888 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pPropertyCount;
11889 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011890 if (pPropertyCount)
11891 {
11892 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11893 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011894 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011895 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pProperties;
11896 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011897 if (pProperties)
11898 {
11899 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11900 {
11901 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
11902 }
11903 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011904 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011905 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011906 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011907 if (pPropertyCount)
11908 {
11909 if (!(check_pPropertyCount))
11910 {
11911 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11912 }
11913 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11914 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011915 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011916 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011917 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011918 if (pProperties)
11919 {
11920 if (!(check_pProperties))
11921 {
11922 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11923 }
11924 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11925 {
11926 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
11927 }
11928 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011929 if (pProperties)
11930 {
11931 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11932 {
11933 transform_fromhost_VkDisplayPropertiesKHR(mImpl->resources(), (VkDisplayPropertiesKHR*)(pProperties + i));
11934 }
11935 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011936 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
11937 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011938 countingStream->clearPool();
11939 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011940 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011941 mImpl->log("finish vkGetPhysicalDeviceDisplayPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011942 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
11943}
11944
11945VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
11946 VkPhysicalDevice physicalDevice,
11947 uint32_t* pPropertyCount,
11948 VkDisplayPlanePropertiesKHR* pProperties)
11949{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011950 mImpl->log("start vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011951 auto stream = mImpl->stream();
11952 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011953 auto resources = mImpl->resources();
11954 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011955 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011956 VkPhysicalDevice local_physicalDevice;
11957 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011958 countingStream->rewind();
11959 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011960 uint64_t cgen_var_855;
11961 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_855, 1);
11962 countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011963 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011964 uint64_t cgen_var_856 = (uint64_t)(uintptr_t)pPropertyCount;
11965 countingStream->putBe64(cgen_var_856);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011966 if (pPropertyCount)
11967 {
11968 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11969 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011970 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011971 uint64_t cgen_var_857 = (uint64_t)(uintptr_t)pProperties;
11972 countingStream->putBe64(cgen_var_857);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011973 if (pProperties)
11974 {
11975 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11976 {
11977 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
11978 }
11979 }
11980 }
11981 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11982 countingStream->rewind();
11983 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
11984 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
11985 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011986 uint64_t cgen_var_858;
11987 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_858, 1);
11988 stream->write((uint64_t*)&cgen_var_858, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011989 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011990 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pPropertyCount;
11991 stream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011992 if (pPropertyCount)
11993 {
11994 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11995 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011996 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011997 uint64_t cgen_var_860 = (uint64_t)(uintptr_t)pProperties;
11998 stream->putBe64(cgen_var_860);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011999 if (pProperties)
12000 {
12001 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12002 {
12003 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12004 }
12005 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012006 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012007 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012008 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012009 if (pPropertyCount)
12010 {
12011 if (!(check_pPropertyCount))
12012 {
12013 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12014 }
12015 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12016 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012017 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012018 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012019 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012020 if (pProperties)
12021 {
12022 if (!(check_pProperties))
12023 {
12024 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12025 }
12026 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12027 {
12028 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12029 }
12030 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012031 if (pProperties)
12032 {
12033 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12034 {
12035 transform_fromhost_VkDisplayPlanePropertiesKHR(mImpl->resources(), (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12036 }
12037 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012038 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
12039 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012040 countingStream->clearPool();
12041 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012042 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012043 mImpl->log("finish vkGetPhysicalDeviceDisplayPlanePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012044 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
12045}
12046
12047VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
12048 VkPhysicalDevice physicalDevice,
12049 uint32_t planeIndex,
12050 uint32_t* pDisplayCount,
12051 VkDisplayKHR* pDisplays)
12052{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012053 mImpl->log("start vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012054 auto stream = mImpl->stream();
12055 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012056 auto resources = mImpl->resources();
12057 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012058 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012059 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012060 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012061 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012062 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012063 countingStream->rewind();
12064 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012065 uint64_t cgen_var_863;
12066 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_863, 1);
12067 countingStream->write((uint64_t*)&cgen_var_863, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012068 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012069 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012070 uint64_t cgen_var_864 = (uint64_t)(uintptr_t)pDisplayCount;
12071 countingStream->putBe64(cgen_var_864);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012072 if (pDisplayCount)
12073 {
12074 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12075 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012076 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012077 uint64_t cgen_var_865 = (uint64_t)(uintptr_t)pDisplays;
12078 countingStream->putBe64(cgen_var_865);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012079 if (pDisplays)
12080 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012081 if ((*(pDisplayCount)))
12082 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012083 uint64_t* cgen_var_866;
12084 countingStream->alloc((void**)&cgen_var_866, (*(pDisplayCount)) * 8);
12085 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_866, (*(pDisplayCount)));
12086 countingStream->write((uint64_t*)cgen_var_866, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012087 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012088 }
12089 }
12090 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12091 countingStream->rewind();
12092 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
12093 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
12094 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012095 uint64_t cgen_var_867;
12096 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_867, 1);
12097 stream->write((uint64_t*)&cgen_var_867, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012098 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012099 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012100 uint64_t cgen_var_868 = (uint64_t)(uintptr_t)pDisplayCount;
12101 stream->putBe64(cgen_var_868);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012102 if (pDisplayCount)
12103 {
12104 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12105 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012106 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012107 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012108 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pDisplays;
12109 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012110 if (pDisplays)
12111 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012112 if ((*(pDisplayCount)))
12113 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012114 uint64_t* cgen_var_870;
12115 stream->alloc((void**)&cgen_var_870, (*(pDisplayCount)) * 8);
12116 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_870, (*(pDisplayCount)));
12117 stream->write((uint64_t*)cgen_var_870, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012118 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012119 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012120 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012121 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012122 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012123 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012124 if (pDisplayCount)
12125 {
12126 if (!(check_pDisplayCount))
12127 {
12128 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
12129 }
12130 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
12131 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012132 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012133 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012134 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012135 if (pDisplays)
12136 {
12137 if (!(check_pDisplays))
12138 {
12139 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
12140 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012141 if ((*(pDisplayCount)))
12142 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012143 uint64_t* cgen_var_873;
12144 stream->alloc((void**)&cgen_var_873, (*(pDisplayCount)) * 8);
12145 stream->read((uint64_t*)cgen_var_873, (*(pDisplayCount)) * 8);
12146 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_873, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012147 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012148 }
12149 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
12150 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012151 countingStream->clearPool();
12152 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012153 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012154 mImpl->log("finish vkGetDisplayPlaneSupportedDisplaysKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012155 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
12156}
12157
12158VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
12159 VkPhysicalDevice physicalDevice,
12160 VkDisplayKHR display,
12161 uint32_t* pPropertyCount,
12162 VkDisplayModePropertiesKHR* pProperties)
12163{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012164 mImpl->log("start vkGetDisplayModePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012165 auto stream = mImpl->stream();
12166 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012167 auto resources = mImpl->resources();
12168 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012169 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012170 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012171 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012172 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012173 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012174 countingStream->rewind();
12175 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012176 uint64_t cgen_var_874;
12177 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_874, 1);
12178 countingStream->write((uint64_t*)&cgen_var_874, 1 * 8);
12179 uint64_t cgen_var_875;
12180 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_875, 1);
12181 countingStream->write((uint64_t*)&cgen_var_875, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012182 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012183 uint64_t cgen_var_876 = (uint64_t)(uintptr_t)pPropertyCount;
12184 countingStream->putBe64(cgen_var_876);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012185 if (pPropertyCount)
12186 {
12187 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12188 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012189 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012190 uint64_t cgen_var_877 = (uint64_t)(uintptr_t)pProperties;
12191 countingStream->putBe64(cgen_var_877);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012192 if (pProperties)
12193 {
12194 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12195 {
12196 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12197 }
12198 }
12199 }
12200 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12201 countingStream->rewind();
12202 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
12203 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
12204 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012205 uint64_t cgen_var_878;
12206 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_878, 1);
12207 stream->write((uint64_t*)&cgen_var_878, 1 * 8);
12208 uint64_t cgen_var_879;
12209 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_879, 1);
12210 stream->write((uint64_t*)&cgen_var_879, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012211 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012212 uint64_t cgen_var_880 = (uint64_t)(uintptr_t)pPropertyCount;
12213 stream->putBe64(cgen_var_880);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012214 if (pPropertyCount)
12215 {
12216 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12217 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012218 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012219 uint64_t cgen_var_881 = (uint64_t)(uintptr_t)pProperties;
12220 stream->putBe64(cgen_var_881);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012221 if (pProperties)
12222 {
12223 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12224 {
12225 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12226 }
12227 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012228 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012229 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012230 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012231 if (pPropertyCount)
12232 {
12233 if (!(check_pPropertyCount))
12234 {
12235 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12236 }
12237 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12238 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012239 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012240 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012241 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012242 if (pProperties)
12243 {
12244 if (!(check_pProperties))
12245 {
12246 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12247 }
12248 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12249 {
12250 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12251 }
12252 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012253 if (pProperties)
12254 {
12255 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12256 {
12257 transform_fromhost_VkDisplayModePropertiesKHR(mImpl->resources(), (VkDisplayModePropertiesKHR*)(pProperties + i));
12258 }
12259 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012260 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
12261 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012262 countingStream->clearPool();
12263 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012264 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012265 mImpl->log("finish vkGetDisplayModePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012266 return vkGetDisplayModePropertiesKHR_VkResult_return;
12267}
12268
12269VkResult VkEncoder::vkCreateDisplayModeKHR(
12270 VkPhysicalDevice physicalDevice,
12271 VkDisplayKHR display,
12272 const VkDisplayModeCreateInfoKHR* pCreateInfo,
12273 const VkAllocationCallbacks* pAllocator,
12274 VkDisplayModeKHR* pMode)
12275{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012276 mImpl->log("start vkCreateDisplayModeKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012277 auto stream = mImpl->stream();
12278 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012279 auto resources = mImpl->resources();
12280 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012281 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012282 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012283 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012284 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012285 VkAllocationCallbacks* local_pAllocator;
12286 local_physicalDevice = physicalDevice;
12287 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012288 local_pCreateInfo = nullptr;
12289 if (pCreateInfo)
12290 {
12291 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
12292 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
12293 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012294 local_pAllocator = nullptr;
12295 if (pAllocator)
12296 {
12297 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12298 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12299 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012300 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012301 if (local_pCreateInfo)
12302 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012303 transform_tohost_VkDisplayModeCreateInfoKHR(mImpl->resources(), (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012304 }
12305 if (local_pAllocator)
12306 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012307 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012308 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012309 countingStream->rewind();
12310 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012311 uint64_t cgen_var_884;
12312 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
12313 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
12314 uint64_t cgen_var_885;
12315 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
12316 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012317 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012318 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012319 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)local_pAllocator;
12320 countingStream->putBe64(cgen_var_886);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012321 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012322 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012323 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012324 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012325 uint64_t cgen_var_887;
12326 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_887, 1);
12327 countingStream->write((uint64_t*)&cgen_var_887, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012328 }
12329 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12330 countingStream->rewind();
12331 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
12332 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
12333 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -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 Yang71b596b2018-11-07 18:03:25 -080012340 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012341 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012342 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)local_pAllocator;
12343 stream->putBe64(cgen_var_890);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012344 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012345 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012346 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012347 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012348 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012349 uint64_t cgen_var_891;
12350 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_891, 1);
12351 stream->write((uint64_t*)&cgen_var_891, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012352 stream->setHandleMapping(resources->unwrapMapping());
12353 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012354 uint64_t cgen_var_892;
12355 stream->read((uint64_t*)&cgen_var_892, 8);
12356 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_892, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012357 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012358 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
12359 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012360 countingStream->clearPool();
12361 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012362 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012363 mImpl->log("finish vkCreateDisplayModeKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012364 return vkCreateDisplayModeKHR_VkResult_return;
12365}
12366
12367VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
12368 VkPhysicalDevice physicalDevice,
12369 VkDisplayModeKHR mode,
12370 uint32_t planeIndex,
12371 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
12372{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012373 mImpl->log("start vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012374 auto stream = mImpl->stream();
12375 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012376 auto resources = mImpl->resources();
12377 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012378 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012379 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012380 VkDisplayModeKHR local_mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012381 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012382 local_physicalDevice = physicalDevice;
12383 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012384 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012385 countingStream->rewind();
12386 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012387 uint64_t cgen_var_893;
12388 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_893, 1);
12389 countingStream->write((uint64_t*)&cgen_var_893, 1 * 8);
12390 uint64_t cgen_var_894;
12391 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_894, 1);
12392 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012393 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012394 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12395 }
12396 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12397 countingStream->rewind();
12398 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
12399 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
12400 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012401 uint64_t cgen_var_895;
12402 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_895, 1);
12403 stream->write((uint64_t*)&cgen_var_895, 1 * 8);
12404 uint64_t cgen_var_896;
12405 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_896, 1);
12406 stream->write((uint64_t*)&cgen_var_896, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012407 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012408 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12409 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080012410 if (pCapabilities)
12411 {
12412 transform_fromhost_VkDisplayPlaneCapabilitiesKHR(mImpl->resources(), (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
12413 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012414 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
12415 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012416 countingStream->clearPool();
12417 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012418 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012419 mImpl->log("finish vkGetDisplayPlaneCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012420 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
12421}
12422
12423VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
12424 VkInstance instance,
12425 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
12426 const VkAllocationCallbacks* pAllocator,
12427 VkSurfaceKHR* pSurface)
12428{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012429 mImpl->log("start vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012430 auto stream = mImpl->stream();
12431 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012432 auto resources = mImpl->resources();
12433 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012434 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012435 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012436 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012437 VkAllocationCallbacks* local_pAllocator;
12438 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012439 local_pCreateInfo = nullptr;
12440 if (pCreateInfo)
12441 {
12442 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
12443 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
12444 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012445 local_pAllocator = nullptr;
12446 if (pAllocator)
12447 {
12448 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12449 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12450 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012451 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012452 if (local_pCreateInfo)
12453 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012454 transform_tohost_VkDisplaySurfaceCreateInfoKHR(mImpl->resources(), (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012455 }
12456 if (local_pAllocator)
12457 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012458 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012459 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012460 countingStream->rewind();
12461 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012462 uint64_t cgen_var_897;
12463 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_897, 1);
12464 countingStream->write((uint64_t*)&cgen_var_897, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012465 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012466 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012467 uint64_t cgen_var_898 = (uint64_t)(uintptr_t)local_pAllocator;
12468 countingStream->putBe64(cgen_var_898);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012469 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012470 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012471 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012472 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012473 uint64_t cgen_var_899;
12474 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_899, 1);
12475 countingStream->write((uint64_t*)&cgen_var_899, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012476 }
12477 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12478 countingStream->rewind();
12479 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
12480 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
12481 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012482 uint64_t cgen_var_900;
12483 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_900, 1);
12484 stream->write((uint64_t*)&cgen_var_900, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012485 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012486 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012487 uint64_t cgen_var_901 = (uint64_t)(uintptr_t)local_pAllocator;
12488 stream->putBe64(cgen_var_901);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012489 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012490 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012491 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012492 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012493 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012494 uint64_t cgen_var_902;
12495 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_902, 1);
12496 stream->write((uint64_t*)&cgen_var_902, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012497 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012498 uint64_t cgen_var_903;
12499 stream->read((uint64_t*)&cgen_var_903, 8);
12500 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_903, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012501 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
12502 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012503 countingStream->clearPool();
12504 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012505 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012506 mImpl->log("finish vkCreateDisplayPlaneSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012507 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
12508}
12509
12510#endif
12511#ifdef VK_KHR_display_swapchain
12512VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
12513 VkDevice device,
12514 uint32_t swapchainCount,
12515 const VkSwapchainCreateInfoKHR* pCreateInfos,
12516 const VkAllocationCallbacks* pAllocator,
12517 VkSwapchainKHR* pSwapchains)
12518{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012519 mImpl->log("start vkCreateSharedSwapchainsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012520 auto stream = mImpl->stream();
12521 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012522 auto resources = mImpl->resources();
12523 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012524 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012525 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012526 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012527 VkSwapchainCreateInfoKHR* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012528 VkAllocationCallbacks* local_pAllocator;
12529 local_device = device;
12530 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012531 local_pCreateInfos = nullptr;
12532 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012533 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012534 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012535 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12536 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012537 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012538 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012539 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012540 local_pAllocator = nullptr;
12541 if (pAllocator)
12542 {
12543 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12544 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12545 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012546 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012547 if (local_pCreateInfos)
12548 {
12549 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12550 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012551 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012552 }
12553 }
12554 if (local_pAllocator)
12555 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012556 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012557 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012558 countingStream->rewind();
12559 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012560 uint64_t cgen_var_904;
12561 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_904, 1);
12562 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012563 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
12564 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12565 {
12566 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
12567 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012568 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012569 uint64_t cgen_var_905 = (uint64_t)(uintptr_t)local_pAllocator;
12570 countingStream->putBe64(cgen_var_905);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012571 if (local_pAllocator)
12572 {
12573 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012574 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012575 if (((swapchainCount)))
12576 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012577 uint64_t* cgen_var_906;
12578 countingStream->alloc((void**)&cgen_var_906, ((swapchainCount)) * 8);
12579 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_906, ((swapchainCount)));
12580 countingStream->write((uint64_t*)cgen_var_906, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012581 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012582 }
12583 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12584 countingStream->rewind();
12585 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
12586 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
12587 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012588 uint64_t cgen_var_907;
12589 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_907, 1);
12590 stream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012591 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012592 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
12593 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012594 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012595 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012596 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012597 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
12598 stream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012599 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012600 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012601 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012602 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012603 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080012604 if (((swapchainCount)))
12605 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012606 uint64_t* cgen_var_909;
12607 stream->alloc((void**)&cgen_var_909, ((swapchainCount)) * 8);
12608 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_909, ((swapchainCount)));
12609 stream->write((uint64_t*)cgen_var_909, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012610 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012611 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080012612 if (((swapchainCount)))
12613 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012614 uint64_t* cgen_var_910;
12615 stream->alloc((void**)&cgen_var_910, ((swapchainCount)) * 8);
12616 stream->read((uint64_t*)cgen_var_910, ((swapchainCount)) * 8);
12617 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_910, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012618 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012619 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
12620 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012621 countingStream->clearPool();
12622 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012623 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012624 mImpl->log("finish vkCreateSharedSwapchainsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012625 return vkCreateSharedSwapchainsKHR_VkResult_return;
12626}
12627
12628#endif
12629#ifdef VK_KHR_xlib_surface
12630VkResult VkEncoder::vkCreateXlibSurfaceKHR(
12631 VkInstance instance,
12632 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
12633 const VkAllocationCallbacks* pAllocator,
12634 VkSurfaceKHR* pSurface)
12635{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012636 mImpl->log("start vkCreateXlibSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012637 auto stream = mImpl->stream();
12638 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012639 auto resources = mImpl->resources();
12640 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012641 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012642 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012643 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012644 VkAllocationCallbacks* local_pAllocator;
12645 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012646 local_pCreateInfo = nullptr;
12647 if (pCreateInfo)
12648 {
12649 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
12650 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
12651 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012652 local_pAllocator = nullptr;
12653 if (pAllocator)
12654 {
12655 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12656 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12657 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012658 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012659 if (local_pCreateInfo)
12660 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012661 transform_tohost_VkXlibSurfaceCreateInfoKHR(mImpl->resources(), (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012662 }
12663 if (local_pAllocator)
12664 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012665 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012666 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012667 countingStream->rewind();
12668 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012669 uint64_t cgen_var_911;
12670 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_911, 1);
12671 countingStream->write((uint64_t*)&cgen_var_911, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012672 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012673 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012674 uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator;
12675 countingStream->putBe64(cgen_var_912);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012676 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012677 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012678 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012679 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012680 uint64_t cgen_var_913;
12681 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_913, 1);
12682 countingStream->write((uint64_t*)&cgen_var_913, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012683 }
12684 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12685 countingStream->rewind();
12686 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
12687 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
12688 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012689 uint64_t cgen_var_914;
12690 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_914, 1);
12691 stream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012692 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012693 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012694 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
12695 stream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012696 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012697 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012698 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012699 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012700 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012701 uint64_t cgen_var_916;
12702 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_916, 1);
12703 stream->write((uint64_t*)&cgen_var_916, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012704 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012705 uint64_t cgen_var_917;
12706 stream->read((uint64_t*)&cgen_var_917, 8);
12707 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_917, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012708 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
12709 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012710 countingStream->clearPool();
12711 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012712 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012713 mImpl->log("finish vkCreateXlibSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012714 return vkCreateXlibSurfaceKHR_VkResult_return;
12715}
12716
12717VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
12718 VkPhysicalDevice physicalDevice,
12719 uint32_t queueFamilyIndex,
12720 Display* dpy,
12721 VisualID visualID)
12722{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012723 mImpl->log("start vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012724 auto stream = mImpl->stream();
12725 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012726 auto resources = mImpl->resources();
12727 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012728 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012729 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012730 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012731 VisualID local_visualID;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012732 local_physicalDevice = physicalDevice;
12733 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012734 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012735 countingStream->rewind();
12736 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012737 uint64_t cgen_var_918;
12738 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_918, 1);
12739 countingStream->write((uint64_t*)&cgen_var_918, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012740 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012741 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012742 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012743 }
12744 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12745 countingStream->rewind();
12746 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
12747 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
12748 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012749 uint64_t cgen_var_919;
12750 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_919, 1);
12751 stream->write((uint64_t*)&cgen_var_919, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012752 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012753 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012754 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012755 stream->read((Display*)dpy, sizeof(Display));
12756 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12757 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012758 countingStream->clearPool();
12759 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012760 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012761 mImpl->log("finish vkGetPhysicalDeviceXlibPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012762 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
12763}
12764
12765#endif
12766#ifdef VK_KHR_xcb_surface
12767VkResult VkEncoder::vkCreateXcbSurfaceKHR(
12768 VkInstance instance,
12769 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
12770 const VkAllocationCallbacks* pAllocator,
12771 VkSurfaceKHR* pSurface)
12772{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012773 mImpl->log("start vkCreateXcbSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012774 auto stream = mImpl->stream();
12775 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012776 auto resources = mImpl->resources();
12777 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012778 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012779 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012780 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012781 VkAllocationCallbacks* local_pAllocator;
12782 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012783 local_pCreateInfo = nullptr;
12784 if (pCreateInfo)
12785 {
12786 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
12787 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
12788 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012789 local_pAllocator = nullptr;
12790 if (pAllocator)
12791 {
12792 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12793 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12794 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012795 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012796 if (local_pCreateInfo)
12797 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012798 transform_tohost_VkXcbSurfaceCreateInfoKHR(mImpl->resources(), (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012799 }
12800 if (local_pAllocator)
12801 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012802 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012803 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012804 countingStream->rewind();
12805 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012806 uint64_t cgen_var_920;
12807 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_920, 1);
12808 countingStream->write((uint64_t*)&cgen_var_920, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012809 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012810 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012811 uint64_t cgen_var_921 = (uint64_t)(uintptr_t)local_pAllocator;
12812 countingStream->putBe64(cgen_var_921);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012813 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012814 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012815 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012816 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012817 uint64_t cgen_var_922;
12818 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_922, 1);
12819 countingStream->write((uint64_t*)&cgen_var_922, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012820 }
12821 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12822 countingStream->rewind();
12823 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
12824 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
12825 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012826 uint64_t cgen_var_923;
12827 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_923, 1);
12828 stream->write((uint64_t*)&cgen_var_923, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012829 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012830 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012831 uint64_t cgen_var_924 = (uint64_t)(uintptr_t)local_pAllocator;
12832 stream->putBe64(cgen_var_924);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012833 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012834 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012835 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012836 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012837 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012838 uint64_t cgen_var_925;
12839 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_925, 1);
12840 stream->write((uint64_t*)&cgen_var_925, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012841 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012842 uint64_t cgen_var_926;
12843 stream->read((uint64_t*)&cgen_var_926, 8);
12844 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_926, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012845 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
12846 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012847 countingStream->clearPool();
12848 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012849 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012850 mImpl->log("finish vkCreateXcbSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012851 return vkCreateXcbSurfaceKHR_VkResult_return;
12852}
12853
12854VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
12855 VkPhysicalDevice physicalDevice,
12856 uint32_t queueFamilyIndex,
12857 xcb_connection_t* connection,
12858 xcb_visualid_t visual_id)
12859{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012860 mImpl->log("start vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012861 auto stream = mImpl->stream();
12862 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012863 auto resources = mImpl->resources();
12864 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012865 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012866 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012867 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012868 xcb_visualid_t local_visual_id;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012869 local_physicalDevice = physicalDevice;
12870 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012871 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012872 countingStream->rewind();
12873 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012874 uint64_t cgen_var_927;
12875 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_927, 1);
12876 countingStream->write((uint64_t*)&cgen_var_927, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012877 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012878 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012879 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012880 }
12881 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12882 countingStream->rewind();
12883 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
12884 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
12885 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012886 uint64_t cgen_var_928;
12887 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
12888 stream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012889 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012890 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012891 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012892 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
12893 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
12894 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012895 countingStream->clearPool();
12896 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012897 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012898 mImpl->log("finish vkGetPhysicalDeviceXcbPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012899 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
12900}
12901
12902#endif
12903#ifdef VK_KHR_wayland_surface
12904VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
12905 VkInstance instance,
12906 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
12907 const VkAllocationCallbacks* pAllocator,
12908 VkSurfaceKHR* pSurface)
12909{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012910 mImpl->log("start vkCreateWaylandSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012911 auto stream = mImpl->stream();
12912 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012913 auto resources = mImpl->resources();
12914 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012915 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012916 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012917 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012918 VkAllocationCallbacks* local_pAllocator;
12919 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012920 local_pCreateInfo = nullptr;
12921 if (pCreateInfo)
12922 {
12923 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
12924 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
12925 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012926 local_pAllocator = nullptr;
12927 if (pAllocator)
12928 {
12929 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12930 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12931 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012932 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080012933 if (local_pCreateInfo)
12934 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012935 transform_tohost_VkWaylandSurfaceCreateInfoKHR(mImpl->resources(), (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012936 }
12937 if (local_pAllocator)
12938 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012939 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012940 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012941 countingStream->rewind();
12942 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012943 uint64_t cgen_var_929;
12944 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_929, 1);
12945 countingStream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012946 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012947 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012948 uint64_t cgen_var_930 = (uint64_t)(uintptr_t)local_pAllocator;
12949 countingStream->putBe64(cgen_var_930);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012950 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012951 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012952 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012953 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012954 uint64_t cgen_var_931;
12955 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_931, 1);
12956 countingStream->write((uint64_t*)&cgen_var_931, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012957 }
12958 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12959 countingStream->rewind();
12960 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
12961 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
12962 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012963 uint64_t cgen_var_932;
12964 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_932, 1);
12965 stream->write((uint64_t*)&cgen_var_932, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012966 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012967 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012968 uint64_t cgen_var_933 = (uint64_t)(uintptr_t)local_pAllocator;
12969 stream->putBe64(cgen_var_933);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012970 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012971 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012972 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012973 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012974 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012975 uint64_t cgen_var_934;
12976 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_934, 1);
12977 stream->write((uint64_t*)&cgen_var_934, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012978 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012979 uint64_t cgen_var_935;
12980 stream->read((uint64_t*)&cgen_var_935, 8);
12981 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_935, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012982 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
12983 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012984 countingStream->clearPool();
12985 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012986 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012987 mImpl->log("finish vkCreateWaylandSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012988 return vkCreateWaylandSurfaceKHR_VkResult_return;
12989}
12990
12991VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
12992 VkPhysicalDevice physicalDevice,
12993 uint32_t queueFamilyIndex,
12994 wl_display* display)
12995{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012996 mImpl->log("start vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012997 auto stream = mImpl->stream();
12998 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012999 auto resources = mImpl->resources();
13000 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013001 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013002 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013003 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013004 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013005 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013006 countingStream->rewind();
13007 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013008 uint64_t cgen_var_936;
13009 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_936, 1);
13010 countingStream->write((uint64_t*)&cgen_var_936, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013011 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013012 countingStream->write((wl_display*)display, sizeof(wl_display));
13013 }
13014 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13015 countingStream->rewind();
13016 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
13017 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
13018 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013019 uint64_t cgen_var_937;
13020 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
13021 stream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013022 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013023 stream->write((wl_display*)display, sizeof(wl_display));
13024 stream->read((wl_display*)display, sizeof(wl_display));
13025 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13026 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013027 countingStream->clearPool();
13028 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013029 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013030 mImpl->log("finish vkGetPhysicalDeviceWaylandPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013031 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
13032}
13033
13034#endif
13035#ifdef VK_KHR_mir_surface
13036VkResult VkEncoder::vkCreateMirSurfaceKHR(
13037 VkInstance instance,
13038 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
13039 const VkAllocationCallbacks* pAllocator,
13040 VkSurfaceKHR* pSurface)
13041{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013042 mImpl->log("start vkCreateMirSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013043 auto stream = mImpl->stream();
13044 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013045 auto resources = mImpl->resources();
13046 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013047 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013048 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013049 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013050 VkAllocationCallbacks* local_pAllocator;
13051 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013052 local_pCreateInfo = nullptr;
13053 if (pCreateInfo)
13054 {
13055 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
13056 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
13057 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013058 local_pAllocator = nullptr;
13059 if (pAllocator)
13060 {
13061 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13062 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13063 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013064 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013065 if (local_pCreateInfo)
13066 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013067 transform_tohost_VkMirSurfaceCreateInfoKHR(mImpl->resources(), (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013068 }
13069 if (local_pAllocator)
13070 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013071 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013072 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013073 countingStream->rewind();
13074 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013075 uint64_t cgen_var_938;
13076 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_938, 1);
13077 countingStream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013078 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013079 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013080 uint64_t cgen_var_939 = (uint64_t)(uintptr_t)local_pAllocator;
13081 countingStream->putBe64(cgen_var_939);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013082 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013083 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013084 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013085 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013086 uint64_t cgen_var_940;
13087 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_940, 1);
13088 countingStream->write((uint64_t*)&cgen_var_940, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013089 }
13090 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13091 countingStream->rewind();
13092 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
13093 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
13094 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013095 uint64_t cgen_var_941;
13096 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_941, 1);
13097 stream->write((uint64_t*)&cgen_var_941, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013098 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013099 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013100 uint64_t cgen_var_942 = (uint64_t)(uintptr_t)local_pAllocator;
13101 stream->putBe64(cgen_var_942);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013102 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013103 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013104 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013105 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013106 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013107 uint64_t cgen_var_943;
13108 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_943, 1);
13109 stream->write((uint64_t*)&cgen_var_943, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013110 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013111 uint64_t cgen_var_944;
13112 stream->read((uint64_t*)&cgen_var_944, 8);
13113 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_944, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013114 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
13115 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013116 countingStream->clearPool();
13117 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013118 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013119 mImpl->log("finish vkCreateMirSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013120 return vkCreateMirSurfaceKHR_VkResult_return;
13121}
13122
13123VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
13124 VkPhysicalDevice physicalDevice,
13125 uint32_t queueFamilyIndex,
13126 MirConnection* connection)
13127{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013128 mImpl->log("start vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013129 auto stream = mImpl->stream();
13130 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013131 auto resources = mImpl->resources();
13132 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013133 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013134 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013135 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013136 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013137 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013138 countingStream->rewind();
13139 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013140 uint64_t cgen_var_945;
13141 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_945, 1);
13142 countingStream->write((uint64_t*)&cgen_var_945, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013143 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013144 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
13145 }
13146 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13147 countingStream->rewind();
13148 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
13149 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
13150 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013151 uint64_t cgen_var_946;
13152 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
13153 stream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013154 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013155 stream->write((MirConnection*)connection, sizeof(MirConnection));
13156 stream->read((MirConnection*)connection, sizeof(MirConnection));
13157 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13158 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013159 countingStream->clearPool();
13160 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013161 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013162 mImpl->log("finish vkGetPhysicalDeviceMirPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013163 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
13164}
13165
13166#endif
13167#ifdef VK_KHR_android_surface
13168VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
13169 VkInstance instance,
13170 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
13171 const VkAllocationCallbacks* pAllocator,
13172 VkSurfaceKHR* pSurface)
13173{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013174 mImpl->log("start vkCreateAndroidSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013175 auto stream = mImpl->stream();
13176 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013177 auto resources = mImpl->resources();
13178 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013179 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013180 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013181 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013182 VkAllocationCallbacks* local_pAllocator;
13183 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013184 local_pCreateInfo = nullptr;
13185 if (pCreateInfo)
13186 {
13187 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
13188 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
13189 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013190 local_pAllocator = nullptr;
13191 if (pAllocator)
13192 {
13193 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13194 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13195 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013196 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013197 if (local_pCreateInfo)
13198 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013199 transform_tohost_VkAndroidSurfaceCreateInfoKHR(mImpl->resources(), (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013200 }
13201 if (local_pAllocator)
13202 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013203 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013204 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013205 countingStream->rewind();
13206 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013207 uint64_t cgen_var_947;
13208 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_947, 1);
13209 countingStream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013210 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013211 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013212 uint64_t cgen_var_948 = (uint64_t)(uintptr_t)local_pAllocator;
13213 countingStream->putBe64(cgen_var_948);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013214 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013215 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013216 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013217 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013218 uint64_t cgen_var_949;
13219 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_949, 1);
13220 countingStream->write((uint64_t*)&cgen_var_949, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013221 }
13222 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13223 countingStream->rewind();
13224 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
13225 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
13226 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013227 uint64_t cgen_var_950;
13228 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_950, 1);
13229 stream->write((uint64_t*)&cgen_var_950, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013230 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013231 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013232 uint64_t cgen_var_951 = (uint64_t)(uintptr_t)local_pAllocator;
13233 stream->putBe64(cgen_var_951);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013234 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013235 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013236 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013237 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013238 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013239 uint64_t cgen_var_952;
13240 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_952, 1);
13241 stream->write((uint64_t*)&cgen_var_952, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013242 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013243 uint64_t cgen_var_953;
13244 stream->read((uint64_t*)&cgen_var_953, 8);
13245 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_953, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013246 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
13247 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013248 countingStream->clearPool();
13249 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013250 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013251 mImpl->log("finish vkCreateAndroidSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013252 return vkCreateAndroidSurfaceKHR_VkResult_return;
13253}
13254
13255#endif
13256#ifdef VK_KHR_win32_surface
13257VkResult VkEncoder::vkCreateWin32SurfaceKHR(
13258 VkInstance instance,
13259 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
13260 const VkAllocationCallbacks* pAllocator,
13261 VkSurfaceKHR* pSurface)
13262{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013263 mImpl->log("start vkCreateWin32SurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013264 auto stream = mImpl->stream();
13265 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013266 auto resources = mImpl->resources();
13267 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013268 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013269 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013270 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013271 VkAllocationCallbacks* local_pAllocator;
13272 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013273 local_pCreateInfo = nullptr;
13274 if (pCreateInfo)
13275 {
13276 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
13277 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
13278 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013279 local_pAllocator = nullptr;
13280 if (pAllocator)
13281 {
13282 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13283 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13284 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013285 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013286 if (local_pCreateInfo)
13287 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013288 transform_tohost_VkWin32SurfaceCreateInfoKHR(mImpl->resources(), (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013289 }
13290 if (local_pAllocator)
13291 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013292 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013293 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013294 countingStream->rewind();
13295 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013296 uint64_t cgen_var_954;
13297 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_954, 1);
13298 countingStream->write((uint64_t*)&cgen_var_954, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013299 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013300 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013301 uint64_t cgen_var_955 = (uint64_t)(uintptr_t)local_pAllocator;
13302 countingStream->putBe64(cgen_var_955);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013303 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013304 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013305 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013306 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013307 uint64_t cgen_var_956;
13308 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_956, 1);
13309 countingStream->write((uint64_t*)&cgen_var_956, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013310 }
13311 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13312 countingStream->rewind();
13313 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
13314 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
13315 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013316 uint64_t cgen_var_957;
13317 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
13318 stream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013319 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013320 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013321 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
13322 stream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013323 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013324 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013325 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013326 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013327 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013328 uint64_t cgen_var_959;
13329 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
13330 stream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013331 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013332 uint64_t cgen_var_960;
13333 stream->read((uint64_t*)&cgen_var_960, 8);
13334 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_960, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013335 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
13336 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013337 countingStream->clearPool();
13338 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013339 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013340 mImpl->log("finish vkCreateWin32SurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013341 return vkCreateWin32SurfaceKHR_VkResult_return;
13342}
13343
13344VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
13345 VkPhysicalDevice physicalDevice,
13346 uint32_t queueFamilyIndex)
13347{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013348 mImpl->log("start vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013349 auto stream = mImpl->stream();
13350 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013351 auto resources = mImpl->resources();
13352 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013353 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013354 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013355 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013356 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013357 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013358 countingStream->rewind();
13359 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013360 uint64_t cgen_var_961;
13361 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_961, 1);
13362 countingStream->write((uint64_t*)&cgen_var_961, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013363 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013364 }
13365 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13366 countingStream->rewind();
13367 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
13368 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
13369 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013370 uint64_t cgen_var_962;
13371 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_962, 1);
13372 stream->write((uint64_t*)&cgen_var_962, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013373 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013374 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
13375 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013376 countingStream->clearPool();
13377 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013378 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013379 mImpl->log("finish vkGetPhysicalDeviceWin32PresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013380 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
13381}
13382
13383#endif
13384#ifdef VK_KHR_sampler_mirror_clamp_to_edge
13385#endif
13386#ifdef VK_KHR_multiview
13387#endif
13388#ifdef VK_KHR_get_physical_device_properties2
13389void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
13390 VkPhysicalDevice physicalDevice,
13391 VkPhysicalDeviceFeatures2* pFeatures)
13392{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013393 mImpl->log("start vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013394 auto stream = mImpl->stream();
13395 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013396 auto resources = mImpl->resources();
13397 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013398 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013399 VkPhysicalDevice local_physicalDevice;
13400 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013401 countingStream->rewind();
13402 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013403 uint64_t cgen_var_963;
13404 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_963, 1);
13405 countingStream->write((uint64_t*)&cgen_var_963, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013406 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
13407 }
13408 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13409 countingStream->rewind();
13410 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
13411 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
13412 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013413 uint64_t cgen_var_964;
13414 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_964, 1);
13415 stream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013416 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
13417 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013418 if (pFeatures)
13419 {
13420 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
13421 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013422 mImpl->log("finish vkGetPhysicalDeviceFeatures2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013423}
13424
13425void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
13426 VkPhysicalDevice physicalDevice,
13427 VkPhysicalDeviceProperties2* pProperties)
13428{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013429 mImpl->log("start vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013430 auto stream = mImpl->stream();
13431 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013432 auto resources = mImpl->resources();
13433 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013434 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013435 VkPhysicalDevice local_physicalDevice;
13436 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013437 countingStream->rewind();
13438 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013439 uint64_t cgen_var_965;
13440 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_965, 1);
13441 countingStream->write((uint64_t*)&cgen_var_965, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013442 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
13443 }
13444 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13445 countingStream->rewind();
13446 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
13447 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
13448 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013449 uint64_t cgen_var_966;
13450 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_966, 1);
13451 stream->write((uint64_t*)&cgen_var_966, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013452 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
13453 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013454 if (pProperties)
13455 {
13456 transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
13457 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013458 mImpl->log("finish vkGetPhysicalDeviceProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013459}
13460
13461void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
13462 VkPhysicalDevice physicalDevice,
13463 VkFormat format,
13464 VkFormatProperties2* pFormatProperties)
13465{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013466 mImpl->log("start vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013467 auto stream = mImpl->stream();
13468 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013469 auto resources = mImpl->resources();
13470 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013471 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013472 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013473 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013474 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013475 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013476 countingStream->rewind();
13477 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013478 uint64_t cgen_var_967;
13479 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_967, 1);
13480 countingStream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013481 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013482 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
13483 }
13484 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13485 countingStream->rewind();
13486 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
13487 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
13488 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013489 uint64_t cgen_var_968;
13490 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_968, 1);
13491 stream->write((uint64_t*)&cgen_var_968, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013492 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013493 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
13494 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013495 if (pFormatProperties)
13496 {
13497 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
13498 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013499 mImpl->log("finish vkGetPhysicalDeviceFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013500}
13501
13502VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
13503 VkPhysicalDevice physicalDevice,
13504 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
13505 VkImageFormatProperties2* pImageFormatProperties)
13506{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013507 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013508 auto stream = mImpl->stream();
13509 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013510 auto resources = mImpl->resources();
13511 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013512 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013513 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013514 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013515 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013516 local_pImageFormatInfo = nullptr;
13517 if (pImageFormatInfo)
13518 {
13519 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
13520 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
13521 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013522 if (local_pImageFormatInfo)
13523 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013524 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013525 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013526 countingStream->rewind();
13527 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013528 uint64_t cgen_var_969;
13529 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_969, 1);
13530 countingStream->write((uint64_t*)&cgen_var_969, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013531 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013532 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
13533 }
13534 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13535 countingStream->rewind();
13536 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
13537 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
13538 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013539 uint64_t cgen_var_970;
13540 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_970, 1);
13541 stream->write((uint64_t*)&cgen_var_970, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013542 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013543 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
13544 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013545 if (pImageFormatProperties)
13546 {
13547 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
13548 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013549 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
13550 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013551 countingStream->clearPool();
13552 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013553 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013554 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013555 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
13556}
13557
13558void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
13559 VkPhysicalDevice physicalDevice,
13560 uint32_t* pQueueFamilyPropertyCount,
13561 VkQueueFamilyProperties2* pQueueFamilyProperties)
13562{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013563 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013564 auto stream = mImpl->stream();
13565 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013566 auto resources = mImpl->resources();
13567 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013568 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013569 VkPhysicalDevice local_physicalDevice;
13570 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013571 countingStream->rewind();
13572 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013573 uint64_t cgen_var_971;
13574 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
13575 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013576 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013577 uint64_t cgen_var_972 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
13578 countingStream->putBe64(cgen_var_972);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013579 if (pQueueFamilyPropertyCount)
13580 {
13581 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13582 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013583 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013584 uint64_t cgen_var_973 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
13585 countingStream->putBe64(cgen_var_973);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013586 if (pQueueFamilyProperties)
13587 {
13588 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13589 {
13590 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13591 }
13592 }
13593 }
13594 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13595 countingStream->rewind();
13596 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
13597 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
13598 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013599 uint64_t cgen_var_974;
13600 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
13601 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013602 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013603 uint64_t cgen_var_975 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
13604 stream->putBe64(cgen_var_975);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013605 if (pQueueFamilyPropertyCount)
13606 {
13607 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13608 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013609 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013610 uint64_t cgen_var_976 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
13611 stream->putBe64(cgen_var_976);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013612 if (pQueueFamilyProperties)
13613 {
13614 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13615 {
13616 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13617 }
13618 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013619 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013620 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013621 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013622 if (pQueueFamilyPropertyCount)
13623 {
13624 if (!(check_pQueueFamilyPropertyCount))
13625 {
13626 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
13627 }
13628 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
13629 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013630 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013631 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013632 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013633 if (pQueueFamilyProperties)
13634 {
13635 if (!(check_pQueueFamilyProperties))
13636 {
13637 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
13638 }
13639 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13640 {
13641 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13642 }
13643 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080013644 if (pQueueFamilyProperties)
13645 {
13646 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
13647 {
13648 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
13649 }
13650 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013651 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013652}
13653
13654void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
13655 VkPhysicalDevice physicalDevice,
13656 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
13657{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013658 mImpl->log("start vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013659 auto stream = mImpl->stream();
13660 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013661 auto resources = mImpl->resources();
13662 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013663 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013664 VkPhysicalDevice local_physicalDevice;
13665 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013666 countingStream->rewind();
13667 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013668 uint64_t cgen_var_979;
13669 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
13670 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013671 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13672 }
13673 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13674 countingStream->rewind();
13675 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
13676 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
13677 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013678 uint64_t cgen_var_980;
13679 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
13680 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013681 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13682 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013683 if (pMemoryProperties)
13684 {
13685 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
13686 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013687 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013688}
13689
13690void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
13691 VkPhysicalDevice physicalDevice,
13692 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
13693 uint32_t* pPropertyCount,
13694 VkSparseImageFormatProperties2* pProperties)
13695{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013696 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013697 auto stream = mImpl->stream();
13698 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013699 auto resources = mImpl->resources();
13700 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013701 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013702 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013703 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013704 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013705 local_pFormatInfo = nullptr;
13706 if (pFormatInfo)
13707 {
13708 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
13709 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
13710 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080013711 if (local_pFormatInfo)
13712 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013713 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013714 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013715 countingStream->rewind();
13716 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013717 uint64_t cgen_var_981;
13718 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
13719 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013720 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013721 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013722 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pPropertyCount;
13723 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013724 if (pPropertyCount)
13725 {
13726 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13727 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013728 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013729 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pProperties;
13730 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013731 if (pProperties)
13732 {
13733 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13734 {
13735 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
13736 }
13737 }
13738 }
13739 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13740 countingStream->rewind();
13741 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
13742 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
13743 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013744 uint64_t cgen_var_984;
13745 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
13746 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013747 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013748 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013749 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pPropertyCount;
13750 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013751 if (pPropertyCount)
13752 {
13753 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
13754 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013755 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013756 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pProperties;
13757 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013758 if (pProperties)
13759 {
13760 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13761 {
13762 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13763 }
13764 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013765 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013766 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013767 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013768 if (pPropertyCount)
13769 {
13770 if (!(check_pPropertyCount))
13771 {
13772 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
13773 }
13774 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
13775 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013776 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013777 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013778 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013779 if (pProperties)
13780 {
13781 if (!(check_pProperties))
13782 {
13783 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
13784 }
13785 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13786 {
13787 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
13788 }
13789 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080013790 if (pProperties)
13791 {
13792 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
13793 {
13794 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
13795 }
13796 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013797 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013798}
13799
13800#endif
13801#ifdef VK_KHR_device_group
13802void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
13803 VkDevice device,
13804 uint32_t heapIndex,
13805 uint32_t localDeviceIndex,
13806 uint32_t remoteDeviceIndex,
13807 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
13808{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013809 mImpl->log("start vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013810 auto stream = mImpl->stream();
13811 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013812 auto resources = mImpl->resources();
13813 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013814 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013815 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013816 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013817 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013818 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013819 local_device = device;
13820 local_heapIndex = heapIndex;
13821 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013822 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013823 countingStream->rewind();
13824 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013825 uint64_t cgen_var_989;
13826 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_989, 1);
13827 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013828 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13829 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13830 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013831 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13832 }
13833 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13834 countingStream->rewind();
13835 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
13836 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
13837 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013838 uint64_t cgen_var_990;
13839 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_990, 1);
13840 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013841 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
13842 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
13843 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013844 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
13845 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013846 mImpl->log("finish vkGetDeviceGroupPeerMemoryFeaturesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013847}
13848
13849void VkEncoder::vkCmdSetDeviceMaskKHR(
13850 VkCommandBuffer commandBuffer,
13851 uint32_t deviceMask)
13852{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013853 mImpl->log("start vkCmdSetDeviceMaskKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013854 auto stream = mImpl->stream();
13855 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013856 auto resources = mImpl->resources();
13857 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013858 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013859 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013860 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013861 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013862 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013863 countingStream->rewind();
13864 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013865 uint64_t cgen_var_991;
13866 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_991, 1);
13867 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013868 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013869 }
13870 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13871 countingStream->rewind();
13872 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
13873 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
13874 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013875 uint64_t cgen_var_992;
13876 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_992, 1);
13877 stream->write((uint64_t*)&cgen_var_992, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013878 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013879 mImpl->log("finish vkCmdSetDeviceMaskKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013880}
13881
13882void VkEncoder::vkCmdDispatchBaseKHR(
13883 VkCommandBuffer commandBuffer,
13884 uint32_t baseGroupX,
13885 uint32_t baseGroupY,
13886 uint32_t baseGroupZ,
13887 uint32_t groupCountX,
13888 uint32_t groupCountY,
13889 uint32_t groupCountZ)
13890{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013891 mImpl->log("start vkCmdDispatchBaseKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013892 auto stream = mImpl->stream();
13893 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013894 auto resources = mImpl->resources();
13895 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013896 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013897 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013898 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013899 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013900 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013901 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013902 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013903 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013904 local_commandBuffer = commandBuffer;
13905 local_baseGroupX = baseGroupX;
13906 local_baseGroupY = baseGroupY;
13907 local_baseGroupZ = baseGroupZ;
13908 local_groupCountX = groupCountX;
13909 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013910 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013911 countingStream->rewind();
13912 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013913 uint64_t cgen_var_993;
13914 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_993, 1);
13915 countingStream->write((uint64_t*)&cgen_var_993, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013916 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
13917 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
13918 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
13919 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
13920 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
13921 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013922 }
13923 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13924 countingStream->rewind();
13925 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
13926 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
13927 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013928 uint64_t cgen_var_994;
13929 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_994, 1);
13930 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013931 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
13932 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
13933 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
13934 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
13935 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
13936 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013937 mImpl->log("finish vkCmdDispatchBaseKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013938}
13939
13940#endif
13941#ifdef VK_KHR_shader_draw_parameters
13942#endif
13943#ifdef VK_KHR_maintenance1
13944void VkEncoder::vkTrimCommandPoolKHR(
13945 VkDevice device,
13946 VkCommandPool commandPool,
13947 VkCommandPoolTrimFlags flags)
13948{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013949 mImpl->log("start vkTrimCommandPoolKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013950 auto stream = mImpl->stream();
13951 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013952 auto resources = mImpl->resources();
13953 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013954 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013955 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013956 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013957 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013958 local_device = device;
13959 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013960 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013961 countingStream->rewind();
13962 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013963 uint64_t cgen_var_995;
13964 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_995, 1);
13965 countingStream->write((uint64_t*)&cgen_var_995, 1 * 8);
13966 uint64_t cgen_var_996;
13967 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_996, 1);
13968 countingStream->write((uint64_t*)&cgen_var_996, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013969 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013970 }
13971 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13972 countingStream->rewind();
13973 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
13974 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
13975 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013976 uint64_t cgen_var_997;
13977 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_997, 1);
13978 stream->write((uint64_t*)&cgen_var_997, 1 * 8);
13979 uint64_t cgen_var_998;
13980 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_998, 1);
13981 stream->write((uint64_t*)&cgen_var_998, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013982 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013983 mImpl->log("finish vkTrimCommandPoolKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013984}
13985
13986#endif
13987#ifdef VK_KHR_device_group_creation
13988VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
13989 VkInstance instance,
13990 uint32_t* pPhysicalDeviceGroupCount,
13991 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
13992{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013993 mImpl->log("start vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013994 auto stream = mImpl->stream();
13995 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013996 auto resources = mImpl->resources();
13997 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013998 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013999 VkInstance local_instance;
14000 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014001 countingStream->rewind();
14002 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014003 uint64_t cgen_var_999;
14004 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_999, 1);
14005 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014006 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014007 uint64_t cgen_var_1000 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14008 countingStream->putBe64(cgen_var_1000);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014009 if (pPhysicalDeviceGroupCount)
14010 {
14011 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14012 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014013 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014014 uint64_t cgen_var_1001 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14015 countingStream->putBe64(cgen_var_1001);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014016 if (pPhysicalDeviceGroupProperties)
14017 {
14018 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14019 {
14020 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14021 }
14022 }
14023 }
14024 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14025 countingStream->rewind();
14026 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
14027 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
14028 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014029 uint64_t cgen_var_1002;
14030 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1002, 1);
14031 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014032 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014033 uint64_t cgen_var_1003 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14034 stream->putBe64(cgen_var_1003);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014035 if (pPhysicalDeviceGroupCount)
14036 {
14037 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14038 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014039 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014040 uint64_t cgen_var_1004 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14041 stream->putBe64(cgen_var_1004);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014042 if (pPhysicalDeviceGroupProperties)
14043 {
14044 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14045 {
14046 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14047 }
14048 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014049 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014050 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014051 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014052 if (pPhysicalDeviceGroupCount)
14053 {
14054 if (!(check_pPhysicalDeviceGroupCount))
14055 {
14056 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
14057 }
14058 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14059 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014060 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014061 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014062 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014063 if (pPhysicalDeviceGroupProperties)
14064 {
14065 if (!(check_pPhysicalDeviceGroupProperties))
14066 {
14067 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
14068 }
14069 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14070 {
14071 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14072 }
14073 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080014074 if (pPhysicalDeviceGroupProperties)
14075 {
14076 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14077 {
14078 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14079 }
14080 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014081 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
14082 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014083 countingStream->clearPool();
14084 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014085 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014086 mImpl->log("finish vkEnumeratePhysicalDeviceGroupsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014087 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
14088}
14089
14090#endif
14091#ifdef VK_KHR_external_memory_capabilities
14092void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
14093 VkPhysicalDevice physicalDevice,
14094 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
14095 VkExternalBufferProperties* pExternalBufferProperties)
14096{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014097 mImpl->log("start vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014098 auto stream = mImpl->stream();
14099 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014100 auto resources = mImpl->resources();
14101 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014102 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014103 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014104 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014105 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014106 local_pExternalBufferInfo = nullptr;
14107 if (pExternalBufferInfo)
14108 {
14109 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
14110 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
14111 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014112 if (local_pExternalBufferInfo)
14113 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014114 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014115 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014116 countingStream->rewind();
14117 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014118 uint64_t cgen_var_1007;
14119 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1007, 1);
14120 countingStream->write((uint64_t*)&cgen_var_1007, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014121 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014122 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14123 }
14124 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14125 countingStream->rewind();
14126 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
14127 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
14128 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014129 uint64_t cgen_var_1008;
14130 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1008, 1);
14131 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014132 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014133 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14134 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014135 if (pExternalBufferProperties)
14136 {
14137 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
14138 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014139 mImpl->log("finish vkGetPhysicalDeviceExternalBufferPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014140}
14141
14142#endif
14143#ifdef VK_KHR_external_memory
14144#endif
14145#ifdef VK_KHR_external_memory_win32
14146VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
14147 VkDevice device,
14148 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14149 HANDLE* pHandle)
14150{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014151 mImpl->log("start vkGetMemoryWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014152 auto stream = mImpl->stream();
14153 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014154 auto resources = mImpl->resources();
14155 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014156 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014157 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014158 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014159 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014160 local_pGetWin32HandleInfo = nullptr;
14161 if (pGetWin32HandleInfo)
14162 {
14163 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
14164 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14165 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014166 if (local_pGetWin32HandleInfo)
14167 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014168 transform_tohost_VkMemoryGetWin32HandleInfoKHR(mImpl->resources(), (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014169 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014170 countingStream->rewind();
14171 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014172 uint64_t cgen_var_1009;
14173 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1);
14174 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014175 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014176 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14177 }
14178 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14179 countingStream->rewind();
14180 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
14181 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
14182 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014183 uint64_t cgen_var_1010;
14184 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1010, 1);
14185 stream->write((uint64_t*)&cgen_var_1010, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014186 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014187 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14188 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14189 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
14190 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014191 countingStream->clearPool();
14192 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014193 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014194 mImpl->log("finish vkGetMemoryWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014195 return vkGetMemoryWin32HandleKHR_VkResult_return;
14196}
14197
14198VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
14199 VkDevice device,
14200 VkExternalMemoryHandleTypeFlagBits handleType,
14201 HANDLE handle,
14202 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
14203{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014204 mImpl->log("start vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014205 auto stream = mImpl->stream();
14206 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014207 auto resources = mImpl->resources();
14208 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014209 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014210 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014211 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014212 HANDLE local_handle;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014213 local_device = device;
14214 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014215 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014216 countingStream->rewind();
14217 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014218 uint64_t cgen_var_1011;
14219 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1);
14220 countingStream->write((uint64_t*)&cgen_var_1011, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014221 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14222 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014223 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14224 }
14225 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14226 countingStream->rewind();
14227 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
14228 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
14229 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014230 uint64_t cgen_var_1012;
14231 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1012, 1);
14232 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014233 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14234 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014235 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14236 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014237 if (pMemoryWin32HandleProperties)
14238 {
14239 transform_fromhost_VkMemoryWin32HandlePropertiesKHR(mImpl->resources(), (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
14240 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014241 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
14242 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014243 countingStream->clearPool();
14244 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014245 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014246 mImpl->log("finish vkGetMemoryWin32HandlePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014247 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
14248}
14249
14250#endif
14251#ifdef VK_KHR_external_memory_fd
14252VkResult VkEncoder::vkGetMemoryFdKHR(
14253 VkDevice device,
14254 const VkMemoryGetFdInfoKHR* pGetFdInfo,
14255 int* pFd)
14256{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014257 mImpl->log("start vkGetMemoryFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014258 auto stream = mImpl->stream();
14259 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014260 auto resources = mImpl->resources();
14261 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014262 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014263 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014264 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014265 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014266 local_pGetFdInfo = nullptr;
14267 if (pGetFdInfo)
14268 {
14269 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
14270 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
14271 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014272 if (local_pGetFdInfo)
14273 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014274 transform_tohost_VkMemoryGetFdInfoKHR(mImpl->resources(), (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014275 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014276 countingStream->rewind();
14277 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014278 uint64_t cgen_var_1013;
14279 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1013, 1);
14280 countingStream->write((uint64_t*)&cgen_var_1013, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014281 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014282 countingStream->write((int*)pFd, sizeof(int));
14283 }
14284 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14285 countingStream->rewind();
14286 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
14287 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
14288 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014289 uint64_t cgen_var_1014;
14290 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1014, 1);
14291 stream->write((uint64_t*)&cgen_var_1014, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014292 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014293 stream->write((int*)pFd, sizeof(int));
14294 stream->read((int*)pFd, sizeof(int));
14295 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
14296 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014297 countingStream->clearPool();
14298 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014299 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014300 mImpl->log("finish vkGetMemoryFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014301 return vkGetMemoryFdKHR_VkResult_return;
14302}
14303
14304VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
14305 VkDevice device,
14306 VkExternalMemoryHandleTypeFlagBits handleType,
14307 int fd,
14308 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
14309{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014310 mImpl->log("start vkGetMemoryFdPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014311 auto stream = mImpl->stream();
14312 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014313 auto resources = mImpl->resources();
14314 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014315 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014316 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014317 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014318 int local_fd;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014319 local_device = device;
14320 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014321 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014322 countingStream->rewind();
14323 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014324 uint64_t cgen_var_1015;
14325 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1015, 1);
14326 countingStream->write((uint64_t*)&cgen_var_1015, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014327 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14328 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014329 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14330 }
14331 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14332 countingStream->rewind();
14333 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
14334 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
14335 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014336 uint64_t cgen_var_1016;
14337 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1016, 1);
14338 stream->write((uint64_t*)&cgen_var_1016, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014339 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
14340 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014341 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14342 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014343 if (pMemoryFdProperties)
14344 {
14345 transform_fromhost_VkMemoryFdPropertiesKHR(mImpl->resources(), (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
14346 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014347 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
14348 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014349 countingStream->clearPool();
14350 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014351 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014352 mImpl->log("finish vkGetMemoryFdPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014353 return vkGetMemoryFdPropertiesKHR_VkResult_return;
14354}
14355
14356#endif
14357#ifdef VK_KHR_win32_keyed_mutex
14358#endif
14359#ifdef VK_KHR_external_semaphore_capabilities
14360void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
14361 VkPhysicalDevice physicalDevice,
14362 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
14363 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
14364{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014365 mImpl->log("start vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014366 auto stream = mImpl->stream();
14367 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014368 auto resources = mImpl->resources();
14369 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014370 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014371 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014372 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014373 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014374 local_pExternalSemaphoreInfo = nullptr;
14375 if (pExternalSemaphoreInfo)
14376 {
14377 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
14378 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
14379 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014380 if (local_pExternalSemaphoreInfo)
14381 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014382 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014383 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014384 countingStream->rewind();
14385 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014386 uint64_t cgen_var_1017;
14387 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
14388 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014389 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014390 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14391 }
14392 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14393 countingStream->rewind();
14394 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
14395 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
14396 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014397 uint64_t cgen_var_1018;
14398 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
14399 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014400 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014401 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14402 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014403 if (pExternalSemaphoreProperties)
14404 {
14405 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
14406 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014407 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014408}
14409
14410#endif
14411#ifdef VK_KHR_external_semaphore
14412#endif
14413#ifdef VK_KHR_external_semaphore_win32
14414VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
14415 VkDevice device,
14416 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
14417{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014418 mImpl->log("start vkImportSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014419 auto stream = mImpl->stream();
14420 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014421 auto resources = mImpl->resources();
14422 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014423 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014424 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014425 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014426 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014427 local_pImportSemaphoreWin32HandleInfo = nullptr;
14428 if (pImportSemaphoreWin32HandleInfo)
14429 {
14430 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
14431 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
14432 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014433 if (local_pImportSemaphoreWin32HandleInfo)
14434 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014435 transform_tohost_VkImportSemaphoreWin32HandleInfoKHR(mImpl->resources(), (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014436 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014437 countingStream->rewind();
14438 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014439 uint64_t cgen_var_1019;
14440 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
14441 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014442 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014443 }
14444 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14445 countingStream->rewind();
14446 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
14447 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
14448 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014449 uint64_t cgen_var_1020;
14450 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
14451 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014452 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014453 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
14454 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014455 countingStream->clearPool();
14456 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014457 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014458 mImpl->log("finish vkImportSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014459 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
14460}
14461
14462VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
14463 VkDevice device,
14464 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14465 HANDLE* pHandle)
14466{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014467 mImpl->log("start vkGetSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014468 auto stream = mImpl->stream();
14469 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014470 auto resources = mImpl->resources();
14471 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014472 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014473 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014474 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014475 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014476 local_pGetWin32HandleInfo = nullptr;
14477 if (pGetWin32HandleInfo)
14478 {
14479 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
14480 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14481 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014482 if (local_pGetWin32HandleInfo)
14483 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014484 transform_tohost_VkSemaphoreGetWin32HandleInfoKHR(mImpl->resources(), (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014485 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014486 countingStream->rewind();
14487 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014488 uint64_t cgen_var_1021;
14489 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
14490 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014491 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014492 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14493 }
14494 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14495 countingStream->rewind();
14496 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
14497 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
14498 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014499 uint64_t cgen_var_1022;
14500 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
14501 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014502 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014503 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14504 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14505 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
14506 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014507 countingStream->clearPool();
14508 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014509 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014510 mImpl->log("finish vkGetSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014511 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
14512}
14513
14514#endif
14515#ifdef VK_KHR_external_semaphore_fd
14516VkResult VkEncoder::vkImportSemaphoreFdKHR(
14517 VkDevice device,
14518 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
14519{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014520 mImpl->log("start vkImportSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014521 auto stream = mImpl->stream();
14522 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014523 auto resources = mImpl->resources();
14524 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014525 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014526 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014527 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014528 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014529 local_pImportSemaphoreFdInfo = nullptr;
14530 if (pImportSemaphoreFdInfo)
14531 {
14532 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
14533 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
14534 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014535 if (local_pImportSemaphoreFdInfo)
14536 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014537 transform_tohost_VkImportSemaphoreFdInfoKHR(mImpl->resources(), (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014538 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014539 countingStream->rewind();
14540 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014541 uint64_t cgen_var_1023;
14542 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
14543 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014544 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014545 }
14546 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14547 countingStream->rewind();
14548 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
14549 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
14550 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014551 uint64_t cgen_var_1024;
14552 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
14553 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014554 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014555 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
14556 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014557 countingStream->clearPool();
14558 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014559 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014560 mImpl->log("finish vkImportSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014561 return vkImportSemaphoreFdKHR_VkResult_return;
14562}
14563
14564VkResult VkEncoder::vkGetSemaphoreFdKHR(
14565 VkDevice device,
14566 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
14567 int* pFd)
14568{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014569 mImpl->log("start vkGetSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014570 auto stream = mImpl->stream();
14571 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014572 auto resources = mImpl->resources();
14573 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014574 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014575 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014576 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014577 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014578 local_pGetFdInfo = nullptr;
14579 if (pGetFdInfo)
14580 {
14581 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
14582 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
14583 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014584 if (local_pGetFdInfo)
14585 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014586 transform_tohost_VkSemaphoreGetFdInfoKHR(mImpl->resources(), (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014587 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014588 countingStream->rewind();
14589 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014590 uint64_t cgen_var_1025;
14591 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
14592 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014593 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014594 countingStream->write((int*)pFd, sizeof(int));
14595 }
14596 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14597 countingStream->rewind();
14598 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
14599 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
14600 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014601 uint64_t cgen_var_1026;
14602 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
14603 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014604 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014605 stream->write((int*)pFd, sizeof(int));
14606 stream->read((int*)pFd, sizeof(int));
14607 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
14608 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014609 countingStream->clearPool();
14610 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014611 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014612 mImpl->log("finish vkGetSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014613 return vkGetSemaphoreFdKHR_VkResult_return;
14614}
14615
14616#endif
14617#ifdef VK_KHR_push_descriptor
14618void VkEncoder::vkCmdPushDescriptorSetKHR(
14619 VkCommandBuffer commandBuffer,
14620 VkPipelineBindPoint pipelineBindPoint,
14621 VkPipelineLayout layout,
14622 uint32_t set,
14623 uint32_t descriptorWriteCount,
14624 const VkWriteDescriptorSet* pDescriptorWrites)
14625{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014626 mImpl->log("start vkCmdPushDescriptorSetKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014627 auto stream = mImpl->stream();
14628 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014629 auto resources = mImpl->resources();
14630 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014631 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014632 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014633 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014634 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014635 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014636 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014637 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014638 local_commandBuffer = commandBuffer;
14639 local_pipelineBindPoint = pipelineBindPoint;
14640 local_layout = layout;
14641 local_set = set;
14642 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014643 local_pDescriptorWrites = nullptr;
14644 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014645 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014646 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014647 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14648 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014649 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
14650 }
14651 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014652 if (local_pDescriptorWrites)
14653 {
14654 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14655 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014656 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014657 }
14658 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014659 countingStream->rewind();
14660 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014661 uint64_t cgen_var_1027;
14662 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1027, 1);
14663 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014664 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014665 uint64_t cgen_var_1028;
14666 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1028, 1);
14667 countingStream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014668 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
14669 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
14670 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14671 {
14672 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014673 }
14674 }
14675 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14676 countingStream->rewind();
14677 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
14678 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
14679 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014680 uint64_t cgen_var_1029;
14681 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1029, 1);
14682 stream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014683 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014684 uint64_t cgen_var_1030;
14685 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1030, 1);
14686 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014687 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
14688 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014689 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
14690 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014691 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014692 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014693 mImpl->log("finish vkCmdPushDescriptorSetKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014694}
14695
14696void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
14697 VkCommandBuffer commandBuffer,
14698 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14699 VkPipelineLayout layout,
14700 uint32_t set,
14701 const void* pData)
14702{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014703 mImpl->log("start vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014704 auto stream = mImpl->stream();
14705 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014706 auto resources = mImpl->resources();
14707 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014708 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014709 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014710 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014711 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014712 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014713 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014714 local_commandBuffer = commandBuffer;
14715 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
14716 local_layout = layout;
14717 local_set = set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014718 local_pData = nullptr;
14719 if (pData)
14720 {
14721 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
14722 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014723 countingStream->rewind();
14724 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014725 uint64_t cgen_var_1031;
14726 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1031, 1);
14727 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
14728 uint64_t cgen_var_1032;
14729 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1032, 1);
14730 countingStream->write((uint64_t*)&cgen_var_1032, 1 * 8);
14731 uint64_t cgen_var_1033;
14732 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1033, 1);
14733 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014734 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014735 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014736 uint64_t cgen_var_1034 = (uint64_t)(uintptr_t)local_pData;
14737 countingStream->putBe64(cgen_var_1034);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014738 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014739 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014740 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014741 }
14742 }
14743 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14744 countingStream->rewind();
14745 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
14746 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
14747 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014748 uint64_t cgen_var_1035;
14749 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1035, 1);
14750 stream->write((uint64_t*)&cgen_var_1035, 1 * 8);
14751 uint64_t cgen_var_1036;
14752 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1036, 1);
14753 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
14754 uint64_t cgen_var_1037;
14755 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1037, 1);
14756 stream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014757 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014758 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014759 uint64_t cgen_var_1038 = (uint64_t)(uintptr_t)local_pData;
14760 stream->putBe64(cgen_var_1038);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014761 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014762 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014763 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014764 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014765 mImpl->log("finish vkCmdPushDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014766}
14767
14768#endif
14769#ifdef VK_KHR_16bit_storage
14770#endif
14771#ifdef VK_KHR_incremental_present
14772#endif
14773#ifdef VK_KHR_descriptor_update_template
14774VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
14775 VkDevice device,
14776 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
14777 const VkAllocationCallbacks* pAllocator,
14778 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
14779{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014780 mImpl->log("start vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014781 auto stream = mImpl->stream();
14782 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014783 auto resources = mImpl->resources();
14784 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014785 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014786 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014787 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014788 VkAllocationCallbacks* local_pAllocator;
14789 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014790 local_pCreateInfo = nullptr;
14791 if (pCreateInfo)
14792 {
14793 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
14794 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
14795 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014796 local_pAllocator = nullptr;
14797 if (pAllocator)
14798 {
14799 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14800 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14801 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014802 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014803 if (local_pCreateInfo)
14804 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014805 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014806 }
14807 if (local_pAllocator)
14808 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014809 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014810 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014811 countingStream->rewind();
14812 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014813 uint64_t cgen_var_1039;
14814 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1039, 1);
14815 countingStream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014816 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014817 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014818 uint64_t cgen_var_1040 = (uint64_t)(uintptr_t)local_pAllocator;
14819 countingStream->putBe64(cgen_var_1040);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014820 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014821 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014822 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014823 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014824 uint64_t cgen_var_1041;
14825 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1041, 1);
14826 countingStream->write((uint64_t*)&cgen_var_1041, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014827 }
14828 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14829 countingStream->rewind();
14830 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
14831 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
14832 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014833 uint64_t cgen_var_1042;
14834 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1042, 1);
14835 stream->write((uint64_t*)&cgen_var_1042, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014836 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014837 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014838 uint64_t cgen_var_1043 = (uint64_t)(uintptr_t)local_pAllocator;
14839 stream->putBe64(cgen_var_1043);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014840 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014841 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014842 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014843 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014844 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014845 uint64_t cgen_var_1044;
14846 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1044, 1);
14847 stream->write((uint64_t*)&cgen_var_1044, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014848 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014849 uint64_t cgen_var_1045;
14850 stream->read((uint64_t*)&cgen_var_1045, 8);
14851 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1045, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014852 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
14853 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014854 countingStream->clearPool();
14855 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014856 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014857 mImpl->log("finish vkCreateDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014858 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
14859}
14860
14861void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
14862 VkDevice device,
14863 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14864 const VkAllocationCallbacks* pAllocator)
14865{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014866 mImpl->log("start vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014867 auto stream = mImpl->stream();
14868 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014869 auto resources = mImpl->resources();
14870 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014871 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014872 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014873 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014874 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014875 local_device = device;
14876 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014877 local_pAllocator = nullptr;
14878 if (pAllocator)
14879 {
14880 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14881 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14882 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014883 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014884 if (local_pAllocator)
14885 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014886 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014887 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014888 countingStream->rewind();
14889 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014890 uint64_t cgen_var_1046;
14891 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1046, 1);
14892 countingStream->write((uint64_t*)&cgen_var_1046, 1 * 8);
14893 uint64_t cgen_var_1047;
14894 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1047, 1);
14895 countingStream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014896 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014897 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pAllocator;
14898 countingStream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014899 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014900 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014901 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014902 }
14903 }
14904 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14905 countingStream->rewind();
14906 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
14907 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
14908 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014909 uint64_t cgen_var_1049;
14910 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
14911 stream->write((uint64_t*)&cgen_var_1049, 1 * 8);
14912 uint64_t cgen_var_1050;
14913 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1050, 1);
14914 stream->write((uint64_t*)&cgen_var_1050, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014915 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014916 uint64_t cgen_var_1051 = (uint64_t)(uintptr_t)local_pAllocator;
14917 stream->putBe64(cgen_var_1051);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014918 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014919 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014920 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014921 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014922 mImpl->log("finish vkDestroyDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014923}
14924
14925void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
14926 VkDevice device,
14927 VkDescriptorSet descriptorSet,
14928 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
14929 const void* pData)
14930{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014931 mImpl->log("start vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014932 auto stream = mImpl->stream();
14933 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014934 auto resources = mImpl->resources();
14935 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014936 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014937 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014938 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014939 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014940 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014941 local_device = device;
14942 local_descriptorSet = descriptorSet;
14943 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014944 local_pData = nullptr;
14945 if (pData)
14946 {
14947 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
14948 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014949 countingStream->rewind();
14950 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014951 uint64_t cgen_var_1052;
14952 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
14953 countingStream->write((uint64_t*)&cgen_var_1052, 1 * 8);
14954 uint64_t cgen_var_1053;
14955 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1053, 1);
14956 countingStream->write((uint64_t*)&cgen_var_1053, 1 * 8);
14957 uint64_t cgen_var_1054;
14958 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1054, 1);
14959 countingStream->write((uint64_t*)&cgen_var_1054, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014960 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014961 uint64_t cgen_var_1055 = (uint64_t)(uintptr_t)local_pData;
14962 countingStream->putBe64(cgen_var_1055);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014963 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014964 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014965 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014966 }
14967 }
14968 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14969 countingStream->rewind();
14970 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
14971 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
14972 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014973 uint64_t cgen_var_1056;
14974 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
14975 stream->write((uint64_t*)&cgen_var_1056, 1 * 8);
14976 uint64_t cgen_var_1057;
14977 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1057, 1);
14978 stream->write((uint64_t*)&cgen_var_1057, 1 * 8);
14979 uint64_t cgen_var_1058;
14980 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1058, 1);
14981 stream->write((uint64_t*)&cgen_var_1058, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014982 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014983 uint64_t cgen_var_1059 = (uint64_t)(uintptr_t)local_pData;
14984 stream->putBe64(cgen_var_1059);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014985 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014986 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014987 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014988 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014989 mImpl->log("finish vkUpdateDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014990}
14991
14992#endif
14993#ifdef VK_KHR_create_renderpass2
14994VkResult VkEncoder::vkCreateRenderPass2KHR(
14995 VkDevice device,
14996 const VkRenderPassCreateInfo2KHR* pCreateInfo,
14997 const VkAllocationCallbacks* pAllocator,
14998 VkRenderPass* pRenderPass)
14999{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015000 mImpl->log("start vkCreateRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015001 auto stream = mImpl->stream();
15002 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015003 auto resources = mImpl->resources();
15004 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015005 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015006 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015007 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015008 VkAllocationCallbacks* local_pAllocator;
15009 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015010 local_pCreateInfo = nullptr;
15011 if (pCreateInfo)
15012 {
15013 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
15014 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
15015 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015016 local_pAllocator = nullptr;
15017 if (pAllocator)
15018 {
15019 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15020 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15021 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015022 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015023 if (local_pCreateInfo)
15024 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015025 transform_tohost_VkRenderPassCreateInfo2KHR(mImpl->resources(), (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015026 }
15027 if (local_pAllocator)
15028 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015029 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015030 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015031 countingStream->rewind();
15032 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015033 uint64_t cgen_var_1060;
15034 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1060, 1);
15035 countingStream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015036 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015037 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015038 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
15039 countingStream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015040 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015041 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015042 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015043 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015044 uint64_t cgen_var_1062;
15045 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1062, 1);
15046 countingStream->write((uint64_t*)&cgen_var_1062, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015047 }
15048 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15049 countingStream->rewind();
15050 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
15051 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
15052 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015053 uint64_t cgen_var_1063;
15054 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1063, 1);
15055 stream->write((uint64_t*)&cgen_var_1063, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015056 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015057 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015058 uint64_t cgen_var_1064 = (uint64_t)(uintptr_t)local_pAllocator;
15059 stream->putBe64(cgen_var_1064);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015060 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015061 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015062 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015063 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015064 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015065 uint64_t cgen_var_1065;
15066 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1065, 1);
15067 stream->write((uint64_t*)&cgen_var_1065, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015068 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015069 uint64_t cgen_var_1066;
15070 stream->read((uint64_t*)&cgen_var_1066, 8);
15071 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1066, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015072 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
15073 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015074 countingStream->clearPool();
15075 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015076 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015077 mImpl->log("finish vkCreateRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015078 return vkCreateRenderPass2KHR_VkResult_return;
15079}
15080
15081void VkEncoder::vkCmdBeginRenderPass2KHR(
15082 VkCommandBuffer commandBuffer,
15083 const VkRenderPassBeginInfo* pRenderPassBegin,
15084 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
15085{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015086 mImpl->log("start vkCmdBeginRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015087 auto stream = mImpl->stream();
15088 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015089 auto resources = mImpl->resources();
15090 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015091 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015092 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015093 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015094 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
15095 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015096 local_pRenderPassBegin = nullptr;
15097 if (pRenderPassBegin)
15098 {
15099 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
15100 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15101 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015102 local_pSubpassBeginInfo = nullptr;
15103 if (pSubpassBeginInfo)
15104 {
15105 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15106 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15107 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015108 if (local_pRenderPassBegin)
15109 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015110 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015111 }
15112 if (local_pSubpassBeginInfo)
15113 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015114 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015115 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015116 countingStream->rewind();
15117 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015118 uint64_t cgen_var_1067;
15119 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1067, 1);
15120 countingStream->write((uint64_t*)&cgen_var_1067, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015121 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15122 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015123 }
15124 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15125 countingStream->rewind();
15126 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
15127 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
15128 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015129 uint64_t cgen_var_1068;
15130 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1068, 1);
15131 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015132 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15133 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015134 mImpl->log("finish vkCmdBeginRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015135}
15136
15137void VkEncoder::vkCmdNextSubpass2KHR(
15138 VkCommandBuffer commandBuffer,
15139 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
15140 const VkSubpassEndInfoKHR* pSubpassEndInfo)
15141{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015142 mImpl->log("start vkCmdNextSubpass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015143 auto stream = mImpl->stream();
15144 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015145 auto resources = mImpl->resources();
15146 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015147 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015148 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015149 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015150 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
15151 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015152 local_pSubpassBeginInfo = nullptr;
15153 if (pSubpassBeginInfo)
15154 {
15155 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15156 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15157 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015158 local_pSubpassEndInfo = nullptr;
15159 if (pSubpassEndInfo)
15160 {
15161 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
15162 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
15163 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015164 if (local_pSubpassBeginInfo)
15165 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015166 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015167 }
15168 if (local_pSubpassEndInfo)
15169 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015170 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015171 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015172 countingStream->rewind();
15173 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015174 uint64_t cgen_var_1069;
15175 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1069, 1);
15176 countingStream->write((uint64_t*)&cgen_var_1069, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015177 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15178 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015179 }
15180 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15181 countingStream->rewind();
15182 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
15183 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
15184 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015185 uint64_t cgen_var_1070;
15186 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1070, 1);
15187 stream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015188 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15189 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015190 mImpl->log("finish vkCmdNextSubpass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015191}
15192
15193void VkEncoder::vkCmdEndRenderPass2KHR(
15194 VkCommandBuffer commandBuffer,
15195 const VkSubpassEndInfoKHR* pSubpassEndInfo)
15196{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015197 mImpl->log("start vkCmdEndRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015198 auto stream = mImpl->stream();
15199 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015200 auto resources = mImpl->resources();
15201 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015202 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015203 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015204 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015205 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015206 local_pSubpassEndInfo = nullptr;
15207 if (pSubpassEndInfo)
15208 {
15209 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
15210 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
15211 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015212 if (local_pSubpassEndInfo)
15213 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015214 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015215 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015216 countingStream->rewind();
15217 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015218 uint64_t cgen_var_1071;
15219 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1071, 1);
15220 countingStream->write((uint64_t*)&cgen_var_1071, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015221 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015222 }
15223 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15224 countingStream->rewind();
15225 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
15226 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
15227 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015228 uint64_t cgen_var_1072;
15229 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1072, 1);
15230 stream->write((uint64_t*)&cgen_var_1072, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015231 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015232 mImpl->log("finish vkCmdEndRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015233}
15234
15235#endif
15236#ifdef VK_KHR_shared_presentable_image
15237VkResult VkEncoder::vkGetSwapchainStatusKHR(
15238 VkDevice device,
15239 VkSwapchainKHR swapchain)
15240{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015241 mImpl->log("start vkGetSwapchainStatusKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015242 auto stream = mImpl->stream();
15243 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015244 auto resources = mImpl->resources();
15245 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015246 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015247 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015248 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015249 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015250 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015251 countingStream->rewind();
15252 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015253 uint64_t cgen_var_1073;
15254 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
15255 countingStream->write((uint64_t*)&cgen_var_1073, 1 * 8);
15256 uint64_t cgen_var_1074;
15257 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1074, 1);
15258 countingStream->write((uint64_t*)&cgen_var_1074, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015259 }
15260 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15261 countingStream->rewind();
15262 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
15263 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
15264 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015265 uint64_t cgen_var_1075;
15266 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1075, 1);
15267 stream->write((uint64_t*)&cgen_var_1075, 1 * 8);
15268 uint64_t cgen_var_1076;
15269 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1076, 1);
15270 stream->write((uint64_t*)&cgen_var_1076, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015271 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
15272 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015273 countingStream->clearPool();
15274 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015275 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015276 mImpl->log("finish vkGetSwapchainStatusKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015277 return vkGetSwapchainStatusKHR_VkResult_return;
15278}
15279
15280#endif
15281#ifdef VK_KHR_external_fence_capabilities
15282void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
15283 VkPhysicalDevice physicalDevice,
15284 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
15285 VkExternalFenceProperties* pExternalFenceProperties)
15286{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015287 mImpl->log("start vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015288 auto stream = mImpl->stream();
15289 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015290 auto resources = mImpl->resources();
15291 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015292 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015293 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015294 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015295 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015296 local_pExternalFenceInfo = nullptr;
15297 if (pExternalFenceInfo)
15298 {
15299 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
15300 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
15301 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015302 if (local_pExternalFenceInfo)
15303 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015304 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015305 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015306 countingStream->rewind();
15307 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015308 uint64_t cgen_var_1077;
15309 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1077, 1);
15310 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015311 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015312 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
15313 }
15314 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15315 countingStream->rewind();
15316 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
15317 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
15318 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015319 uint64_t cgen_var_1078;
15320 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1078, 1);
15321 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015322 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015323 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
15324 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015325 if (pExternalFenceProperties)
15326 {
15327 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
15328 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015329 mImpl->log("finish vkGetPhysicalDeviceExternalFencePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015330}
15331
15332#endif
15333#ifdef VK_KHR_external_fence
15334#endif
15335#ifdef VK_KHR_external_fence_win32
15336VkResult VkEncoder::vkImportFenceWin32HandleKHR(
15337 VkDevice device,
15338 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
15339{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015340 mImpl->log("start vkImportFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015341 auto stream = mImpl->stream();
15342 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015343 auto resources = mImpl->resources();
15344 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015345 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015346 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015347 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015348 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015349 local_pImportFenceWin32HandleInfo = nullptr;
15350 if (pImportFenceWin32HandleInfo)
15351 {
15352 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
15353 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
15354 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015355 if (local_pImportFenceWin32HandleInfo)
15356 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015357 transform_tohost_VkImportFenceWin32HandleInfoKHR(mImpl->resources(), (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015358 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015359 countingStream->rewind();
15360 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015361 uint64_t cgen_var_1079;
15362 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1079, 1);
15363 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015364 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015365 }
15366 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15367 countingStream->rewind();
15368 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
15369 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
15370 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015371 uint64_t cgen_var_1080;
15372 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1080, 1);
15373 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015374 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015375 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
15376 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015377 countingStream->clearPool();
15378 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015379 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015380 mImpl->log("finish vkImportFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015381 return vkImportFenceWin32HandleKHR_VkResult_return;
15382}
15383
15384VkResult VkEncoder::vkGetFenceWin32HandleKHR(
15385 VkDevice device,
15386 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
15387 HANDLE* pHandle)
15388{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015389 mImpl->log("start vkGetFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015390 auto stream = mImpl->stream();
15391 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015392 auto resources = mImpl->resources();
15393 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015394 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015395 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015396 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015397 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015398 local_pGetWin32HandleInfo = nullptr;
15399 if (pGetWin32HandleInfo)
15400 {
15401 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
15402 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
15403 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015404 if (local_pGetWin32HandleInfo)
15405 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015406 transform_tohost_VkFenceGetWin32HandleInfoKHR(mImpl->resources(), (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015407 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015408 countingStream->rewind();
15409 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015410 uint64_t cgen_var_1081;
15411 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1081, 1);
15412 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015413 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015414 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
15415 }
15416 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15417 countingStream->rewind();
15418 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
15419 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
15420 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015421 uint64_t cgen_var_1082;
15422 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1082, 1);
15423 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015424 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015425 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
15426 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
15427 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
15428 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015429 countingStream->clearPool();
15430 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015431 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015432 mImpl->log("finish vkGetFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015433 return vkGetFenceWin32HandleKHR_VkResult_return;
15434}
15435
15436#endif
15437#ifdef VK_KHR_external_fence_fd
15438VkResult VkEncoder::vkImportFenceFdKHR(
15439 VkDevice device,
15440 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
15441{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015442 mImpl->log("start vkImportFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015443 auto stream = mImpl->stream();
15444 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015445 auto resources = mImpl->resources();
15446 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015447 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015448 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015449 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015450 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015451 local_pImportFenceFdInfo = nullptr;
15452 if (pImportFenceFdInfo)
15453 {
15454 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
15455 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
15456 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015457 if (local_pImportFenceFdInfo)
15458 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015459 transform_tohost_VkImportFenceFdInfoKHR(mImpl->resources(), (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015460 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015461 countingStream->rewind();
15462 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015463 uint64_t cgen_var_1083;
15464 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
15465 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015466 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015467 }
15468 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15469 countingStream->rewind();
15470 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
15471 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
15472 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015473 uint64_t cgen_var_1084;
15474 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1084, 1);
15475 stream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015476 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015477 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
15478 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015479 countingStream->clearPool();
15480 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015481 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015482 mImpl->log("finish vkImportFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015483 return vkImportFenceFdKHR_VkResult_return;
15484}
15485
15486VkResult VkEncoder::vkGetFenceFdKHR(
15487 VkDevice device,
15488 const VkFenceGetFdInfoKHR* pGetFdInfo,
15489 int* pFd)
15490{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015491 mImpl->log("start vkGetFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015492 auto stream = mImpl->stream();
15493 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015494 auto resources = mImpl->resources();
15495 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015496 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015497 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015498 VkFenceGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015499 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015500 local_pGetFdInfo = nullptr;
15501 if (pGetFdInfo)
15502 {
15503 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
15504 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
15505 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015506 if (local_pGetFdInfo)
15507 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015508 transform_tohost_VkFenceGetFdInfoKHR(mImpl->resources(), (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015509 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015510 countingStream->rewind();
15511 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015512 uint64_t cgen_var_1085;
15513 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
15514 countingStream->write((uint64_t*)&cgen_var_1085, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015515 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015516 countingStream->write((int*)pFd, sizeof(int));
15517 }
15518 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15519 countingStream->rewind();
15520 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
15521 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
15522 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015523 uint64_t cgen_var_1086;
15524 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1086, 1);
15525 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015526 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015527 stream->write((int*)pFd, sizeof(int));
15528 stream->read((int*)pFd, sizeof(int));
15529 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
15530 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015531 countingStream->clearPool();
15532 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015533 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015534 mImpl->log("finish vkGetFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015535 return vkGetFenceFdKHR_VkResult_return;
15536}
15537
15538#endif
15539#ifdef VK_KHR_maintenance2
15540#endif
15541#ifdef VK_KHR_get_surface_capabilities2
15542VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
15543 VkPhysicalDevice physicalDevice,
15544 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
15545 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
15546{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015547 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015548 auto stream = mImpl->stream();
15549 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015550 auto resources = mImpl->resources();
15551 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015552 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015553 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015554 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015555 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015556 local_pSurfaceInfo = nullptr;
15557 if (pSurfaceInfo)
15558 {
15559 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
15560 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
15561 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015562 if (local_pSurfaceInfo)
15563 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015564 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015565 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015566 countingStream->rewind();
15567 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015568 uint64_t cgen_var_1087;
15569 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
15570 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015571 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015572 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15573 }
15574 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15575 countingStream->rewind();
15576 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
15577 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
15578 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015579 uint64_t cgen_var_1088;
15580 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
15581 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015582 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015583 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15584 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015585 if (pSurfaceCapabilities)
15586 {
15587 transform_fromhost_VkSurfaceCapabilities2KHR(mImpl->resources(), (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
15588 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015589 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
15590 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015591 countingStream->clearPool();
15592 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015593 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015594 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015595 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
15596}
15597
15598VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
15599 VkPhysicalDevice physicalDevice,
15600 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
15601 uint32_t* pSurfaceFormatCount,
15602 VkSurfaceFormat2KHR* pSurfaceFormats)
15603{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015604 mImpl->log("start vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015605 auto stream = mImpl->stream();
15606 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015607 auto resources = mImpl->resources();
15608 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015609 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015610 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015611 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015612 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015613 local_pSurfaceInfo = nullptr;
15614 if (pSurfaceInfo)
15615 {
15616 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
15617 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
15618 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015619 if (local_pSurfaceInfo)
15620 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015621 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015622 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015623 countingStream->rewind();
15624 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015625 uint64_t cgen_var_1089;
15626 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1089, 1);
15627 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015628 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015629 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015630 uint64_t cgen_var_1090 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
15631 countingStream->putBe64(cgen_var_1090);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015632 if (pSurfaceFormatCount)
15633 {
15634 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15635 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015636 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015637 uint64_t cgen_var_1091 = (uint64_t)(uintptr_t)pSurfaceFormats;
15638 countingStream->putBe64(cgen_var_1091);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015639 if (pSurfaceFormats)
15640 {
15641 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15642 {
15643 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15644 }
15645 }
15646 }
15647 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15648 countingStream->rewind();
15649 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
15650 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
15651 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015652 uint64_t cgen_var_1092;
15653 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1092, 1);
15654 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015655 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015656 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015657 uint64_t cgen_var_1093 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
15658 stream->putBe64(cgen_var_1093);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015659 if (pSurfaceFormatCount)
15660 {
15661 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15662 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015663 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015664 uint64_t cgen_var_1094 = (uint64_t)(uintptr_t)pSurfaceFormats;
15665 stream->putBe64(cgen_var_1094);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015666 if (pSurfaceFormats)
15667 {
15668 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15669 {
15670 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15671 }
15672 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015673 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015674 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015675 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015676 if (pSurfaceFormatCount)
15677 {
15678 if (!(check_pSurfaceFormatCount))
15679 {
15680 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
15681 }
15682 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
15683 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015684 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015685 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015686 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015687 if (pSurfaceFormats)
15688 {
15689 if (!(check_pSurfaceFormats))
15690 {
15691 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
15692 }
15693 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15694 {
15695 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15696 }
15697 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015698 if (pSurfaceFormats)
15699 {
15700 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
15701 {
15702 transform_fromhost_VkSurfaceFormat2KHR(mImpl->resources(), (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
15703 }
15704 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015705 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
15706 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015707 countingStream->clearPool();
15708 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015709 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015710 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormats2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015711 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
15712}
15713
15714#endif
15715#ifdef VK_KHR_variable_pointers
15716#endif
15717#ifdef VK_KHR_get_display_properties2
15718VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
15719 VkPhysicalDevice physicalDevice,
15720 uint32_t* pPropertyCount,
15721 VkDisplayProperties2KHR* pProperties)
15722{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015723 mImpl->log("start vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015724 auto stream = mImpl->stream();
15725 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015726 auto resources = mImpl->resources();
15727 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015728 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015729 VkPhysicalDevice local_physicalDevice;
15730 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015731 countingStream->rewind();
15732 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015733 uint64_t cgen_var_1097;
15734 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
15735 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015736 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015737 uint64_t cgen_var_1098 = (uint64_t)(uintptr_t)pPropertyCount;
15738 countingStream->putBe64(cgen_var_1098);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015739 if (pPropertyCount)
15740 {
15741 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15742 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015743 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015744 uint64_t cgen_var_1099 = (uint64_t)(uintptr_t)pProperties;
15745 countingStream->putBe64(cgen_var_1099);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015746 if (pProperties)
15747 {
15748 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15749 {
15750 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
15751 }
15752 }
15753 }
15754 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15755 countingStream->rewind();
15756 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
15757 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
15758 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015759 uint64_t cgen_var_1100;
15760 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1100, 1);
15761 stream->write((uint64_t*)&cgen_var_1100, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015762 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015763 uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pPropertyCount;
15764 stream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015765 if (pPropertyCount)
15766 {
15767 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15768 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015769 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015770 uint64_t cgen_var_1102 = (uint64_t)(uintptr_t)pProperties;
15771 stream->putBe64(cgen_var_1102);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015772 if (pProperties)
15773 {
15774 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15775 {
15776 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15777 }
15778 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015779 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015780 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015781 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015782 if (pPropertyCount)
15783 {
15784 if (!(check_pPropertyCount))
15785 {
15786 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
15787 }
15788 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
15789 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015790 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015791 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015792 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015793 if (pProperties)
15794 {
15795 if (!(check_pProperties))
15796 {
15797 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
15798 }
15799 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15800 {
15801 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
15802 }
15803 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015804 if (pProperties)
15805 {
15806 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15807 {
15808 transform_fromhost_VkDisplayProperties2KHR(mImpl->resources(), (VkDisplayProperties2KHR*)(pProperties + i));
15809 }
15810 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015811 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
15812 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015813 countingStream->clearPool();
15814 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015815 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015816 mImpl->log("finish vkGetPhysicalDeviceDisplayProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015817 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
15818}
15819
15820VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
15821 VkPhysicalDevice physicalDevice,
15822 uint32_t* pPropertyCount,
15823 VkDisplayPlaneProperties2KHR* pProperties)
15824{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015825 mImpl->log("start vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015826 auto stream = mImpl->stream();
15827 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015828 auto resources = mImpl->resources();
15829 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015830 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015831 VkPhysicalDevice local_physicalDevice;
15832 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015833 countingStream->rewind();
15834 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015835 uint64_t cgen_var_1105;
15836 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1105, 1);
15837 countingStream->write((uint64_t*)&cgen_var_1105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015838 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015839 uint64_t cgen_var_1106 = (uint64_t)(uintptr_t)pPropertyCount;
15840 countingStream->putBe64(cgen_var_1106);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015841 if (pPropertyCount)
15842 {
15843 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15844 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015845 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015846 uint64_t cgen_var_1107 = (uint64_t)(uintptr_t)pProperties;
15847 countingStream->putBe64(cgen_var_1107);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015848 if (pProperties)
15849 {
15850 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15851 {
15852 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15853 }
15854 }
15855 }
15856 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15857 countingStream->rewind();
15858 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
15859 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
15860 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015861 uint64_t cgen_var_1108;
15862 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1108, 1);
15863 stream->write((uint64_t*)&cgen_var_1108, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015864 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015865 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pPropertyCount;
15866 stream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015867 if (pPropertyCount)
15868 {
15869 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15870 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015871 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015872 uint64_t cgen_var_1110 = (uint64_t)(uintptr_t)pProperties;
15873 stream->putBe64(cgen_var_1110);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015874 if (pProperties)
15875 {
15876 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15877 {
15878 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15879 }
15880 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015881 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015882 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015883 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015884 if (pPropertyCount)
15885 {
15886 if (!(check_pPropertyCount))
15887 {
15888 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
15889 }
15890 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
15891 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015892 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015893 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015894 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015895 if (pProperties)
15896 {
15897 if (!(check_pProperties))
15898 {
15899 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
15900 }
15901 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15902 {
15903 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15904 }
15905 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080015906 if (pProperties)
15907 {
15908 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15909 {
15910 transform_fromhost_VkDisplayPlaneProperties2KHR(mImpl->resources(), (VkDisplayPlaneProperties2KHR*)(pProperties + i));
15911 }
15912 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015913 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
15914 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015915 countingStream->clearPool();
15916 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015917 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015918 mImpl->log("finish vkGetPhysicalDeviceDisplayPlaneProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015919 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
15920}
15921
15922VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
15923 VkPhysicalDevice physicalDevice,
15924 VkDisplayKHR display,
15925 uint32_t* pPropertyCount,
15926 VkDisplayModeProperties2KHR* pProperties)
15927{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015928 mImpl->log("start vkGetDisplayModeProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015929 auto stream = mImpl->stream();
15930 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015931 auto resources = mImpl->resources();
15932 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015933 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015934 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015935 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015936 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015937 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015938 countingStream->rewind();
15939 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015940 uint64_t cgen_var_1113;
15941 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1113, 1);
15942 countingStream->write((uint64_t*)&cgen_var_1113, 1 * 8);
15943 uint64_t cgen_var_1114;
15944 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1114, 1);
15945 countingStream->write((uint64_t*)&cgen_var_1114, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015946 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015947 uint64_t cgen_var_1115 = (uint64_t)(uintptr_t)pPropertyCount;
15948 countingStream->putBe64(cgen_var_1115);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015949 if (pPropertyCount)
15950 {
15951 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15952 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015953 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015954 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pProperties;
15955 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015956 if (pProperties)
15957 {
15958 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15959 {
15960 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
15961 }
15962 }
15963 }
15964 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15965 countingStream->rewind();
15966 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
15967 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
15968 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015969 uint64_t cgen_var_1117;
15970 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1117, 1);
15971 stream->write((uint64_t*)&cgen_var_1117, 1 * 8);
15972 uint64_t cgen_var_1118;
15973 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1118, 1);
15974 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015975 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015976 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
15977 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015978 if (pPropertyCount)
15979 {
15980 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
15981 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015982 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015983 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
15984 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015985 if (pProperties)
15986 {
15987 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
15988 {
15989 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
15990 }
15991 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015992 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015993 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015994 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015995 if (pPropertyCount)
15996 {
15997 if (!(check_pPropertyCount))
15998 {
15999 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16000 }
16001 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16002 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016003 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016004 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016005 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016006 if (pProperties)
16007 {
16008 if (!(check_pProperties))
16009 {
16010 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16011 }
16012 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16013 {
16014 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16015 }
16016 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016017 if (pProperties)
16018 {
16019 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16020 {
16021 transform_fromhost_VkDisplayModeProperties2KHR(mImpl->resources(), (VkDisplayModeProperties2KHR*)(pProperties + i));
16022 }
16023 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016024 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
16025 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016026 countingStream->clearPool();
16027 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016028 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016029 mImpl->log("finish vkGetDisplayModeProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016030 return vkGetDisplayModeProperties2KHR_VkResult_return;
16031}
16032
16033VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
16034 VkPhysicalDevice physicalDevice,
16035 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
16036 VkDisplayPlaneCapabilities2KHR* pCapabilities)
16037{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016038 mImpl->log("start vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016039 auto stream = mImpl->stream();
16040 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016041 auto resources = mImpl->resources();
16042 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016043 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016044 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016045 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016046 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016047 local_pDisplayPlaneInfo = nullptr;
16048 if (pDisplayPlaneInfo)
16049 {
16050 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
16051 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
16052 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016053 if (local_pDisplayPlaneInfo)
16054 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016055 transform_tohost_VkDisplayPlaneInfo2KHR(mImpl->resources(), (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016056 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016057 countingStream->rewind();
16058 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016059 uint64_t cgen_var_1123;
16060 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
16061 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016062 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016063 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16064 }
16065 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16066 countingStream->rewind();
16067 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
16068 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
16069 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016070 uint64_t cgen_var_1124;
16071 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1124, 1);
16072 stream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016073 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016074 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16075 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016076 if (pCapabilities)
16077 {
16078 transform_fromhost_VkDisplayPlaneCapabilities2KHR(mImpl->resources(), (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16079 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016080 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
16081 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016082 countingStream->clearPool();
16083 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016084 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016085 mImpl->log("finish vkGetDisplayPlaneCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016086 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
16087}
16088
16089#endif
16090#ifdef VK_KHR_dedicated_allocation
16091#endif
16092#ifdef VK_KHR_storage_buffer_storage_class
16093#endif
16094#ifdef VK_KHR_relaxed_block_layout
16095#endif
16096#ifdef VK_KHR_get_memory_requirements2
16097void VkEncoder::vkGetImageMemoryRequirements2KHR(
16098 VkDevice device,
16099 const VkImageMemoryRequirementsInfo2* pInfo,
16100 VkMemoryRequirements2* pMemoryRequirements)
16101{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016102 mImpl->log("start vkGetImageMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016103 auto stream = mImpl->stream();
16104 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016105 auto resources = mImpl->resources();
16106 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016107 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016108 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016109 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016110 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016111 local_pInfo = nullptr;
16112 if (pInfo)
16113 {
16114 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
16115 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
16116 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016117 if (local_pInfo)
16118 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016119 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016120 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016121 countingStream->rewind();
16122 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016123 uint64_t cgen_var_1125;
16124 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1125, 1);
16125 countingStream->write((uint64_t*)&cgen_var_1125, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016126 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016127 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
16128 }
16129 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16130 countingStream->rewind();
16131 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
16132 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
16133 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016134 uint64_t cgen_var_1126;
16135 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1126, 1);
16136 stream->write((uint64_t*)&cgen_var_1126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016137 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016138 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
16139 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016140 if (pMemoryRequirements)
16141 {
16142 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
16143 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016144 mImpl->log("finish vkGetImageMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016145}
16146
16147void VkEncoder::vkGetBufferMemoryRequirements2KHR(
16148 VkDevice device,
16149 const VkBufferMemoryRequirementsInfo2* pInfo,
16150 VkMemoryRequirements2* pMemoryRequirements)
16151{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016152 mImpl->log("start vkGetBufferMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016153 auto stream = mImpl->stream();
16154 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016155 auto resources = mImpl->resources();
16156 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016157 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016158 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016159 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016160 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016161 local_pInfo = nullptr;
16162 if (pInfo)
16163 {
16164 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
16165 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
16166 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016167 if (local_pInfo)
16168 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016169 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016170 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016171 countingStream->rewind();
16172 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016173 uint64_t cgen_var_1127;
16174 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1127, 1);
16175 countingStream->write((uint64_t*)&cgen_var_1127, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016176 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016177 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
16178 }
16179 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16180 countingStream->rewind();
16181 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
16182 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
16183 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016184 uint64_t cgen_var_1128;
16185 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1128, 1);
16186 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016187 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016188 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
16189 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016190 if (pMemoryRequirements)
16191 {
16192 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
16193 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016194 mImpl->log("finish vkGetBufferMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016195}
16196
16197void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
16198 VkDevice device,
16199 const VkImageSparseMemoryRequirementsInfo2* pInfo,
16200 uint32_t* pSparseMemoryRequirementCount,
16201 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
16202{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016203 mImpl->log("start vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016204 auto stream = mImpl->stream();
16205 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016206 auto resources = mImpl->resources();
16207 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016208 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016209 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016210 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016211 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016212 local_pInfo = nullptr;
16213 if (pInfo)
16214 {
16215 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
16216 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
16217 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016218 if (local_pInfo)
16219 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016220 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016221 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016222 countingStream->rewind();
16223 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016224 uint64_t cgen_var_1129;
16225 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1129, 1);
16226 countingStream->write((uint64_t*)&cgen_var_1129, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016227 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016228 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016229 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
16230 countingStream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016231 if (pSparseMemoryRequirementCount)
16232 {
16233 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16234 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016235 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016236 uint64_t cgen_var_1131 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
16237 countingStream->putBe64(cgen_var_1131);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016238 if (pSparseMemoryRequirements)
16239 {
16240 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16241 {
16242 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16243 }
16244 }
16245 }
16246 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16247 countingStream->rewind();
16248 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
16249 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
16250 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016251 uint64_t cgen_var_1132;
16252 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1132, 1);
16253 stream->write((uint64_t*)&cgen_var_1132, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016254 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016255 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016256 uint64_t cgen_var_1133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
16257 stream->putBe64(cgen_var_1133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016258 if (pSparseMemoryRequirementCount)
16259 {
16260 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16261 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016262 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016263 uint64_t cgen_var_1134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
16264 stream->putBe64(cgen_var_1134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016265 if (pSparseMemoryRequirements)
16266 {
16267 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16268 {
16269 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16270 }
16271 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016272 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016273 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016274 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016275 if (pSparseMemoryRequirementCount)
16276 {
16277 if (!(check_pSparseMemoryRequirementCount))
16278 {
16279 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
16280 }
16281 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
16282 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016283 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016284 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016285 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016286 if (pSparseMemoryRequirements)
16287 {
16288 if (!(check_pSparseMemoryRequirements))
16289 {
16290 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
16291 }
16292 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16293 {
16294 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16295 }
16296 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016297 if (pSparseMemoryRequirements)
16298 {
16299 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
16300 {
16301 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
16302 }
16303 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016304 mImpl->log("finish vkGetImageSparseMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016305}
16306
16307#endif
16308#ifdef VK_KHR_image_format_list
16309#endif
16310#ifdef VK_KHR_sampler_ycbcr_conversion
16311VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
16312 VkDevice device,
16313 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
16314 const VkAllocationCallbacks* pAllocator,
16315 VkSamplerYcbcrConversion* pYcbcrConversion)
16316{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016317 mImpl->log("start vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016318 auto stream = mImpl->stream();
16319 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016320 auto resources = mImpl->resources();
16321 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016322 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016323 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016324 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016325 VkAllocationCallbacks* local_pAllocator;
16326 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016327 local_pCreateInfo = nullptr;
16328 if (pCreateInfo)
16329 {
16330 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
16331 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
16332 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016333 local_pAllocator = nullptr;
16334 if (pAllocator)
16335 {
16336 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16337 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16338 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016339 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016340 if (local_pCreateInfo)
16341 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016342 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016343 }
16344 if (local_pAllocator)
16345 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016346 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016347 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016348 countingStream->rewind();
16349 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016350 uint64_t cgen_var_1137;
16351 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
16352 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016353 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016354 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016355 uint64_t cgen_var_1138 = (uint64_t)(uintptr_t)local_pAllocator;
16356 countingStream->putBe64(cgen_var_1138);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016357 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016358 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016359 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016360 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016361 uint64_t cgen_var_1139;
16362 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1139, 1);
16363 countingStream->write((uint64_t*)&cgen_var_1139, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016364 }
16365 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16366 countingStream->rewind();
16367 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
16368 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
16369 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016370 uint64_t cgen_var_1140;
16371 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1140, 1);
16372 stream->write((uint64_t*)&cgen_var_1140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016373 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016374 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016375 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)local_pAllocator;
16376 stream->putBe64(cgen_var_1141);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016377 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016378 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016379 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016380 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016381 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016382 uint64_t cgen_var_1142;
16383 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1142, 1);
16384 stream->write((uint64_t*)&cgen_var_1142, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016385 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016386 uint64_t cgen_var_1143;
16387 stream->read((uint64_t*)&cgen_var_1143, 8);
16388 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1143, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016389 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
16390 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016391 countingStream->clearPool();
16392 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016393 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016394 mImpl->log("finish vkCreateSamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016395 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
16396}
16397
16398void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
16399 VkDevice device,
16400 VkSamplerYcbcrConversion ycbcrConversion,
16401 const VkAllocationCallbacks* pAllocator)
16402{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016403 mImpl->log("start vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016404 auto stream = mImpl->stream();
16405 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016406 auto resources = mImpl->resources();
16407 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016408 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016409 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016410 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016411 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016412 local_device = device;
16413 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016414 local_pAllocator = nullptr;
16415 if (pAllocator)
16416 {
16417 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16418 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16419 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016420 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080016421 if (local_pAllocator)
16422 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016423 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016424 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016425 countingStream->rewind();
16426 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016427 uint64_t cgen_var_1144;
16428 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1144, 1);
16429 countingStream->write((uint64_t*)&cgen_var_1144, 1 * 8);
16430 uint64_t cgen_var_1145;
16431 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1145, 1);
16432 countingStream->write((uint64_t*)&cgen_var_1145, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016433 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016434 uint64_t cgen_var_1146 = (uint64_t)(uintptr_t)local_pAllocator;
16435 countingStream->putBe64(cgen_var_1146);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016436 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016437 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016438 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016439 }
16440 }
16441 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16442 countingStream->rewind();
16443 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
16444 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
16445 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016446 uint64_t cgen_var_1147;
16447 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
16448 stream->write((uint64_t*)&cgen_var_1147, 1 * 8);
16449 uint64_t cgen_var_1148;
16450 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1148, 1);
16451 stream->write((uint64_t*)&cgen_var_1148, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016452 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016453 uint64_t cgen_var_1149 = (uint64_t)(uintptr_t)local_pAllocator;
16454 stream->putBe64(cgen_var_1149);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016455 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016456 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016457 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016458 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016459 mImpl->log("finish vkDestroySamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016460}
16461
16462#endif
16463#ifdef VK_KHR_bind_memory2
16464VkResult VkEncoder::vkBindBufferMemory2KHR(
16465 VkDevice device,
16466 uint32_t bindInfoCount,
16467 const VkBindBufferMemoryInfo* pBindInfos)
16468{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016469 mImpl->log("start vkBindBufferMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016470 auto stream = mImpl->stream();
16471 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016472 auto resources = mImpl->resources();
16473 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016474 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016475 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016476 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016477 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016478 local_device = device;
16479 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016480 local_pBindInfos = nullptr;
16481 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016482 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016483 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016484 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16485 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016486 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
16487 }
16488 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016489 if (local_pBindInfos)
16490 {
16491 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16492 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016493 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016494 }
16495 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016496 countingStream->rewind();
16497 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016498 uint64_t cgen_var_1150;
16499 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
16500 countingStream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016501 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
16502 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16503 {
16504 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016505 }
16506 }
16507 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16508 countingStream->rewind();
16509 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
16510 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
16511 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016512 uint64_t cgen_var_1151;
16513 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1151, 1);
16514 stream->write((uint64_t*)&cgen_var_1151, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016515 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016516 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16517 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016518 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016519 }
16520 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
16521 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016522 countingStream->clearPool();
16523 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016524 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016525 mImpl->log("finish vkBindBufferMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016526 return vkBindBufferMemory2KHR_VkResult_return;
16527}
16528
16529VkResult VkEncoder::vkBindImageMemory2KHR(
16530 VkDevice device,
16531 uint32_t bindInfoCount,
16532 const VkBindImageMemoryInfo* pBindInfos)
16533{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016534 mImpl->log("start vkBindImageMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016535 auto stream = mImpl->stream();
16536 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016537 auto resources = mImpl->resources();
16538 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016539 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016540 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016541 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016542 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016543 local_device = device;
16544 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016545 local_pBindInfos = nullptr;
16546 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016547 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016548 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016549 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16550 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016551 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
16552 }
16553 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016554 if (local_pBindInfos)
16555 {
16556 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16557 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016558 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016559 }
16560 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016561 countingStream->rewind();
16562 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016563 uint64_t cgen_var_1152;
16564 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1152, 1);
16565 countingStream->write((uint64_t*)&cgen_var_1152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016566 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
16567 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16568 {
16569 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016570 }
16571 }
16572 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16573 countingStream->rewind();
16574 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
16575 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
16576 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016577 uint64_t cgen_var_1153;
16578 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1153, 1);
16579 stream->write((uint64_t*)&cgen_var_1153, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016580 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016581 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
16582 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016583 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016584 }
16585 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
16586 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016587 countingStream->clearPool();
16588 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016589 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016590 mImpl->log("finish vkBindImageMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016591 return vkBindImageMemory2KHR_VkResult_return;
16592}
16593
16594#endif
16595#ifdef VK_KHR_maintenance3
16596void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
16597 VkDevice device,
16598 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
16599 VkDescriptorSetLayoutSupport* pSupport)
16600{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016601 mImpl->log("start vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016602 auto stream = mImpl->stream();
16603 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016604 auto resources = mImpl->resources();
16605 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016606 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016607 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016608 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016609 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016610 local_pCreateInfo = nullptr;
16611 if (pCreateInfo)
16612 {
16613 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
16614 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
16615 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016616 if (local_pCreateInfo)
16617 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016618 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016619 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016620 countingStream->rewind();
16621 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016622 uint64_t cgen_var_1154;
16623 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
16624 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016625 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016626 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
16627 }
16628 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16629 countingStream->rewind();
16630 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
16631 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
16632 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016633 uint64_t cgen_var_1155;
16634 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1155, 1);
16635 stream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016636 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016637 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
16638 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016639 if (pSupport)
16640 {
16641 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
16642 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016643 mImpl->log("finish vkGetDescriptorSetLayoutSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016644}
16645
16646#endif
16647#ifdef VK_KHR_draw_indirect_count
16648void VkEncoder::vkCmdDrawIndirectCountKHR(
16649 VkCommandBuffer commandBuffer,
16650 VkBuffer buffer,
16651 VkDeviceSize offset,
16652 VkBuffer countBuffer,
16653 VkDeviceSize countBufferOffset,
16654 uint32_t maxDrawCount,
16655 uint32_t stride)
16656{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016657 mImpl->log("start vkCmdDrawIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016658 auto stream = mImpl->stream();
16659 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016660 auto resources = mImpl->resources();
16661 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016663 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016664 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016665 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016666 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016667 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016668 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016669 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016670 local_commandBuffer = commandBuffer;
16671 local_buffer = buffer;
16672 local_offset = offset;
16673 local_countBuffer = countBuffer;
16674 local_countBufferOffset = countBufferOffset;
16675 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016676 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016677 countingStream->rewind();
16678 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016679 uint64_t cgen_var_1156;
16680 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1156, 1);
16681 countingStream->write((uint64_t*)&cgen_var_1156, 1 * 8);
16682 uint64_t cgen_var_1157;
16683 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1157, 1);
16684 countingStream->write((uint64_t*)&cgen_var_1157, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016685 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016686 uint64_t cgen_var_1158;
16687 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1158, 1);
16688 countingStream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016689 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16690 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16691 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016692 }
16693 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16694 countingStream->rewind();
16695 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
16696 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
16697 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016698 uint64_t cgen_var_1159;
16699 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1159, 1);
16700 stream->write((uint64_t*)&cgen_var_1159, 1 * 8);
16701 uint64_t cgen_var_1160;
16702 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1160, 1);
16703 stream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016704 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016705 uint64_t cgen_var_1161;
16706 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1161, 1);
16707 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016708 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16709 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16710 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016711 mImpl->log("finish vkCmdDrawIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016712}
16713
16714void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
16715 VkCommandBuffer commandBuffer,
16716 VkBuffer buffer,
16717 VkDeviceSize offset,
16718 VkBuffer countBuffer,
16719 VkDeviceSize countBufferOffset,
16720 uint32_t maxDrawCount,
16721 uint32_t stride)
16722{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016723 mImpl->log("start vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016724 auto stream = mImpl->stream();
16725 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016726 auto resources = mImpl->resources();
16727 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016728 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016729 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016730 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016731 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016732 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016733 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016734 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016735 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016736 local_commandBuffer = commandBuffer;
16737 local_buffer = buffer;
16738 local_offset = offset;
16739 local_countBuffer = countBuffer;
16740 local_countBufferOffset = countBufferOffset;
16741 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016742 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016743 countingStream->rewind();
16744 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016745 uint64_t cgen_var_1162;
16746 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1162, 1);
16747 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
16748 uint64_t cgen_var_1163;
16749 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1163, 1);
16750 countingStream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016751 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016752 uint64_t cgen_var_1164;
16753 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1164, 1);
16754 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016755 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16756 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16757 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016758 }
16759 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16760 countingStream->rewind();
16761 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
16762 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
16763 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016764 uint64_t cgen_var_1165;
16765 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1165, 1);
16766 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
16767 uint64_t cgen_var_1166;
16768 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1166, 1);
16769 stream->write((uint64_t*)&cgen_var_1166, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080016770 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080016771 uint64_t cgen_var_1167;
16772 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1167, 1);
16773 stream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016774 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
16775 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
16776 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016777 mImpl->log("finish vkCmdDrawIndexedIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016778}
16779
16780#endif
16781#ifdef VK_KHR_8bit_storage
16782#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080016783#ifdef VK_ANDROID_native_buffer
16784VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
16785 VkDevice device,
16786 VkFormat format,
16787 VkImageUsageFlags imageUsage,
16788 int* grallocUsage)
16789{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016790 mImpl->log("start vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080016791 auto stream = mImpl->stream();
16792 auto countingStream = mImpl->countingStream();
16793 auto resources = mImpl->resources();
16794 auto pool = mImpl->pool();
16795 stream->setHandleMapping(resources->unwrapMapping());
16796 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016797 VkFormat local_format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016798 VkImageUsageFlags local_imageUsage;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016799 local_device = device;
16800 local_format = format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016801 local_imageUsage = imageUsage;
16802 countingStream->rewind();
16803 {
16804 uint64_t cgen_var_1168;
16805 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1168, 1);
16806 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
16807 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
16808 countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
16809 countingStream->write((int*)grallocUsage, sizeof(int));
16810 }
16811 uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16812 countingStream->rewind();
16813 uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
16814 stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
16815 stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
16816 uint64_t cgen_var_1169;
16817 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1169, 1);
16818 stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
16819 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
16820 stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
16821 stream->write((int*)grallocUsage, sizeof(int));
16822 stream->read((int*)grallocUsage, sizeof(int));
16823 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
16824 stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
16825 countingStream->clearPool();
16826 stream->clearPool();
16827 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016828 mImpl->log("finish vkGetSwapchainGrallocUsageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016829 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
16830}
16831
16832VkResult VkEncoder::vkAcquireImageANDROID(
16833 VkDevice device,
16834 VkImage image,
16835 int nativeFenceFd,
16836 VkSemaphore semaphore,
16837 VkFence fence)
16838{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016839 mImpl->log("start vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080016840 auto stream = mImpl->stream();
16841 auto countingStream = mImpl->countingStream();
16842 auto resources = mImpl->resources();
16843 auto pool = mImpl->pool();
16844 stream->setHandleMapping(resources->unwrapMapping());
16845 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016846 VkImage local_image;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016847 int local_nativeFenceFd;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016848 VkSemaphore local_semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016849 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016850 local_device = device;
16851 local_image = image;
16852 local_nativeFenceFd = nativeFenceFd;
16853 local_semaphore = semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016854 local_fence = fence;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -080016855 mImpl->resources()->unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016856 countingStream->rewind();
16857 {
16858 uint64_t cgen_var_1170;
16859 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1170, 1);
16860 countingStream->write((uint64_t*)&cgen_var_1170, 1 * 8);
16861 uint64_t cgen_var_1171;
16862 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1171, 1);
16863 countingStream->write((uint64_t*)&cgen_var_1171, 1 * 8);
16864 countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
16865 uint64_t cgen_var_1172;
16866 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1172, 1);
16867 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
16868 uint64_t cgen_var_1173;
16869 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1173, 1);
16870 countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
16871 }
16872 uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16873 countingStream->rewind();
16874 uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
16875 stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
16876 stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
16877 uint64_t cgen_var_1174;
16878 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1174, 1);
16879 stream->write((uint64_t*)&cgen_var_1174, 1 * 8);
16880 uint64_t cgen_var_1175;
16881 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1175, 1);
16882 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
16883 stream->write((int*)&local_nativeFenceFd, sizeof(int));
16884 uint64_t cgen_var_1176;
16885 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1176, 1);
16886 stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
16887 uint64_t cgen_var_1177;
16888 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1177, 1);
16889 stream->write((uint64_t*)&cgen_var_1177, 1 * 8);
16890 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
16891 stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
16892 countingStream->clearPool();
16893 stream->clearPool();
16894 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016895 mImpl->log("finish vkAcquireImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016896 return vkAcquireImageANDROID_VkResult_return;
16897}
16898
16899VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
16900 VkQueue queue,
16901 uint32_t waitSemaphoreCount,
16902 const VkSemaphore* pWaitSemaphores,
16903 VkImage image,
16904 int* pNativeFenceFd)
16905{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016906 mImpl->log("start vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080016907 auto stream = mImpl->stream();
16908 auto countingStream = mImpl->countingStream();
16909 auto resources = mImpl->resources();
16910 auto pool = mImpl->pool();
16911 stream->setHandleMapping(resources->unwrapMapping());
16912 VkQueue local_queue;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016913 uint32_t local_waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016914 VkSemaphore* local_pWaitSemaphores;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016915 VkImage local_image;
16916 local_queue = queue;
16917 local_waitSemaphoreCount = waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016918 local_pWaitSemaphores = nullptr;
16919 if (pWaitSemaphores)
16920 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080016921 local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, ((waitSemaphoreCount)) * sizeof(const VkSemaphore));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016922 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016923 local_image = image;
16924 countingStream->rewind();
16925 {
16926 uint64_t cgen_var_1178;
16927 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1178, 1);
16928 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
16929 countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080016930 // WARNING PTR CHECK
16931 uint64_t cgen_var_1179 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
16932 countingStream->putBe64(cgen_var_1179);
16933 if (local_pWaitSemaphores)
16934 {
16935 if (((waitSemaphoreCount)))
16936 {
16937 uint64_t* cgen_var_1180;
16938 countingStream->alloc((void**)&cgen_var_1180, ((waitSemaphoreCount)) * 8);
16939 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1180, ((waitSemaphoreCount)));
16940 countingStream->write((uint64_t*)cgen_var_1180, ((waitSemaphoreCount)) * 8);
16941 }
16942 }
16943 uint64_t cgen_var_1181;
16944 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1181, 1);
16945 countingStream->write((uint64_t*)&cgen_var_1181, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016946 countingStream->write((int*)pNativeFenceFd, sizeof(int));
16947 }
16948 uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16949 countingStream->rewind();
16950 uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
16951 stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
16952 stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016953 uint64_t cgen_var_1182;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080016954 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1182, 1);
16955 stream->write((uint64_t*)&cgen_var_1182, 1 * 8);
16956 stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
16957 // WARNING PTR CHECK
16958 uint64_t cgen_var_1183 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
16959 stream->putBe64(cgen_var_1183);
16960 if (local_pWaitSemaphores)
16961 {
16962 if (((waitSemaphoreCount)))
16963 {
16964 uint64_t* cgen_var_1184;
16965 stream->alloc((void**)&cgen_var_1184, ((waitSemaphoreCount)) * 8);
16966 stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1184, ((waitSemaphoreCount)));
16967 stream->write((uint64_t*)cgen_var_1184, ((waitSemaphoreCount)) * 8);
16968 }
16969 }
16970 uint64_t cgen_var_1185;
16971 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1185, 1);
16972 stream->write((uint64_t*)&cgen_var_1185, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080016973 stream->write((int*)pNativeFenceFd, sizeof(int));
16974 stream->read((int*)pNativeFenceFd, sizeof(int));
16975 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
16976 stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
16977 countingStream->clearPool();
16978 stream->clearPool();
16979 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016980 mImpl->log("finish vkQueueSignalReleaseImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016981 return vkQueueSignalReleaseImageANDROID_VkResult_return;
16982}
16983
16984#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016985#ifdef VK_EXT_debug_report
16986VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
16987 VkInstance instance,
16988 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
16989 const VkAllocationCallbacks* pAllocator,
16990 VkDebugReportCallbackEXT* pCallback)
16991{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016992 mImpl->log("start vkCreateDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016993 auto stream = mImpl->stream();
16994 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016995 auto resources = mImpl->resources();
16996 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016997 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016998 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016999 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017000 VkAllocationCallbacks* local_pAllocator;
17001 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017002 local_pCreateInfo = nullptr;
17003 if (pCreateInfo)
17004 {
17005 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
17006 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
17007 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017008 local_pAllocator = nullptr;
17009 if (pAllocator)
17010 {
17011 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17012 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17013 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017014 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017015 if (local_pCreateInfo)
17016 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017017 transform_tohost_VkDebugReportCallbackCreateInfoEXT(mImpl->resources(), (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017018 }
17019 if (local_pAllocator)
17020 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017021 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017022 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017023 countingStream->rewind();
17024 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017025 uint64_t cgen_var_1186;
17026 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1186, 1);
17027 countingStream->write((uint64_t*)&cgen_var_1186, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017028 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017029 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017030 uint64_t cgen_var_1187 = (uint64_t)(uintptr_t)local_pAllocator;
17031 countingStream->putBe64(cgen_var_1187);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017032 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017033 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017034 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017035 }
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017036 uint64_t cgen_var_1188;
17037 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1188, 1);
17038 countingStream->write((uint64_t*)&cgen_var_1188, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017039 }
17040 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17041 countingStream->rewind();
17042 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
17043 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
17044 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017045 uint64_t cgen_var_1189;
17046 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1189, 1);
17047 stream->write((uint64_t*)&cgen_var_1189, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017048 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017049 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017050 uint64_t cgen_var_1190 = (uint64_t)(uintptr_t)local_pAllocator;
17051 stream->putBe64(cgen_var_1190);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017052 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017053 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017054 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017055 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017056 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017057 uint64_t cgen_var_1191;
17058 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1191, 1);
17059 stream->write((uint64_t*)&cgen_var_1191, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017060 stream->setHandleMapping(resources->unwrapMapping());
17061 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017062 uint64_t cgen_var_1192;
17063 stream->read((uint64_t*)&cgen_var_1192, 8);
17064 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1192, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017065 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017066 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
17067 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017068 countingStream->clearPool();
17069 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017070 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017071 mImpl->log("finish vkCreateDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017072 return vkCreateDebugReportCallbackEXT_VkResult_return;
17073}
17074
17075void VkEncoder::vkDestroyDebugReportCallbackEXT(
17076 VkInstance instance,
17077 VkDebugReportCallbackEXT callback,
17078 const VkAllocationCallbacks* pAllocator)
17079{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017080 mImpl->log("start vkDestroyDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017081 auto stream = mImpl->stream();
17082 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017083 auto resources = mImpl->resources();
17084 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017085 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017086 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017087 VkDebugReportCallbackEXT local_callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017088 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017089 local_instance = instance;
17090 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017091 local_pAllocator = nullptr;
17092 if (pAllocator)
17093 {
17094 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17095 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17096 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017097 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017098 if (local_pAllocator)
17099 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017100 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017101 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017102 countingStream->rewind();
17103 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017104 uint64_t cgen_var_1193;
17105 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1193, 1);
17106 countingStream->write((uint64_t*)&cgen_var_1193, 1 * 8);
17107 uint64_t cgen_var_1194;
17108 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1194, 1);
17109 countingStream->write((uint64_t*)&cgen_var_1194, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017110 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017111 uint64_t cgen_var_1195 = (uint64_t)(uintptr_t)local_pAllocator;
17112 countingStream->putBe64(cgen_var_1195);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017113 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017114 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017115 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017116 }
17117 }
17118 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17119 countingStream->rewind();
17120 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
17121 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
17122 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017123 uint64_t cgen_var_1196;
17124 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1196, 1);
17125 stream->write((uint64_t*)&cgen_var_1196, 1 * 8);
17126 uint64_t cgen_var_1197;
17127 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1197, 1);
17128 stream->write((uint64_t*)&cgen_var_1197, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017129 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017130 uint64_t cgen_var_1198 = (uint64_t)(uintptr_t)local_pAllocator;
17131 stream->putBe64(cgen_var_1198);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017132 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017133 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017134 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017135 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017136 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017137 mImpl->log("finish vkDestroyDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017138}
17139
17140void VkEncoder::vkDebugReportMessageEXT(
17141 VkInstance instance,
17142 VkDebugReportFlagsEXT flags,
17143 VkDebugReportObjectTypeEXT objectType,
17144 uint64_t object,
17145 size_t location,
17146 int32_t messageCode,
17147 const char* pLayerPrefix,
17148 const char* pMessage)
17149{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017150 mImpl->log("start vkDebugReportMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017151 auto stream = mImpl->stream();
17152 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017153 auto resources = mImpl->resources();
17154 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017155 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017156 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017157 VkDebugReportFlagsEXT local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017158 VkDebugReportObjectTypeEXT local_objectType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017159 uint64_t local_object;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017160 size_t local_location;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017161 int32_t local_messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017162 char* local_pLayerPrefix;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017163 char* local_pMessage;
17164 local_instance = instance;
17165 local_flags = flags;
17166 local_objectType = objectType;
17167 local_object = object;
17168 local_location = location;
17169 local_messageCode = messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017170 local_pLayerPrefix = nullptr;
17171 if (pLayerPrefix)
17172 {
17173 local_pLayerPrefix = pool->strDup(pLayerPrefix);
17174 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017175 local_pMessage = nullptr;
17176 if (pMessage)
17177 {
17178 local_pMessage = pool->strDup(pMessage);
17179 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017180 countingStream->rewind();
17181 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017182 uint64_t cgen_var_1199;
17183 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1199, 1);
17184 countingStream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017185 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
17186 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
17187 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017188 uint64_t cgen_var_1200 = (uint64_t)local_location;
17189 countingStream->putBe64(cgen_var_1200);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017190 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
17191 countingStream->putString(local_pLayerPrefix);
17192 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017193 }
17194 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17195 countingStream->rewind();
17196 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
17197 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
17198 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017199 uint64_t cgen_var_1201;
17200 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1201, 1);
17201 stream->write((uint64_t*)&cgen_var_1201, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017202 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
17203 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
17204 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017205 uint64_t cgen_var_1202 = (uint64_t)local_location;
17206 stream->putBe64(cgen_var_1202);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017207 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
17208 stream->putString(local_pLayerPrefix);
17209 stream->putString(local_pMessage);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017210 mImpl->log("finish vkDebugReportMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017211}
17212
17213#endif
17214#ifdef VK_NV_glsl_shader
17215#endif
17216#ifdef VK_EXT_depth_range_unrestricted
17217#endif
17218#ifdef VK_IMG_filter_cubic
17219#endif
17220#ifdef VK_AMD_rasterization_order
17221#endif
17222#ifdef VK_AMD_shader_trinary_minmax
17223#endif
17224#ifdef VK_AMD_shader_explicit_vertex_parameter
17225#endif
17226#ifdef VK_EXT_debug_marker
17227VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
17228 VkDevice device,
17229 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
17230{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017231 mImpl->log("start vkDebugMarkerSetObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017232 auto stream = mImpl->stream();
17233 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017234 auto resources = mImpl->resources();
17235 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017236 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017237 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017238 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017239 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017240 local_pTagInfo = nullptr;
17241 if (pTagInfo)
17242 {
17243 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
17244 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
17245 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017246 if (local_pTagInfo)
17247 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017248 transform_tohost_VkDebugMarkerObjectTagInfoEXT(mImpl->resources(), (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017249 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017250 countingStream->rewind();
17251 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017252 uint64_t cgen_var_1203;
17253 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1203, 1);
17254 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017255 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017256 }
17257 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17258 countingStream->rewind();
17259 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
17260 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
17261 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017262 uint64_t cgen_var_1204;
17263 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1204, 1);
17264 stream->write((uint64_t*)&cgen_var_1204, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017265 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017266 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
17267 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017268 countingStream->clearPool();
17269 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017270 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017271 mImpl->log("finish vkDebugMarkerSetObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017272 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
17273}
17274
17275VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
17276 VkDevice device,
17277 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
17278{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017279 mImpl->log("start vkDebugMarkerSetObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017280 auto stream = mImpl->stream();
17281 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017282 auto resources = mImpl->resources();
17283 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017284 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017285 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017286 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017287 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017288 local_pNameInfo = nullptr;
17289 if (pNameInfo)
17290 {
17291 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
17292 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
17293 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017294 if (local_pNameInfo)
17295 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017296 transform_tohost_VkDebugMarkerObjectNameInfoEXT(mImpl->resources(), (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017297 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017298 countingStream->rewind();
17299 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017300 uint64_t cgen_var_1205;
17301 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1205, 1);
17302 countingStream->write((uint64_t*)&cgen_var_1205, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017303 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017304 }
17305 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17306 countingStream->rewind();
17307 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
17308 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
17309 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017310 uint64_t cgen_var_1206;
17311 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1206, 1);
17312 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017313 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017314 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
17315 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017316 countingStream->clearPool();
17317 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017318 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017319 mImpl->log("finish vkDebugMarkerSetObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017320 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
17321}
17322
17323void VkEncoder::vkCmdDebugMarkerBeginEXT(
17324 VkCommandBuffer commandBuffer,
17325 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
17326{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017327 mImpl->log("start vkCmdDebugMarkerBeginEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017328 auto stream = mImpl->stream();
17329 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017330 auto resources = mImpl->resources();
17331 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017332 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017333 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017334 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017335 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017336 local_pMarkerInfo = nullptr;
17337 if (pMarkerInfo)
17338 {
17339 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
17340 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
17341 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017342 if (local_pMarkerInfo)
17343 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017344 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017345 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017346 countingStream->rewind();
17347 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017348 uint64_t cgen_var_1207;
17349 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1207, 1);
17350 countingStream->write((uint64_t*)&cgen_var_1207, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017351 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017352 }
17353 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17354 countingStream->rewind();
17355 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
17356 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
17357 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017358 uint64_t cgen_var_1208;
17359 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1208, 1);
17360 stream->write((uint64_t*)&cgen_var_1208, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017361 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017362 mImpl->log("finish vkCmdDebugMarkerBeginEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017363}
17364
17365void VkEncoder::vkCmdDebugMarkerEndEXT(
17366 VkCommandBuffer commandBuffer)
17367{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017368 mImpl->log("start vkCmdDebugMarkerEndEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017369 auto stream = mImpl->stream();
17370 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017371 auto resources = mImpl->resources();
17372 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017373 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017374 VkCommandBuffer local_commandBuffer;
17375 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017376 countingStream->rewind();
17377 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017378 uint64_t cgen_var_1209;
17379 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1209, 1);
17380 countingStream->write((uint64_t*)&cgen_var_1209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017381 }
17382 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17383 countingStream->rewind();
17384 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
17385 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
17386 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017387 uint64_t cgen_var_1210;
17388 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1210, 1);
17389 stream->write((uint64_t*)&cgen_var_1210, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017390 mImpl->log("finish vkCmdDebugMarkerEndEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017391}
17392
17393void VkEncoder::vkCmdDebugMarkerInsertEXT(
17394 VkCommandBuffer commandBuffer,
17395 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
17396{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017397 mImpl->log("start vkCmdDebugMarkerInsertEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017398 auto stream = mImpl->stream();
17399 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017400 auto resources = mImpl->resources();
17401 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017402 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017403 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017404 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017405 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017406 local_pMarkerInfo = nullptr;
17407 if (pMarkerInfo)
17408 {
17409 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
17410 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
17411 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017412 if (local_pMarkerInfo)
17413 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017414 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017415 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017416 countingStream->rewind();
17417 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017418 uint64_t cgen_var_1211;
17419 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1211, 1);
17420 countingStream->write((uint64_t*)&cgen_var_1211, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017421 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017422 }
17423 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17424 countingStream->rewind();
17425 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
17426 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
17427 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017428 uint64_t cgen_var_1212;
17429 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1212, 1);
17430 stream->write((uint64_t*)&cgen_var_1212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017431 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017432 mImpl->log("finish vkCmdDebugMarkerInsertEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017433}
17434
17435#endif
17436#ifdef VK_AMD_gcn_shader
17437#endif
17438#ifdef VK_NV_dedicated_allocation
17439#endif
17440#ifdef VK_AMD_draw_indirect_count
17441void VkEncoder::vkCmdDrawIndirectCountAMD(
17442 VkCommandBuffer commandBuffer,
17443 VkBuffer buffer,
17444 VkDeviceSize offset,
17445 VkBuffer countBuffer,
17446 VkDeviceSize countBufferOffset,
17447 uint32_t maxDrawCount,
17448 uint32_t stride)
17449{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017450 mImpl->log("start vkCmdDrawIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017451 auto stream = mImpl->stream();
17452 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017453 auto resources = mImpl->resources();
17454 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017455 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017456 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017457 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017458 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017459 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017460 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017461 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017462 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017463 local_commandBuffer = commandBuffer;
17464 local_buffer = buffer;
17465 local_offset = offset;
17466 local_countBuffer = countBuffer;
17467 local_countBufferOffset = countBufferOffset;
17468 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017469 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017470 countingStream->rewind();
17471 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017472 uint64_t cgen_var_1213;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017473 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1213, 1);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017474 countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017475 uint64_t cgen_var_1214;
17476 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1214, 1);
17477 countingStream->write((uint64_t*)&cgen_var_1214, 1 * 8);
17478 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
17479 uint64_t cgen_var_1215;
17480 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1215, 1);
17481 countingStream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017482 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17483 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17484 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017485 }
17486 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17487 countingStream->rewind();
17488 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
17489 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
17490 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017491 uint64_t cgen_var_1216;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017492 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1216, 1);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017493 stream->write((uint64_t*)&cgen_var_1216, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017494 uint64_t cgen_var_1217;
17495 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1217, 1);
17496 stream->write((uint64_t*)&cgen_var_1217, 1 * 8);
17497 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
17498 uint64_t cgen_var_1218;
17499 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1218, 1);
17500 stream->write((uint64_t*)&cgen_var_1218, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017501 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17502 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17503 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017504 mImpl->log("finish vkCmdDrawIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017505}
17506
17507void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
17508 VkCommandBuffer commandBuffer,
17509 VkBuffer buffer,
17510 VkDeviceSize offset,
17511 VkBuffer countBuffer,
17512 VkDeviceSize countBufferOffset,
17513 uint32_t maxDrawCount,
17514 uint32_t stride)
17515{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017516 mImpl->log("start vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017517 auto stream = mImpl->stream();
17518 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017519 auto resources = mImpl->resources();
17520 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017521 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017522 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017523 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017524 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017525 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017526 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017527 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017528 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017529 local_commandBuffer = commandBuffer;
17530 local_buffer = buffer;
17531 local_offset = offset;
17532 local_countBuffer = countBuffer;
17533 local_countBufferOffset = countBufferOffset;
17534 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017535 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017536 countingStream->rewind();
17537 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017538 uint64_t cgen_var_1219;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017539 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1219, 1);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017540 countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017541 uint64_t cgen_var_1220;
17542 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1220, 1);
17543 countingStream->write((uint64_t*)&cgen_var_1220, 1 * 8);
17544 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
17545 uint64_t cgen_var_1221;
17546 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1221, 1);
17547 countingStream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017548 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17549 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17550 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017551 }
17552 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17553 countingStream->rewind();
17554 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
17555 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
17556 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017557 uint64_t cgen_var_1222;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017558 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1222, 1);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017559 stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017560 uint64_t cgen_var_1223;
17561 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1223, 1);
17562 stream->write((uint64_t*)&cgen_var_1223, 1 * 8);
17563 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
17564 uint64_t cgen_var_1224;
17565 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1224, 1);
17566 stream->write((uint64_t*)&cgen_var_1224, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017567 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17568 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17569 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017570 mImpl->log("finish vkCmdDrawIndexedIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017571}
17572
17573#endif
17574#ifdef VK_AMD_negative_viewport_height
17575#endif
17576#ifdef VK_AMD_gpu_shader_half_float
17577#endif
17578#ifdef VK_AMD_shader_ballot
17579#endif
17580#ifdef VK_AMD_texture_gather_bias_lod
17581#endif
17582#ifdef VK_AMD_shader_info
17583VkResult VkEncoder::vkGetShaderInfoAMD(
17584 VkDevice device,
17585 VkPipeline pipeline,
17586 VkShaderStageFlagBits shaderStage,
17587 VkShaderInfoTypeAMD infoType,
17588 size_t* pInfoSize,
17589 void* pInfo)
17590{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017591 mImpl->log("start vkGetShaderInfoAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017592 auto stream = mImpl->stream();
17593 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017594 auto resources = mImpl->resources();
17595 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017596 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017597 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017598 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017599 VkShaderStageFlagBits local_shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017600 VkShaderInfoTypeAMD local_infoType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017601 local_device = device;
17602 local_pipeline = pipeline;
17603 local_shaderStage = shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017604 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017605 countingStream->rewind();
17606 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017607 uint64_t cgen_var_1225;
17608 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1225, 1);
17609 countingStream->write((uint64_t*)&cgen_var_1225, 1 * 8);
17610 uint64_t cgen_var_1226;
17611 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1226, 1);
17612 countingStream->write((uint64_t*)&cgen_var_1226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017613 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
17614 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017615 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017616 uint64_t cgen_var_1227 = (uint64_t)(uintptr_t)pInfoSize;
17617 countingStream->putBe64(cgen_var_1227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017618 if (pInfoSize)
17619 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017620 uint64_t cgen_var_1228 = (uint64_t)(*pInfoSize);
17621 countingStream->putBe64(cgen_var_1228);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017622 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017623 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017624 uint64_t cgen_var_1229 = (uint64_t)(uintptr_t)pInfo;
17625 countingStream->putBe64(cgen_var_1229);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017626 if (pInfo)
17627 {
17628 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17629 }
17630 }
17631 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17632 countingStream->rewind();
17633 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
17634 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
17635 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017636 uint64_t cgen_var_1230;
17637 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1230, 1);
17638 stream->write((uint64_t*)&cgen_var_1230, 1 * 8);
17639 uint64_t cgen_var_1231;
17640 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1231, 1);
17641 stream->write((uint64_t*)&cgen_var_1231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017642 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
17643 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017644 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017645 uint64_t cgen_var_1232 = (uint64_t)(uintptr_t)pInfoSize;
17646 stream->putBe64(cgen_var_1232);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017647 if (pInfoSize)
17648 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017649 uint64_t cgen_var_1233 = (uint64_t)(*pInfoSize);
17650 stream->putBe64(cgen_var_1233);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017651 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017652 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017653 uint64_t cgen_var_1234 = (uint64_t)(uintptr_t)pInfo;
17654 stream->putBe64(cgen_var_1234);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017655 if (pInfo)
17656 {
17657 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17658 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017659 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017660 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017661 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017662 if (pInfoSize)
17663 {
17664 if (!(check_pInfoSize))
17665 {
17666 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
17667 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080017668 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017669 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017670 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017671 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017672 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017673 if (pInfo)
17674 {
17675 if (!(check_pInfo))
17676 {
17677 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
17678 }
17679 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
17680 }
17681 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
17682 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017683 countingStream->clearPool();
17684 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017685 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017686 mImpl->log("finish vkGetShaderInfoAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017687 return vkGetShaderInfoAMD_VkResult_return;
17688}
17689
17690#endif
17691#ifdef VK_AMD_shader_image_load_store_lod
17692#endif
17693#ifdef VK_IMG_format_pvrtc
17694#endif
17695#ifdef VK_NV_external_memory_capabilities
17696VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
17697 VkPhysicalDevice physicalDevice,
17698 VkFormat format,
17699 VkImageType type,
17700 VkImageTiling tiling,
17701 VkImageUsageFlags usage,
17702 VkImageCreateFlags flags,
17703 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
17704 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
17705{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017706 mImpl->log("start vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017707 auto stream = mImpl->stream();
17708 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017709 auto resources = mImpl->resources();
17710 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017711 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017712 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017713 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017714 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017715 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017716 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017717 VkImageCreateFlags local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017718 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017719 local_physicalDevice = physicalDevice;
17720 local_format = format;
17721 local_type = type;
17722 local_tiling = tiling;
17723 local_usage = usage;
17724 local_flags = flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017725 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017726 countingStream->rewind();
17727 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017728 uint64_t cgen_var_1238;
17729 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1238, 1);
17730 countingStream->write((uint64_t*)&cgen_var_1238, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017731 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
17732 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
17733 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
17734 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
17735 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
17736 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017737 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17738 }
17739 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17740 countingStream->rewind();
17741 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
17742 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
17743 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017744 uint64_t cgen_var_1239;
17745 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1239, 1);
17746 stream->write((uint64_t*)&cgen_var_1239, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017747 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
17748 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
17749 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
17750 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
17751 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
17752 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017753 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17754 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017755 if (pExternalImageFormatProperties)
17756 {
17757 transform_fromhost_VkExternalImageFormatPropertiesNV(mImpl->resources(), (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
17758 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017759 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
17760 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017761 countingStream->clearPool();
17762 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017763 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017764 mImpl->log("finish vkGetPhysicalDeviceExternalImageFormatPropertiesNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017765 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
17766}
17767
17768#endif
17769#ifdef VK_NV_external_memory
17770#endif
17771#ifdef VK_NV_external_memory_win32
17772VkResult VkEncoder::vkGetMemoryWin32HandleNV(
17773 VkDevice device,
17774 VkDeviceMemory memory,
17775 VkExternalMemoryHandleTypeFlagsNV handleType,
17776 HANDLE* pHandle)
17777{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017778 mImpl->log("start vkGetMemoryWin32HandleNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017779 auto stream = mImpl->stream();
17780 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017781 auto resources = mImpl->resources();
17782 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017783 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017784 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017785 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017786 VkExternalMemoryHandleTypeFlagsNV local_handleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017787 local_device = device;
17788 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017789 local_handleType = handleType;
Lingfeng Yangafe29d32018-12-25 13:01:52 -080017790 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017791 countingStream->rewind();
17792 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017793 uint64_t cgen_var_1240;
17794 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1240, 1);
17795 countingStream->write((uint64_t*)&cgen_var_1240, 1 * 8);
17796 uint64_t cgen_var_1241;
17797 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1241, 1);
17798 countingStream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017799 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017800 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
17801 }
17802 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17803 countingStream->rewind();
17804 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
17805 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
17806 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017807 uint64_t cgen_var_1242;
17808 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1242, 1);
17809 stream->write((uint64_t*)&cgen_var_1242, 1 * 8);
17810 uint64_t cgen_var_1243;
17811 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1243, 1);
17812 stream->write((uint64_t*)&cgen_var_1243, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017813 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017814 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
17815 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
17816 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
17817 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017818 countingStream->clearPool();
17819 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017820 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017821 mImpl->log("finish vkGetMemoryWin32HandleNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017822 return vkGetMemoryWin32HandleNV_VkResult_return;
17823}
17824
17825#endif
17826#ifdef VK_NV_win32_keyed_mutex
17827#endif
17828#ifdef VK_EXT_validation_flags
17829#endif
17830#ifdef VK_NN_vi_surface
17831VkResult VkEncoder::vkCreateViSurfaceNN(
17832 VkInstance instance,
17833 const VkViSurfaceCreateInfoNN* pCreateInfo,
17834 const VkAllocationCallbacks* pAllocator,
17835 VkSurfaceKHR* pSurface)
17836{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017837 mImpl->log("start vkCreateViSurfaceNN");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017838 auto stream = mImpl->stream();
17839 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017840 auto resources = mImpl->resources();
17841 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017842 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017843 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017844 VkViSurfaceCreateInfoNN* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017845 VkAllocationCallbacks* local_pAllocator;
17846 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017847 local_pCreateInfo = nullptr;
17848 if (pCreateInfo)
17849 {
17850 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
17851 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
17852 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017853 local_pAllocator = nullptr;
17854 if (pAllocator)
17855 {
17856 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17857 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17858 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017859 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017860 if (local_pCreateInfo)
17861 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017862 transform_tohost_VkViSurfaceCreateInfoNN(mImpl->resources(), (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017863 }
17864 if (local_pAllocator)
17865 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017866 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017867 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017868 countingStream->rewind();
17869 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017870 uint64_t cgen_var_1244;
17871 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1244, 1);
17872 countingStream->write((uint64_t*)&cgen_var_1244, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017873 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017874 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017875 uint64_t cgen_var_1245 = (uint64_t)(uintptr_t)local_pAllocator;
17876 countingStream->putBe64(cgen_var_1245);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017877 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017878 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017879 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017880 }
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017881 uint64_t cgen_var_1246;
17882 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1246, 1);
17883 countingStream->write((uint64_t*)&cgen_var_1246, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017884 }
17885 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17886 countingStream->rewind();
17887 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
17888 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
17889 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017890 uint64_t cgen_var_1247;
17891 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1247, 1);
17892 stream->write((uint64_t*)&cgen_var_1247, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017893 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017894 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017895 uint64_t cgen_var_1248 = (uint64_t)(uintptr_t)local_pAllocator;
17896 stream->putBe64(cgen_var_1248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017897 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017898 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017899 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017900 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017901 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017902 uint64_t cgen_var_1249;
17903 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1249, 1);
17904 stream->write((uint64_t*)&cgen_var_1249, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017905 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017906 uint64_t cgen_var_1250;
17907 stream->read((uint64_t*)&cgen_var_1250, 8);
17908 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1250, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017909 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
17910 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017911 countingStream->clearPool();
17912 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017913 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017914 mImpl->log("finish vkCreateViSurfaceNN");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017915 return vkCreateViSurfaceNN_VkResult_return;
17916}
17917
17918#endif
17919#ifdef VK_EXT_shader_subgroup_ballot
17920#endif
17921#ifdef VK_EXT_shader_subgroup_vote
17922#endif
17923#ifdef VK_EXT_conditional_rendering
17924void VkEncoder::vkCmdBeginConditionalRenderingEXT(
17925 VkCommandBuffer commandBuffer,
17926 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
17927{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017928 mImpl->log("start vkCmdBeginConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017929 auto stream = mImpl->stream();
17930 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017931 auto resources = mImpl->resources();
17932 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017933 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017934 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017935 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017936 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017937 local_pConditionalRenderingBegin = nullptr;
17938 if (pConditionalRenderingBegin)
17939 {
17940 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
17941 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
17942 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017943 if (local_pConditionalRenderingBegin)
17944 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017945 transform_tohost_VkConditionalRenderingBeginInfoEXT(mImpl->resources(), (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017946 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017947 countingStream->rewind();
17948 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017949 uint64_t cgen_var_1251;
17950 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1251, 1);
17951 countingStream->write((uint64_t*)&cgen_var_1251, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017952 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017953 }
17954 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17955 countingStream->rewind();
17956 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
17957 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
17958 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017959 uint64_t cgen_var_1252;
17960 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1252, 1);
17961 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017962 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017963 mImpl->log("finish vkCmdBeginConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017964}
17965
17966void VkEncoder::vkCmdEndConditionalRenderingEXT(
17967 VkCommandBuffer commandBuffer)
17968{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017969 mImpl->log("start vkCmdEndConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017970 auto stream = mImpl->stream();
17971 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017972 auto resources = mImpl->resources();
17973 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017974 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017975 VkCommandBuffer local_commandBuffer;
17976 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017977 countingStream->rewind();
17978 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017979 uint64_t cgen_var_1253;
17980 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1253, 1);
17981 countingStream->write((uint64_t*)&cgen_var_1253, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017982 }
17983 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17984 countingStream->rewind();
17985 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
17986 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
17987 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017988 uint64_t cgen_var_1254;
17989 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1254, 1);
17990 stream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017991 mImpl->log("finish vkCmdEndConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017992}
17993
17994#endif
17995#ifdef VK_NVX_device_generated_commands
17996void VkEncoder::vkCmdProcessCommandsNVX(
17997 VkCommandBuffer commandBuffer,
17998 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
17999{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018000 mImpl->log("start vkCmdProcessCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018001 auto stream = mImpl->stream();
18002 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018003 auto resources = mImpl->resources();
18004 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018005 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018006 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018007 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018008 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018009 local_pProcessCommandsInfo = nullptr;
18010 if (pProcessCommandsInfo)
18011 {
18012 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
18013 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
18014 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018015 if (local_pProcessCommandsInfo)
18016 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018017 transform_tohost_VkCmdProcessCommandsInfoNVX(mImpl->resources(), (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018018 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018019 countingStream->rewind();
18020 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018021 uint64_t cgen_var_1255;
18022 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1255, 1);
18023 countingStream->write((uint64_t*)&cgen_var_1255, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018024 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018025 }
18026 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18027 countingStream->rewind();
18028 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
18029 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
18030 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018031 uint64_t cgen_var_1256;
18032 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1256, 1);
18033 stream->write((uint64_t*)&cgen_var_1256, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018034 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018035 mImpl->log("finish vkCmdProcessCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018036}
18037
18038void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
18039 VkCommandBuffer commandBuffer,
18040 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
18041{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018042 mImpl->log("start vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018043 auto stream = mImpl->stream();
18044 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018045 auto resources = mImpl->resources();
18046 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018047 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018048 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018049 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018050 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018051 local_pReserveSpaceInfo = nullptr;
18052 if (pReserveSpaceInfo)
18053 {
18054 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
18055 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
18056 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018057 if (local_pReserveSpaceInfo)
18058 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018059 transform_tohost_VkCmdReserveSpaceForCommandsInfoNVX(mImpl->resources(), (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018060 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018061 countingStream->rewind();
18062 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018063 uint64_t cgen_var_1257;
18064 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1257, 1);
18065 countingStream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018066 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018067 }
18068 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18069 countingStream->rewind();
18070 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
18071 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
18072 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018073 uint64_t cgen_var_1258;
18074 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1258, 1);
18075 stream->write((uint64_t*)&cgen_var_1258, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018076 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018077 mImpl->log("finish vkCmdReserveSpaceForCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018078}
18079
18080VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
18081 VkDevice device,
18082 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
18083 const VkAllocationCallbacks* pAllocator,
18084 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
18085{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018086 mImpl->log("start vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018087 auto stream = mImpl->stream();
18088 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018089 auto resources = mImpl->resources();
18090 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018091 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018092 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018093 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018094 VkAllocationCallbacks* local_pAllocator;
18095 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018096 local_pCreateInfo = nullptr;
18097 if (pCreateInfo)
18098 {
18099 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
18100 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
18101 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018102 local_pAllocator = nullptr;
18103 if (pAllocator)
18104 {
18105 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18106 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18107 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018108 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018109 if (local_pCreateInfo)
18110 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018111 transform_tohost_VkIndirectCommandsLayoutCreateInfoNVX(mImpl->resources(), (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018112 }
18113 if (local_pAllocator)
18114 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018115 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018116 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018117 countingStream->rewind();
18118 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018119 uint64_t cgen_var_1259;
18120 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1259, 1);
18121 countingStream->write((uint64_t*)&cgen_var_1259, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018122 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018123 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018124 uint64_t cgen_var_1260 = (uint64_t)(uintptr_t)local_pAllocator;
18125 countingStream->putBe64(cgen_var_1260);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018126 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018127 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018128 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018129 }
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018130 uint64_t cgen_var_1261;
18131 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1261, 1);
18132 countingStream->write((uint64_t*)&cgen_var_1261, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018133 }
18134 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18135 countingStream->rewind();
18136 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
18137 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
18138 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018139 uint64_t cgen_var_1262;
18140 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1262, 1);
18141 stream->write((uint64_t*)&cgen_var_1262, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018142 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018143 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018144 uint64_t cgen_var_1263 = (uint64_t)(uintptr_t)local_pAllocator;
18145 stream->putBe64(cgen_var_1263);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018146 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018147 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018148 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018149 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018150 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018151 uint64_t cgen_var_1264;
18152 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1264, 1);
18153 stream->write((uint64_t*)&cgen_var_1264, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018154 stream->setHandleMapping(resources->unwrapMapping());
18155 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018156 uint64_t cgen_var_1265;
18157 stream->read((uint64_t*)&cgen_var_1265, 8);
18158 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1265, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018159 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018160 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
18161 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018162 countingStream->clearPool();
18163 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018164 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018165 mImpl->log("finish vkCreateIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018166 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
18167}
18168
18169void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
18170 VkDevice device,
18171 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
18172 const VkAllocationCallbacks* pAllocator)
18173{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018174 mImpl->log("start vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018175 auto stream = mImpl->stream();
18176 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018177 auto resources = mImpl->resources();
18178 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018179 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018180 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018181 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018182 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018183 local_device = device;
18184 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018185 local_pAllocator = nullptr;
18186 if (pAllocator)
18187 {
18188 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18189 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18190 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018191 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018192 if (local_pAllocator)
18193 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018194 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018195 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018196 countingStream->rewind();
18197 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018198 uint64_t cgen_var_1266;
18199 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1266, 1);
18200 countingStream->write((uint64_t*)&cgen_var_1266, 1 * 8);
18201 uint64_t cgen_var_1267;
18202 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1267, 1);
18203 countingStream->write((uint64_t*)&cgen_var_1267, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018204 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018205 uint64_t cgen_var_1268 = (uint64_t)(uintptr_t)local_pAllocator;
18206 countingStream->putBe64(cgen_var_1268);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018207 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018208 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018209 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018210 }
18211 }
18212 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18213 countingStream->rewind();
18214 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
18215 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
18216 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018217 uint64_t cgen_var_1269;
18218 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1269, 1);
18219 stream->write((uint64_t*)&cgen_var_1269, 1 * 8);
18220 uint64_t cgen_var_1270;
18221 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1270, 1);
18222 stream->write((uint64_t*)&cgen_var_1270, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018223 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018224 uint64_t cgen_var_1271 = (uint64_t)(uintptr_t)local_pAllocator;
18225 stream->putBe64(cgen_var_1271);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018226 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018227 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018228 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018229 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018230 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018231 mImpl->log("finish vkDestroyIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018232}
18233
18234VkResult VkEncoder::vkCreateObjectTableNVX(
18235 VkDevice device,
18236 const VkObjectTableCreateInfoNVX* pCreateInfo,
18237 const VkAllocationCallbacks* pAllocator,
18238 VkObjectTableNVX* pObjectTable)
18239{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018240 mImpl->log("start vkCreateObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018241 auto stream = mImpl->stream();
18242 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018243 auto resources = mImpl->resources();
18244 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018245 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018246 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018247 VkObjectTableCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018248 VkAllocationCallbacks* local_pAllocator;
18249 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018250 local_pCreateInfo = nullptr;
18251 if (pCreateInfo)
18252 {
18253 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
18254 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
18255 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018256 local_pAllocator = nullptr;
18257 if (pAllocator)
18258 {
18259 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18260 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18261 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018262 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018263 if (local_pCreateInfo)
18264 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018265 transform_tohost_VkObjectTableCreateInfoNVX(mImpl->resources(), (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018266 }
18267 if (local_pAllocator)
18268 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018269 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018270 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018271 countingStream->rewind();
18272 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018273 uint64_t cgen_var_1272;
18274 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1272, 1);
18275 countingStream->write((uint64_t*)&cgen_var_1272, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018276 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018277 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018278 uint64_t cgen_var_1273 = (uint64_t)(uintptr_t)local_pAllocator;
18279 countingStream->putBe64(cgen_var_1273);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018280 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018281 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018282 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018283 }
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018284 uint64_t cgen_var_1274;
18285 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1274, 1);
18286 countingStream->write((uint64_t*)&cgen_var_1274, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018287 }
18288 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18289 countingStream->rewind();
18290 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
18291 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
18292 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018293 uint64_t cgen_var_1275;
18294 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1275, 1);
18295 stream->write((uint64_t*)&cgen_var_1275, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018296 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018297 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018298 uint64_t cgen_var_1276 = (uint64_t)(uintptr_t)local_pAllocator;
18299 stream->putBe64(cgen_var_1276);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018300 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018301 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018302 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018303 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018304 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018305 uint64_t cgen_var_1277;
18306 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1277, 1);
18307 stream->write((uint64_t*)&cgen_var_1277, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018308 stream->setHandleMapping(resources->unwrapMapping());
18309 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018310 uint64_t cgen_var_1278;
18311 stream->read((uint64_t*)&cgen_var_1278, 8);
18312 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1278, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018313 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018314 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
18315 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018316 countingStream->clearPool();
18317 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018318 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018319 mImpl->log("finish vkCreateObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018320 return vkCreateObjectTableNVX_VkResult_return;
18321}
18322
18323void VkEncoder::vkDestroyObjectTableNVX(
18324 VkDevice device,
18325 VkObjectTableNVX objectTable,
18326 const VkAllocationCallbacks* pAllocator)
18327{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018328 mImpl->log("start vkDestroyObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018329 auto stream = mImpl->stream();
18330 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018331 auto resources = mImpl->resources();
18332 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018333 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018334 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018335 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018336 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018337 local_device = device;
18338 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018339 local_pAllocator = nullptr;
18340 if (pAllocator)
18341 {
18342 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18343 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18344 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018345 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018346 if (local_pAllocator)
18347 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018348 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018349 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018350 countingStream->rewind();
18351 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018352 uint64_t cgen_var_1279;
18353 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1279, 1);
18354 countingStream->write((uint64_t*)&cgen_var_1279, 1 * 8);
18355 uint64_t cgen_var_1280;
18356 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1280, 1);
18357 countingStream->write((uint64_t*)&cgen_var_1280, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018358 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018359 uint64_t cgen_var_1281 = (uint64_t)(uintptr_t)local_pAllocator;
18360 countingStream->putBe64(cgen_var_1281);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018361 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018362 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018363 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018364 }
18365 }
18366 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18367 countingStream->rewind();
18368 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
18369 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
18370 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018371 uint64_t cgen_var_1282;
18372 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1282, 1);
18373 stream->write((uint64_t*)&cgen_var_1282, 1 * 8);
18374 uint64_t cgen_var_1283;
18375 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1283, 1);
18376 stream->write((uint64_t*)&cgen_var_1283, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018377 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018378 uint64_t cgen_var_1284 = (uint64_t)(uintptr_t)local_pAllocator;
18379 stream->putBe64(cgen_var_1284);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018380 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018381 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018382 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018383 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018384 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018385 mImpl->log("finish vkDestroyObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018386}
18387
18388VkResult VkEncoder::vkRegisterObjectsNVX(
18389 VkDevice device,
18390 VkObjectTableNVX objectTable,
18391 uint32_t objectCount,
18392 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
18393 const uint32_t* pObjectIndices)
18394{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018395 mImpl->log("start vkRegisterObjectsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018396 auto stream = mImpl->stream();
18397 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018398 auto resources = mImpl->resources();
18399 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018400 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018401 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018402 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018403 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018404 VkObjectTableEntryNVX** local_ppObjectTableEntries;
18405 uint32_t* local_pObjectIndices;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018406 local_device = device;
18407 local_objectTable = objectTable;
18408 local_objectCount = objectCount;
18409 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018410 local_pObjectIndices = nullptr;
18411 if (pObjectIndices)
18412 {
18413 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
18414 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018415 (void)local_ppObjectTableEntries;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018416 countingStream->rewind();
18417 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018418 uint64_t cgen_var_1285;
18419 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1285, 1);
18420 countingStream->write((uint64_t*)&cgen_var_1285, 1 * 8);
18421 uint64_t cgen_var_1286;
18422 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1286, 1);
18423 countingStream->write((uint64_t*)&cgen_var_1286, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018424 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080018425 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018426 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018427 }
18428 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18429 countingStream->rewind();
18430 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
18431 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
18432 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018433 uint64_t cgen_var_1287;
18434 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1287, 1);
18435 stream->write((uint64_t*)&cgen_var_1287, 1 * 8);
18436 uint64_t cgen_var_1288;
18437 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1288, 1);
18438 stream->write((uint64_t*)&cgen_var_1288, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018439 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080018440 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018441 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018442 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
18443 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018444 countingStream->clearPool();
18445 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018446 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018447 mImpl->log("finish vkRegisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018448 return vkRegisterObjectsNVX_VkResult_return;
18449}
18450
18451VkResult VkEncoder::vkUnregisterObjectsNVX(
18452 VkDevice device,
18453 VkObjectTableNVX objectTable,
18454 uint32_t objectCount,
18455 const VkObjectEntryTypeNVX* pObjectEntryTypes,
18456 const uint32_t* pObjectIndices)
18457{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018458 mImpl->log("start vkUnregisterObjectsNVX");
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 Yang71b596b2018-11-07 18:03:25 -080018465 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018466 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018467 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018468 uint32_t* local_pObjectIndices;
18469 local_device = device;
18470 local_objectTable = objectTable;
18471 local_objectCount = objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018472 local_pObjectEntryTypes = nullptr;
18473 if (pObjectEntryTypes)
18474 {
18475 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
18476 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018477 local_pObjectIndices = nullptr;
18478 if (pObjectIndices)
18479 {
18480 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
18481 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018482 countingStream->rewind();
18483 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018484 uint64_t cgen_var_1289;
18485 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
18486 countingStream->write((uint64_t*)&cgen_var_1289, 1 * 8);
18487 uint64_t cgen_var_1290;
18488 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1290, 1);
18489 countingStream->write((uint64_t*)&cgen_var_1290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018490 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
18491 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
18492 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018493 }
18494 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18495 countingStream->rewind();
18496 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
18497 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
18498 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018499 uint64_t cgen_var_1291;
18500 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1291, 1);
18501 stream->write((uint64_t*)&cgen_var_1291, 1 * 8);
18502 uint64_t cgen_var_1292;
18503 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1292, 1);
18504 stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018505 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
18506 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
18507 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018508 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
18509 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018510 countingStream->clearPool();
18511 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018512 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018513 mImpl->log("finish vkUnregisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018514 return vkUnregisterObjectsNVX_VkResult_return;
18515}
18516
18517void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
18518 VkPhysicalDevice physicalDevice,
18519 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
18520 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
18521{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018522 mImpl->log("start vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018523 auto stream = mImpl->stream();
18524 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018525 auto resources = mImpl->resources();
18526 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018527 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018528 VkPhysicalDevice local_physicalDevice;
18529 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018530 countingStream->rewind();
18531 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018532 uint64_t cgen_var_1293;
18533 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1293, 1);
18534 countingStream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018535 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18536 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18537 }
18538 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18539 countingStream->rewind();
18540 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
18541 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
18542 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018543 uint64_t cgen_var_1294;
18544 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1294, 1);
18545 stream->write((uint64_t*)&cgen_var_1294, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018546 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18547 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18548 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018549 if (pFeatures)
18550 {
18551 transform_fromhost_VkDeviceGeneratedCommandsFeaturesNVX(mImpl->resources(), (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
18552 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018553 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018554 if (pLimits)
18555 {
18556 transform_fromhost_VkDeviceGeneratedCommandsLimitsNVX(mImpl->resources(), (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
18557 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018558 mImpl->log("finish vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018559}
18560
18561#endif
18562#ifdef VK_NV_clip_space_w_scaling
18563void VkEncoder::vkCmdSetViewportWScalingNV(
18564 VkCommandBuffer commandBuffer,
18565 uint32_t firstViewport,
18566 uint32_t viewportCount,
18567 const VkViewportWScalingNV* pViewportWScalings)
18568{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018569 mImpl->log("start vkCmdSetViewportWScalingNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018570 auto stream = mImpl->stream();
18571 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018572 auto resources = mImpl->resources();
18573 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018574 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018575 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018576 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018577 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018578 VkViewportWScalingNV* local_pViewportWScalings;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018579 local_commandBuffer = commandBuffer;
18580 local_firstViewport = firstViewport;
18581 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018582 local_pViewportWScalings = nullptr;
18583 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018584 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018585 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018586 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18587 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018588 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
18589 }
18590 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018591 if (local_pViewportWScalings)
18592 {
18593 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18594 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018595 transform_tohost_VkViewportWScalingNV(mImpl->resources(), (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018596 }
18597 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018598 countingStream->rewind();
18599 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018600 uint64_t cgen_var_1295;
18601 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1295, 1);
18602 countingStream->write((uint64_t*)&cgen_var_1295, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018603 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
18604 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
18605 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18606 {
18607 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018608 }
18609 }
18610 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18611 countingStream->rewind();
18612 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
18613 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
18614 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018615 uint64_t cgen_var_1296;
18616 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1296, 1);
18617 stream->write((uint64_t*)&cgen_var_1296, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018618 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
18619 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018620 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
18621 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018622 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018623 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018624 mImpl->log("finish vkCmdSetViewportWScalingNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018625}
18626
18627#endif
18628#ifdef VK_EXT_direct_mode_display
18629VkResult VkEncoder::vkReleaseDisplayEXT(
18630 VkPhysicalDevice physicalDevice,
18631 VkDisplayKHR display)
18632{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018633 mImpl->log("start vkReleaseDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018634 auto stream = mImpl->stream();
18635 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018636 auto resources = mImpl->resources();
18637 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018638 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018639 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018640 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018641 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018642 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018643 countingStream->rewind();
18644 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018645 uint64_t cgen_var_1297;
18646 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1297, 1);
18647 countingStream->write((uint64_t*)&cgen_var_1297, 1 * 8);
18648 uint64_t cgen_var_1298;
18649 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1298, 1);
18650 countingStream->write((uint64_t*)&cgen_var_1298, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018651 }
18652 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18653 countingStream->rewind();
18654 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
18655 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
18656 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018657 uint64_t cgen_var_1299;
18658 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1299, 1);
18659 stream->write((uint64_t*)&cgen_var_1299, 1 * 8);
18660 uint64_t cgen_var_1300;
18661 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1300, 1);
18662 stream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018663 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
18664 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018665 countingStream->clearPool();
18666 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018667 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018668 mImpl->log("finish vkReleaseDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018669 return vkReleaseDisplayEXT_VkResult_return;
18670}
18671
18672#endif
18673#ifdef VK_EXT_acquire_xlib_display
18674VkResult VkEncoder::vkAcquireXlibDisplayEXT(
18675 VkPhysicalDevice physicalDevice,
18676 Display* dpy,
18677 VkDisplayKHR display)
18678{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018679 mImpl->log("start vkAcquireXlibDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018680 auto stream = mImpl->stream();
18681 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018682 auto resources = mImpl->resources();
18683 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018684 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018685 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018686 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018687 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018688 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018689 countingStream->rewind();
18690 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018691 uint64_t cgen_var_1301;
18692 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1301, 1);
18693 countingStream->write((uint64_t*)&cgen_var_1301, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018694 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018695 uint64_t cgen_var_1302;
18696 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1302, 1);
18697 countingStream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018698 }
18699 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18700 countingStream->rewind();
18701 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
18702 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
18703 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018704 uint64_t cgen_var_1303;
18705 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1303, 1);
18706 stream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018707 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018708 uint64_t cgen_var_1304;
18709 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1304, 1);
18710 stream->write((uint64_t*)&cgen_var_1304, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018711 stream->read((Display*)dpy, sizeof(Display));
18712 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
18713 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018714 countingStream->clearPool();
18715 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018716 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018717 mImpl->log("finish vkAcquireXlibDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018718 return vkAcquireXlibDisplayEXT_VkResult_return;
18719}
18720
18721VkResult VkEncoder::vkGetRandROutputDisplayEXT(
18722 VkPhysicalDevice physicalDevice,
18723 Display* dpy,
18724 RROutput rrOutput,
18725 VkDisplayKHR* pDisplay)
18726{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018727 mImpl->log("start vkGetRandROutputDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018728 auto stream = mImpl->stream();
18729 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018730 auto resources = mImpl->resources();
18731 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018732 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018733 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018734 RROutput local_rrOutput;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018735 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018736 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018737 countingStream->rewind();
18738 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018739 uint64_t cgen_var_1305;
18740 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1305, 1);
18741 countingStream->write((uint64_t*)&cgen_var_1305, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018742 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018743 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018744 uint64_t cgen_var_1306;
18745 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1306, 1);
18746 countingStream->write((uint64_t*)&cgen_var_1306, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018747 }
18748 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18749 countingStream->rewind();
18750 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
18751 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
18752 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018753 uint64_t cgen_var_1307;
18754 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1307, 1);
18755 stream->write((uint64_t*)&cgen_var_1307, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018756 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018757 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080018758 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018759 uint64_t cgen_var_1308;
18760 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1308, 1);
18761 stream->write((uint64_t*)&cgen_var_1308, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018762 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018763 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018764 uint64_t cgen_var_1309;
18765 stream->read((uint64_t*)&cgen_var_1309, 8);
18766 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1309, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018767 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
18768 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018769 countingStream->clearPool();
18770 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018771 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018772 mImpl->log("finish vkGetRandROutputDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018773 return vkGetRandROutputDisplayEXT_VkResult_return;
18774}
18775
18776#endif
18777#ifdef VK_EXT_display_surface_counter
18778VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
18779 VkPhysicalDevice physicalDevice,
18780 VkSurfaceKHR surface,
18781 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
18782{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018783 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018784 auto stream = mImpl->stream();
18785 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018786 auto resources = mImpl->resources();
18787 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018788 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018789 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018790 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018791 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018792 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018793 countingStream->rewind();
18794 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018795 uint64_t cgen_var_1310;
18796 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1310, 1);
18797 countingStream->write((uint64_t*)&cgen_var_1310, 1 * 8);
18798 uint64_t cgen_var_1311;
18799 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1311, 1);
18800 countingStream->write((uint64_t*)&cgen_var_1311, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018801 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18802 }
18803 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18804 countingStream->rewind();
18805 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
18806 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
18807 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018808 uint64_t cgen_var_1312;
18809 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1312, 1);
18810 stream->write((uint64_t*)&cgen_var_1312, 1 * 8);
18811 uint64_t cgen_var_1313;
18812 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1313, 1);
18813 stream->write((uint64_t*)&cgen_var_1313, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018814 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18815 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018816 if (pSurfaceCapabilities)
18817 {
18818 transform_fromhost_VkSurfaceCapabilities2EXT(mImpl->resources(), (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
18819 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018820 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
18821 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018822 countingStream->clearPool();
18823 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018824 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018825 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2EXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018826 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
18827}
18828
18829#endif
18830#ifdef VK_EXT_display_control
18831VkResult VkEncoder::vkDisplayPowerControlEXT(
18832 VkDevice device,
18833 VkDisplayKHR display,
18834 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
18835{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018836 mImpl->log("start vkDisplayPowerControlEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018837 auto stream = mImpl->stream();
18838 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018839 auto resources = mImpl->resources();
18840 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018841 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018842 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018843 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018844 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018845 local_device = device;
18846 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018847 local_pDisplayPowerInfo = nullptr;
18848 if (pDisplayPowerInfo)
18849 {
18850 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
18851 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
18852 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018853 if (local_pDisplayPowerInfo)
18854 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018855 transform_tohost_VkDisplayPowerInfoEXT(mImpl->resources(), (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018856 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018857 countingStream->rewind();
18858 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018859 uint64_t cgen_var_1314;
18860 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1314, 1);
18861 countingStream->write((uint64_t*)&cgen_var_1314, 1 * 8);
18862 uint64_t cgen_var_1315;
18863 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1315, 1);
18864 countingStream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018865 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018866 }
18867 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18868 countingStream->rewind();
18869 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
18870 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
18871 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018872 uint64_t cgen_var_1316;
18873 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1316, 1);
18874 stream->write((uint64_t*)&cgen_var_1316, 1 * 8);
18875 uint64_t cgen_var_1317;
18876 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1317, 1);
18877 stream->write((uint64_t*)&cgen_var_1317, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018878 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018879 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
18880 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018881 countingStream->clearPool();
18882 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018883 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018884 mImpl->log("finish vkDisplayPowerControlEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018885 return vkDisplayPowerControlEXT_VkResult_return;
18886}
18887
18888VkResult VkEncoder::vkRegisterDeviceEventEXT(
18889 VkDevice device,
18890 const VkDeviceEventInfoEXT* pDeviceEventInfo,
18891 const VkAllocationCallbacks* pAllocator,
18892 VkFence* pFence)
18893{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018894 mImpl->log("start vkRegisterDeviceEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018895 auto stream = mImpl->stream();
18896 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018897 auto resources = mImpl->resources();
18898 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018899 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018900 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018901 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018902 VkAllocationCallbacks* local_pAllocator;
18903 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018904 local_pDeviceEventInfo = nullptr;
18905 if (pDeviceEventInfo)
18906 {
18907 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
18908 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
18909 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018910 local_pAllocator = nullptr;
18911 if (pAllocator)
18912 {
18913 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18914 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18915 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018916 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018917 if (local_pDeviceEventInfo)
18918 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018919 transform_tohost_VkDeviceEventInfoEXT(mImpl->resources(), (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018920 }
18921 if (local_pAllocator)
18922 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018923 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018924 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018925 countingStream->rewind();
18926 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018927 uint64_t cgen_var_1318;
18928 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1318, 1);
18929 countingStream->write((uint64_t*)&cgen_var_1318, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018930 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018931 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018932 uint64_t cgen_var_1319 = (uint64_t)(uintptr_t)local_pAllocator;
18933 countingStream->putBe64(cgen_var_1319);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018934 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018935 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018936 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018937 }
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018938 uint64_t cgen_var_1320;
18939 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1320, 1);
18940 countingStream->write((uint64_t*)&cgen_var_1320, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018941 }
18942 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18943 countingStream->rewind();
18944 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
18945 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
18946 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018947 uint64_t cgen_var_1321;
18948 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1321, 1);
18949 stream->write((uint64_t*)&cgen_var_1321, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018950 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018951 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018952 uint64_t cgen_var_1322 = (uint64_t)(uintptr_t)local_pAllocator;
18953 stream->putBe64(cgen_var_1322);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018954 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018955 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018956 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018957 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018958 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018959 uint64_t cgen_var_1323;
18960 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1323, 1);
18961 stream->write((uint64_t*)&cgen_var_1323, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018962 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018963 uint64_t cgen_var_1324;
18964 stream->read((uint64_t*)&cgen_var_1324, 8);
18965 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1324, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018966 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
18967 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018968 countingStream->clearPool();
18969 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018970 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018971 mImpl->log("finish vkRegisterDeviceEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018972 return vkRegisterDeviceEventEXT_VkResult_return;
18973}
18974
18975VkResult VkEncoder::vkRegisterDisplayEventEXT(
18976 VkDevice device,
18977 VkDisplayKHR display,
18978 const VkDisplayEventInfoEXT* pDisplayEventInfo,
18979 const VkAllocationCallbacks* pAllocator,
18980 VkFence* pFence)
18981{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018982 mImpl->log("start vkRegisterDisplayEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018983 auto stream = mImpl->stream();
18984 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018985 auto resources = mImpl->resources();
18986 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018987 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018988 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018989 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018990 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018991 VkAllocationCallbacks* local_pAllocator;
18992 local_device = device;
18993 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018994 local_pDisplayEventInfo = nullptr;
18995 if (pDisplayEventInfo)
18996 {
18997 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
18998 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
18999 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019000 local_pAllocator = nullptr;
19001 if (pAllocator)
19002 {
19003 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19004 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19005 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019006 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019007 if (local_pDisplayEventInfo)
19008 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019009 transform_tohost_VkDisplayEventInfoEXT(mImpl->resources(), (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019010 }
19011 if (local_pAllocator)
19012 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019013 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019014 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019015 countingStream->rewind();
19016 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019017 uint64_t cgen_var_1325;
19018 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1325, 1);
19019 countingStream->write((uint64_t*)&cgen_var_1325, 1 * 8);
19020 uint64_t cgen_var_1326;
19021 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1326, 1);
19022 countingStream->write((uint64_t*)&cgen_var_1326, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019023 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019024 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019025 uint64_t cgen_var_1327 = (uint64_t)(uintptr_t)local_pAllocator;
19026 countingStream->putBe64(cgen_var_1327);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019027 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019028 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019029 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019030 }
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019031 uint64_t cgen_var_1328;
19032 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1328, 1);
19033 countingStream->write((uint64_t*)&cgen_var_1328, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019034 }
19035 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19036 countingStream->rewind();
19037 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
19038 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
19039 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019040 uint64_t cgen_var_1329;
19041 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1329, 1);
19042 stream->write((uint64_t*)&cgen_var_1329, 1 * 8);
19043 uint64_t cgen_var_1330;
19044 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1330, 1);
19045 stream->write((uint64_t*)&cgen_var_1330, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019046 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019047 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019048 uint64_t cgen_var_1331 = (uint64_t)(uintptr_t)local_pAllocator;
19049 stream->putBe64(cgen_var_1331);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019050 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019051 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019052 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019053 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019054 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019055 uint64_t cgen_var_1332;
19056 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1332, 1);
19057 stream->write((uint64_t*)&cgen_var_1332, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019058 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019059 uint64_t cgen_var_1333;
19060 stream->read((uint64_t*)&cgen_var_1333, 8);
19061 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1333, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019062 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
19063 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019064 countingStream->clearPool();
19065 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019066 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019067 mImpl->log("finish vkRegisterDisplayEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019068 return vkRegisterDisplayEventEXT_VkResult_return;
19069}
19070
19071VkResult VkEncoder::vkGetSwapchainCounterEXT(
19072 VkDevice device,
19073 VkSwapchainKHR swapchain,
19074 VkSurfaceCounterFlagBitsEXT counter,
19075 uint64_t* pCounterValue)
19076{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019077 mImpl->log("start vkGetSwapchainCounterEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019078 auto stream = mImpl->stream();
19079 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019080 auto resources = mImpl->resources();
19081 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019082 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019083 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019084 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019085 VkSurfaceCounterFlagBitsEXT local_counter;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019086 local_device = device;
19087 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019088 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019089 countingStream->rewind();
19090 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019091 uint64_t cgen_var_1334;
19092 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1334, 1);
19093 countingStream->write((uint64_t*)&cgen_var_1334, 1 * 8);
19094 uint64_t cgen_var_1335;
19095 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1335, 1);
19096 countingStream->write((uint64_t*)&cgen_var_1335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019097 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019098 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
19099 }
19100 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19101 countingStream->rewind();
19102 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
19103 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
19104 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019105 uint64_t cgen_var_1336;
19106 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1336, 1);
19107 stream->write((uint64_t*)&cgen_var_1336, 1 * 8);
19108 uint64_t cgen_var_1337;
19109 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1337, 1);
19110 stream->write((uint64_t*)&cgen_var_1337, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019111 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019112 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
19113 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
19114 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
19115 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019116 countingStream->clearPool();
19117 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019118 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019119 mImpl->log("finish vkGetSwapchainCounterEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019120 return vkGetSwapchainCounterEXT_VkResult_return;
19121}
19122
19123#endif
19124#ifdef VK_GOOGLE_display_timing
19125VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
19126 VkDevice device,
19127 VkSwapchainKHR swapchain,
19128 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
19129{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019130 mImpl->log("start vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019131 auto stream = mImpl->stream();
19132 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019133 auto resources = mImpl->resources();
19134 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019135 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019136 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019137 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019138 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019139 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019140 countingStream->rewind();
19141 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019142 uint64_t cgen_var_1338;
19143 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1338, 1);
19144 countingStream->write((uint64_t*)&cgen_var_1338, 1 * 8);
19145 uint64_t cgen_var_1339;
19146 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1339, 1);
19147 countingStream->write((uint64_t*)&cgen_var_1339, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019148 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19149 }
19150 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19151 countingStream->rewind();
19152 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
19153 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
19154 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019155 uint64_t cgen_var_1340;
19156 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1340, 1);
19157 stream->write((uint64_t*)&cgen_var_1340, 1 * 8);
19158 uint64_t cgen_var_1341;
19159 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1341, 1);
19160 stream->write((uint64_t*)&cgen_var_1341, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019161 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19162 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019163 if (pDisplayTimingProperties)
19164 {
19165 transform_fromhost_VkRefreshCycleDurationGOOGLE(mImpl->resources(), (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
19166 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019167 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
19168 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019169 countingStream->clearPool();
19170 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019171 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019172 mImpl->log("finish vkGetRefreshCycleDurationGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019173 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
19174}
19175
19176VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
19177 VkDevice device,
19178 VkSwapchainKHR swapchain,
19179 uint32_t* pPresentationTimingCount,
19180 VkPastPresentationTimingGOOGLE* pPresentationTimings)
19181{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019182 mImpl->log("start vkGetPastPresentationTimingGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019183 auto stream = mImpl->stream();
19184 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019185 auto resources = mImpl->resources();
19186 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019187 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019188 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019189 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019190 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019191 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019192 countingStream->rewind();
19193 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019194 uint64_t cgen_var_1342;
19195 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1342, 1);
19196 countingStream->write((uint64_t*)&cgen_var_1342, 1 * 8);
19197 uint64_t cgen_var_1343;
19198 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1343, 1);
19199 countingStream->write((uint64_t*)&cgen_var_1343, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019200 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019201 uint64_t cgen_var_1344 = (uint64_t)(uintptr_t)pPresentationTimingCount;
19202 countingStream->putBe64(cgen_var_1344);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019203 if (pPresentationTimingCount)
19204 {
19205 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19206 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019207 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019208 uint64_t cgen_var_1345 = (uint64_t)(uintptr_t)pPresentationTimings;
19209 countingStream->putBe64(cgen_var_1345);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019210 if (pPresentationTimings)
19211 {
19212 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19213 {
19214 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19215 }
19216 }
19217 }
19218 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19219 countingStream->rewind();
19220 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
19221 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
19222 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019223 uint64_t cgen_var_1346;
19224 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1346, 1);
19225 stream->write((uint64_t*)&cgen_var_1346, 1 * 8);
19226 uint64_t cgen_var_1347;
19227 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1347, 1);
19228 stream->write((uint64_t*)&cgen_var_1347, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019229 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019230 uint64_t cgen_var_1348 = (uint64_t)(uintptr_t)pPresentationTimingCount;
19231 stream->putBe64(cgen_var_1348);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019232 if (pPresentationTimingCount)
19233 {
19234 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19235 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019236 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019237 uint64_t cgen_var_1349 = (uint64_t)(uintptr_t)pPresentationTimings;
19238 stream->putBe64(cgen_var_1349);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019239 if (pPresentationTimings)
19240 {
19241 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19242 {
19243 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19244 }
19245 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019246 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019247 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019248 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019249 if (pPresentationTimingCount)
19250 {
19251 if (!(check_pPresentationTimingCount))
19252 {
19253 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
19254 }
19255 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
19256 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019257 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019258 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019259 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019260 if (pPresentationTimings)
19261 {
19262 if (!(check_pPresentationTimings))
19263 {
19264 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
19265 }
19266 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19267 {
19268 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19269 }
19270 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080019271 if (pPresentationTimings)
19272 {
19273 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
19274 {
19275 transform_fromhost_VkPastPresentationTimingGOOGLE(mImpl->resources(), (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
19276 }
19277 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019278 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
19279 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019280 countingStream->clearPool();
19281 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019282 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019283 mImpl->log("finish vkGetPastPresentationTimingGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019284 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
19285}
19286
19287#endif
19288#ifdef VK_NV_sample_mask_override_coverage
19289#endif
19290#ifdef VK_NV_geometry_shader_passthrough
19291#endif
19292#ifdef VK_NV_viewport_array2
19293#endif
19294#ifdef VK_NVX_multiview_per_view_attributes
19295#endif
19296#ifdef VK_NV_viewport_swizzle
19297#endif
19298#ifdef VK_EXT_discard_rectangles
19299void VkEncoder::vkCmdSetDiscardRectangleEXT(
19300 VkCommandBuffer commandBuffer,
19301 uint32_t firstDiscardRectangle,
19302 uint32_t discardRectangleCount,
19303 const VkRect2D* pDiscardRectangles)
19304{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019305 mImpl->log("start vkCmdSetDiscardRectangleEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019306 auto stream = mImpl->stream();
19307 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019308 auto resources = mImpl->resources();
19309 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019310 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019311 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019312 uint32_t local_firstDiscardRectangle;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019313 uint32_t local_discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019314 VkRect2D* local_pDiscardRectangles;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019315 local_commandBuffer = commandBuffer;
19316 local_firstDiscardRectangle = firstDiscardRectangle;
19317 local_discardRectangleCount = discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019318 local_pDiscardRectangles = nullptr;
19319 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019320 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019321 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019322 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19323 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019324 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
19325 }
19326 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019327 if (local_pDiscardRectangles)
19328 {
19329 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19330 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019331 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019332 }
19333 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019334 countingStream->rewind();
19335 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019336 uint64_t cgen_var_1352;
19337 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1352, 1);
19338 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019339 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
19340 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
19341 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19342 {
19343 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019344 }
19345 }
19346 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19347 countingStream->rewind();
19348 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
19349 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
19350 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019351 uint64_t cgen_var_1353;
19352 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1353, 1);
19353 stream->write((uint64_t*)&cgen_var_1353, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019354 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
19355 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019356 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
19357 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019358 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019359 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019360 mImpl->log("finish vkCmdSetDiscardRectangleEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019361}
19362
19363#endif
19364#ifdef VK_EXT_conservative_rasterization
19365#endif
19366#ifdef VK_EXT_swapchain_colorspace
19367#endif
19368#ifdef VK_EXT_hdr_metadata
19369void VkEncoder::vkSetHdrMetadataEXT(
19370 VkDevice device,
19371 uint32_t swapchainCount,
19372 const VkSwapchainKHR* pSwapchains,
19373 const VkHdrMetadataEXT* pMetadata)
19374{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019375 mImpl->log("start vkSetHdrMetadataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019376 auto stream = mImpl->stream();
19377 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019378 auto resources = mImpl->resources();
19379 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019380 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019381 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019382 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019383 VkSwapchainKHR* local_pSwapchains;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019384 VkHdrMetadataEXT* local_pMetadata;
19385 local_device = device;
19386 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019387 local_pSwapchains = nullptr;
19388 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019389 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019390 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
19391 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019392 local_pMetadata = nullptr;
19393 if (pMetadata)
19394 {
19395 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019396 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19397 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019398 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
19399 }
19400 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019401 if (local_pMetadata)
19402 {
19403 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19404 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019405 transform_tohost_VkHdrMetadataEXT(mImpl->resources(), (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019406 }
19407 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019408 countingStream->rewind();
19409 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019410 uint64_t cgen_var_1354;
19411 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1354, 1);
19412 countingStream->write((uint64_t*)&cgen_var_1354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019413 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019414 if (((swapchainCount)))
19415 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019416 uint64_t* cgen_var_1355;
19417 countingStream->alloc((void**)&cgen_var_1355, ((swapchainCount)) * 8);
19418 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1355, ((swapchainCount)));
19419 countingStream->write((uint64_t*)cgen_var_1355, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019420 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019421 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19422 {
19423 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019424 }
19425 }
19426 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19427 countingStream->rewind();
19428 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
19429 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
19430 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019431 uint64_t cgen_var_1356;
19432 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1356, 1);
19433 stream->write((uint64_t*)&cgen_var_1356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019434 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019435 if (((swapchainCount)))
19436 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019437 uint64_t* cgen_var_1357;
19438 stream->alloc((void**)&cgen_var_1357, ((swapchainCount)) * 8);
19439 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1357, ((swapchainCount)));
19440 stream->write((uint64_t*)cgen_var_1357, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080019441 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019442 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
19443 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019444 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019445 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019446 mImpl->log("finish vkSetHdrMetadataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019447}
19448
19449#endif
19450#ifdef VK_MVK_ios_surface
19451VkResult VkEncoder::vkCreateIOSSurfaceMVK(
19452 VkInstance instance,
19453 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
19454 const VkAllocationCallbacks* pAllocator,
19455 VkSurfaceKHR* pSurface)
19456{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019457 mImpl->log("start vkCreateIOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019458 auto stream = mImpl->stream();
19459 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019460 auto resources = mImpl->resources();
19461 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019462 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019463 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019464 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019465 VkAllocationCallbacks* local_pAllocator;
19466 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019467 local_pCreateInfo = nullptr;
19468 if (pCreateInfo)
19469 {
19470 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
19471 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
19472 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019473 local_pAllocator = nullptr;
19474 if (pAllocator)
19475 {
19476 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19477 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19478 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019479 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019480 if (local_pCreateInfo)
19481 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019482 transform_tohost_VkIOSSurfaceCreateInfoMVK(mImpl->resources(), (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019483 }
19484 if (local_pAllocator)
19485 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019486 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019487 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019488 countingStream->rewind();
19489 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019490 uint64_t cgen_var_1358;
19491 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1358, 1);
19492 countingStream->write((uint64_t*)&cgen_var_1358, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019493 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019494 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019495 uint64_t cgen_var_1359 = (uint64_t)(uintptr_t)local_pAllocator;
19496 countingStream->putBe64(cgen_var_1359);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019497 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019498 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019499 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019500 }
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019501 uint64_t cgen_var_1360;
19502 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1360, 1);
19503 countingStream->write((uint64_t*)&cgen_var_1360, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019504 }
19505 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19506 countingStream->rewind();
19507 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
19508 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
19509 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019510 uint64_t cgen_var_1361;
19511 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1361, 1);
19512 stream->write((uint64_t*)&cgen_var_1361, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019513 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019514 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019515 uint64_t cgen_var_1362 = (uint64_t)(uintptr_t)local_pAllocator;
19516 stream->putBe64(cgen_var_1362);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019517 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019518 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019519 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019520 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019521 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019522 uint64_t cgen_var_1363;
19523 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1363, 1);
19524 stream->write((uint64_t*)&cgen_var_1363, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019525 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019526 uint64_t cgen_var_1364;
19527 stream->read((uint64_t*)&cgen_var_1364, 8);
19528 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1364, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019529 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
19530 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019531 countingStream->clearPool();
19532 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019533 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019534 mImpl->log("finish vkCreateIOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019535 return vkCreateIOSSurfaceMVK_VkResult_return;
19536}
19537
19538#endif
19539#ifdef VK_MVK_macos_surface
19540VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
19541 VkInstance instance,
19542 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
19543 const VkAllocationCallbacks* pAllocator,
19544 VkSurfaceKHR* pSurface)
19545{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019546 mImpl->log("start vkCreateMacOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019547 auto stream = mImpl->stream();
19548 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019549 auto resources = mImpl->resources();
19550 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019551 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019552 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019553 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019554 VkAllocationCallbacks* local_pAllocator;
19555 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019556 local_pCreateInfo = nullptr;
19557 if (pCreateInfo)
19558 {
19559 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
19560 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
19561 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019562 local_pAllocator = nullptr;
19563 if (pAllocator)
19564 {
19565 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19566 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19567 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019568 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019569 if (local_pCreateInfo)
19570 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019571 transform_tohost_VkMacOSSurfaceCreateInfoMVK(mImpl->resources(), (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019572 }
19573 if (local_pAllocator)
19574 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019575 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019576 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019577 countingStream->rewind();
19578 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019579 uint64_t cgen_var_1365;
19580 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1365, 1);
19581 countingStream->write((uint64_t*)&cgen_var_1365, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019582 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019583 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019584 uint64_t cgen_var_1366 = (uint64_t)(uintptr_t)local_pAllocator;
19585 countingStream->putBe64(cgen_var_1366);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019586 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019587 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019588 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019589 }
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019590 uint64_t cgen_var_1367;
19591 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1367, 1);
19592 countingStream->write((uint64_t*)&cgen_var_1367, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019593 }
19594 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19595 countingStream->rewind();
19596 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
19597 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
19598 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019599 uint64_t cgen_var_1368;
19600 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1368, 1);
19601 stream->write((uint64_t*)&cgen_var_1368, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019602 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019603 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019604 uint64_t cgen_var_1369 = (uint64_t)(uintptr_t)local_pAllocator;
19605 stream->putBe64(cgen_var_1369);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019606 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019607 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019608 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019609 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019610 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019611 uint64_t cgen_var_1370;
19612 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1370, 1);
19613 stream->write((uint64_t*)&cgen_var_1370, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019614 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019615 uint64_t cgen_var_1371;
19616 stream->read((uint64_t*)&cgen_var_1371, 8);
19617 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1371, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019618 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
19619 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019620 countingStream->clearPool();
19621 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019622 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019623 mImpl->log("finish vkCreateMacOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019624 return vkCreateMacOSSurfaceMVK_VkResult_return;
19625}
19626
19627#endif
19628#ifdef VK_EXT_external_memory_dma_buf
19629#endif
19630#ifdef VK_EXT_queue_family_foreign
19631#endif
19632#ifdef VK_EXT_debug_utils
19633VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
19634 VkDevice device,
19635 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
19636{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019637 mImpl->log("start vkSetDebugUtilsObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019638 auto stream = mImpl->stream();
19639 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019640 auto resources = mImpl->resources();
19641 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019642 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019643 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019644 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019645 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019646 local_pNameInfo = nullptr;
19647 if (pNameInfo)
19648 {
19649 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
19650 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
19651 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019652 if (local_pNameInfo)
19653 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019654 transform_tohost_VkDebugUtilsObjectNameInfoEXT(mImpl->resources(), (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019655 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019656 countingStream->rewind();
19657 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019658 uint64_t cgen_var_1372;
19659 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1372, 1);
19660 countingStream->write((uint64_t*)&cgen_var_1372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019661 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019662 }
19663 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19664 countingStream->rewind();
19665 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
19666 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
19667 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019668 uint64_t cgen_var_1373;
19669 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1373, 1);
19670 stream->write((uint64_t*)&cgen_var_1373, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019671 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019672 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
19673 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019674 countingStream->clearPool();
19675 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019676 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019677 mImpl->log("finish vkSetDebugUtilsObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019678 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
19679}
19680
19681VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
19682 VkDevice device,
19683 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
19684{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019685 mImpl->log("start vkSetDebugUtilsObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019686 auto stream = mImpl->stream();
19687 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019688 auto resources = mImpl->resources();
19689 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019690 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019691 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019692 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019693 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019694 local_pTagInfo = nullptr;
19695 if (pTagInfo)
19696 {
19697 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
19698 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
19699 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019700 if (local_pTagInfo)
19701 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019702 transform_tohost_VkDebugUtilsObjectTagInfoEXT(mImpl->resources(), (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019703 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019704 countingStream->rewind();
19705 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019706 uint64_t cgen_var_1374;
19707 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1374, 1);
19708 countingStream->write((uint64_t*)&cgen_var_1374, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019709 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019710 }
19711 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19712 countingStream->rewind();
19713 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
19714 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
19715 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019716 uint64_t cgen_var_1375;
19717 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1375, 1);
19718 stream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019719 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019720 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
19721 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019722 countingStream->clearPool();
19723 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019724 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019725 mImpl->log("finish vkSetDebugUtilsObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019726 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
19727}
19728
19729void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
19730 VkQueue queue,
19731 const VkDebugUtilsLabelEXT* pLabelInfo)
19732{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019733 mImpl->log("start vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019734 auto stream = mImpl->stream();
19735 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019736 auto resources = mImpl->resources();
19737 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019738 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019739 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019740 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019741 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019742 local_pLabelInfo = nullptr;
19743 if (pLabelInfo)
19744 {
19745 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19746 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19747 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019748 if (local_pLabelInfo)
19749 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019750 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019751 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019752 countingStream->rewind();
19753 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019754 uint64_t cgen_var_1376;
19755 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1376, 1);
19756 countingStream->write((uint64_t*)&cgen_var_1376, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019757 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019758 }
19759 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19760 countingStream->rewind();
19761 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
19762 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
19763 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019764 uint64_t cgen_var_1377;
19765 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1377, 1);
19766 stream->write((uint64_t*)&cgen_var_1377, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019767 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019768 mImpl->log("finish vkQueueBeginDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019769}
19770
19771void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
19772 VkQueue queue)
19773{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019774 mImpl->log("start vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019775 auto stream = mImpl->stream();
19776 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019777 auto resources = mImpl->resources();
19778 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019779 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019780 VkQueue local_queue;
19781 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019782 countingStream->rewind();
19783 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019784 uint64_t cgen_var_1378;
19785 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1378, 1);
19786 countingStream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019787 }
19788 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19789 countingStream->rewind();
19790 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
19791 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
19792 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019793 uint64_t cgen_var_1379;
19794 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1379, 1);
19795 stream->write((uint64_t*)&cgen_var_1379, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019796 mImpl->log("finish vkQueueEndDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019797}
19798
19799void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
19800 VkQueue queue,
19801 const VkDebugUtilsLabelEXT* pLabelInfo)
19802{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019803 mImpl->log("start vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019804 auto stream = mImpl->stream();
19805 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019806 auto resources = mImpl->resources();
19807 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019808 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019809 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019810 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019811 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019812 local_pLabelInfo = nullptr;
19813 if (pLabelInfo)
19814 {
19815 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19816 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19817 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019818 if (local_pLabelInfo)
19819 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019820 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019821 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019822 countingStream->rewind();
19823 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019824 uint64_t cgen_var_1380;
19825 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1380, 1);
19826 countingStream->write((uint64_t*)&cgen_var_1380, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019827 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019828 }
19829 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19830 countingStream->rewind();
19831 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
19832 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
19833 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019834 uint64_t cgen_var_1381;
19835 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1381, 1);
19836 stream->write((uint64_t*)&cgen_var_1381, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019837 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019838 mImpl->log("finish vkQueueInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019839}
19840
19841void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
19842 VkCommandBuffer commandBuffer,
19843 const VkDebugUtilsLabelEXT* pLabelInfo)
19844{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019845 mImpl->log("start vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019846 auto stream = mImpl->stream();
19847 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019848 auto resources = mImpl->resources();
19849 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019850 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019851 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019852 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019853 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019854 local_pLabelInfo = nullptr;
19855 if (pLabelInfo)
19856 {
19857 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19858 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19859 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019860 if (local_pLabelInfo)
19861 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019862 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019863 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019864 countingStream->rewind();
19865 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019866 uint64_t cgen_var_1382;
19867 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1382, 1);
19868 countingStream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019869 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019870 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019871 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19872 countingStream->rewind();
19873 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
19874 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
19875 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019876 uint64_t cgen_var_1383;
19877 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1383, 1);
19878 stream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019879 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019880 mImpl->log("finish vkCmdBeginDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019881}
19882
19883void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
19884 VkCommandBuffer commandBuffer)
19885{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019886 mImpl->log("start vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019887 auto stream = mImpl->stream();
19888 auto countingStream = mImpl->countingStream();
19889 auto resources = mImpl->resources();
19890 auto pool = mImpl->pool();
19891 stream->setHandleMapping(resources->unwrapMapping());
19892 VkCommandBuffer local_commandBuffer;
19893 local_commandBuffer = commandBuffer;
19894 countingStream->rewind();
19895 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019896 uint64_t cgen_var_1384;
19897 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1384, 1);
19898 countingStream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019899 }
19900 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19901 countingStream->rewind();
19902 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
19903 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
19904 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019905 uint64_t cgen_var_1385;
19906 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1385, 1);
19907 stream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019908 mImpl->log("finish vkCmdEndDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019909}
19910
19911void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
19912 VkCommandBuffer commandBuffer,
19913 const VkDebugUtilsLabelEXT* pLabelInfo)
19914{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019915 mImpl->log("start vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019916 auto stream = mImpl->stream();
19917 auto countingStream = mImpl->countingStream();
19918 auto resources = mImpl->resources();
19919 auto pool = mImpl->pool();
19920 stream->setHandleMapping(resources->unwrapMapping());
19921 VkCommandBuffer local_commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019922 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019923 local_commandBuffer = commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019924 local_pLabelInfo = nullptr;
19925 if (pLabelInfo)
19926 {
19927 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
19928 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19929 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019930 if (local_pLabelInfo)
19931 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019932 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019933 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019934 countingStream->rewind();
19935 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019936 uint64_t cgen_var_1386;
19937 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1386, 1);
19938 countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080019939 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
19940 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019941 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19942 countingStream->rewind();
19943 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
19944 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
19945 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019946 uint64_t cgen_var_1387;
19947 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1387, 1);
19948 stream->write((uint64_t*)&cgen_var_1387, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019949 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019950 mImpl->log("finish vkCmdInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019951}
19952
19953VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
19954 VkInstance instance,
19955 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
19956 const VkAllocationCallbacks* pAllocator,
19957 VkDebugUtilsMessengerEXT* pMessenger)
19958{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019959 mImpl->log("start vkCreateDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019960 auto stream = mImpl->stream();
19961 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019962 auto resources = mImpl->resources();
19963 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019964 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019965 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019966 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019967 VkAllocationCallbacks* local_pAllocator;
19968 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019969 local_pCreateInfo = nullptr;
19970 if (pCreateInfo)
19971 {
19972 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
19973 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
19974 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019975 local_pAllocator = nullptr;
19976 if (pAllocator)
19977 {
19978 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19979 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19980 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019981 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019982 if (local_pCreateInfo)
19983 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019984 transform_tohost_VkDebugUtilsMessengerCreateInfoEXT(mImpl->resources(), (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019985 }
19986 if (local_pAllocator)
19987 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019988 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019989 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019990 countingStream->rewind();
19991 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019992 uint64_t cgen_var_1388;
19993 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1388, 1);
19994 countingStream->write((uint64_t*)&cgen_var_1388, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019995 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019996 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080019997 uint64_t cgen_var_1389 = (uint64_t)(uintptr_t)local_pAllocator;
19998 countingStream->putBe64(cgen_var_1389);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019999 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020000 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020001 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020002 }
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020003 uint64_t cgen_var_1390;
20004 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1390, 1);
20005 countingStream->write((uint64_t*)&cgen_var_1390, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020006 }
20007 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20008 countingStream->rewind();
20009 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
20010 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
20011 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020012 uint64_t cgen_var_1391;
20013 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1391, 1);
20014 stream->write((uint64_t*)&cgen_var_1391, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020015 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020016 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020017 uint64_t cgen_var_1392 = (uint64_t)(uintptr_t)local_pAllocator;
20018 stream->putBe64(cgen_var_1392);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020019 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020020 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020021 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020022 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020023 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020024 uint64_t cgen_var_1393;
20025 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1393, 1);
20026 stream->write((uint64_t*)&cgen_var_1393, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020027 stream->setHandleMapping(resources->unwrapMapping());
20028 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020029 uint64_t cgen_var_1394;
20030 stream->read((uint64_t*)&cgen_var_1394, 8);
20031 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1394, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020032 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020033 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
20034 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020035 countingStream->clearPool();
20036 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020037 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020038 mImpl->log("finish vkCreateDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020039 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
20040}
20041
20042void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
20043 VkInstance instance,
20044 VkDebugUtilsMessengerEXT messenger,
20045 const VkAllocationCallbacks* pAllocator)
20046{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020047 mImpl->log("start vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020048 auto stream = mImpl->stream();
20049 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020050 auto resources = mImpl->resources();
20051 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020052 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020053 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020054 VkDebugUtilsMessengerEXT local_messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020055 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020056 local_instance = instance;
20057 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020058 local_pAllocator = nullptr;
20059 if (pAllocator)
20060 {
20061 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20062 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20063 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020064 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020065 if (local_pAllocator)
20066 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020067 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020068 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020069 countingStream->rewind();
20070 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020071 uint64_t cgen_var_1395;
20072 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1395, 1);
20073 countingStream->write((uint64_t*)&cgen_var_1395, 1 * 8);
20074 uint64_t cgen_var_1396;
20075 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1396, 1);
20076 countingStream->write((uint64_t*)&cgen_var_1396, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020077 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020078 uint64_t cgen_var_1397 = (uint64_t)(uintptr_t)local_pAllocator;
20079 countingStream->putBe64(cgen_var_1397);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020080 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020081 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020082 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020083 }
20084 }
20085 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20086 countingStream->rewind();
20087 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
20088 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
20089 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020090 uint64_t cgen_var_1398;
20091 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1398, 1);
20092 stream->write((uint64_t*)&cgen_var_1398, 1 * 8);
20093 uint64_t cgen_var_1399;
20094 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1399, 1);
20095 stream->write((uint64_t*)&cgen_var_1399, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020096 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020097 uint64_t cgen_var_1400 = (uint64_t)(uintptr_t)local_pAllocator;
20098 stream->putBe64(cgen_var_1400);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020099 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020100 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020101 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020102 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020103 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020104 mImpl->log("finish vkDestroyDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020105}
20106
20107void VkEncoder::vkSubmitDebugUtilsMessageEXT(
20108 VkInstance instance,
20109 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
20110 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
20111 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
20112{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020113 mImpl->log("start vkSubmitDebugUtilsMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020114 auto stream = mImpl->stream();
20115 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020116 auto resources = mImpl->resources();
20117 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020118 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020119 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020120 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020121 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020122 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020123 local_instance = instance;
20124 local_messageSeverity = messageSeverity;
20125 local_messageTypes = messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020126 local_pCallbackData = nullptr;
20127 if (pCallbackData)
20128 {
20129 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
20130 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
20131 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020132 if (local_pCallbackData)
20133 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020134 transform_tohost_VkDebugUtilsMessengerCallbackDataEXT(mImpl->resources(), (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020135 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020136 countingStream->rewind();
20137 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020138 uint64_t cgen_var_1401;
20139 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1401, 1);
20140 countingStream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020141 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
20142 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
20143 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020144 }
20145 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20146 countingStream->rewind();
20147 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
20148 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
20149 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020150 uint64_t cgen_var_1402;
20151 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1402, 1);
20152 stream->write((uint64_t*)&cgen_var_1402, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020153 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
20154 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
20155 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020156 mImpl->log("finish vkSubmitDebugUtilsMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020157}
20158
20159#endif
20160#ifdef VK_ANDROID_external_memory_android_hardware_buffer
20161VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
20162 VkDevice device,
20163 const AHardwareBuffer* buffer,
20164 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
20165{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020166 mImpl->log("start vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020167 auto stream = mImpl->stream();
20168 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020169 auto resources = mImpl->resources();
20170 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020171 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020172 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020173 AHardwareBuffer* local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020174 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020175 local_buffer = nullptr;
20176 if (buffer)
20177 {
20178 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
20179 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020180 countingStream->rewind();
20181 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020182 uint64_t cgen_var_1403;
20183 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1403, 1);
20184 countingStream->write((uint64_t*)&cgen_var_1403, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020185 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020186 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20187 }
20188 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20189 countingStream->rewind();
20190 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
20191 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
20192 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020193 uint64_t cgen_var_1404;
20194 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1404, 1);
20195 stream->write((uint64_t*)&cgen_var_1404, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020196 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020197 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20198 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020199 if (pProperties)
20200 {
20201 transform_fromhost_VkAndroidHardwareBufferPropertiesANDROID(mImpl->resources(), (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
20202 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020203 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
20204 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020205 countingStream->clearPool();
20206 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020207 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020208 mImpl->log("finish vkGetAndroidHardwareBufferPropertiesANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020209 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
20210}
20211
20212VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
20213 VkDevice device,
20214 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
20215 AHardwareBuffer** pBuffer)
20216{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020217 mImpl->log("start vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020218 auto stream = mImpl->stream();
20219 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020220 auto resources = mImpl->resources();
20221 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020222 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020223 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020224 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020225 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020226 local_pInfo = nullptr;
20227 if (pInfo)
20228 {
20229 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
20230 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
20231 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020232 if (local_pInfo)
20233 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020234 transform_tohost_VkMemoryGetAndroidHardwareBufferInfoANDROID(mImpl->resources(), (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020235 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020236 countingStream->rewind();
20237 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020238 uint64_t cgen_var_1405;
20239 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1405, 1);
20240 countingStream->write((uint64_t*)&cgen_var_1405, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020241 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020242 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20243 }
20244 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20245 countingStream->rewind();
20246 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
20247 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
20248 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020249 uint64_t cgen_var_1406;
20250 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1406, 1);
20251 stream->write((uint64_t*)&cgen_var_1406, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020252 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020253 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20254 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
20255 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
20256 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020257 countingStream->clearPool();
20258 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020259 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020260 mImpl->log("finish vkGetMemoryAndroidHardwareBufferANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020261 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
20262}
20263
20264#endif
20265#ifdef VK_EXT_sampler_filter_minmax
20266#endif
20267#ifdef VK_AMD_gpu_shader_int16
20268#endif
20269#ifdef VK_AMD_mixed_attachment_samples
20270#endif
20271#ifdef VK_AMD_shader_fragment_mask
20272#endif
20273#ifdef VK_EXT_shader_stencil_export
20274#endif
20275#ifdef VK_EXT_sample_locations
20276void VkEncoder::vkCmdSetSampleLocationsEXT(
20277 VkCommandBuffer commandBuffer,
20278 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
20279{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020280 mImpl->log("start vkCmdSetSampleLocationsEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020281 auto stream = mImpl->stream();
20282 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020283 auto resources = mImpl->resources();
20284 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020285 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020286 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020287 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020288 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020289 local_pSampleLocationsInfo = nullptr;
20290 if (pSampleLocationsInfo)
20291 {
20292 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
20293 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
20294 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020295 if (local_pSampleLocationsInfo)
20296 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020297 transform_tohost_VkSampleLocationsInfoEXT(mImpl->resources(), (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020298 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020299 countingStream->rewind();
20300 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020301 uint64_t cgen_var_1407;
20302 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1407, 1);
20303 countingStream->write((uint64_t*)&cgen_var_1407, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020304 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020305 }
20306 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20307 countingStream->rewind();
20308 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
20309 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
20310 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020311 uint64_t cgen_var_1408;
20312 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1408, 1);
20313 stream->write((uint64_t*)&cgen_var_1408, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020314 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020315 mImpl->log("finish vkCmdSetSampleLocationsEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020316}
20317
20318void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
20319 VkPhysicalDevice physicalDevice,
20320 VkSampleCountFlagBits samples,
20321 VkMultisamplePropertiesEXT* pMultisampleProperties)
20322{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020323 mImpl->log("start vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020324 auto stream = mImpl->stream();
20325 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020326 auto resources = mImpl->resources();
20327 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020328 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020329 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020330 VkSampleCountFlagBits local_samples;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020331 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020332 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020333 countingStream->rewind();
20334 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020335 uint64_t cgen_var_1409;
20336 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1409, 1);
20337 countingStream->write((uint64_t*)&cgen_var_1409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020338 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020339 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20340 }
20341 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20342 countingStream->rewind();
20343 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
20344 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
20345 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020346 uint64_t cgen_var_1410;
20347 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1410, 1);
20348 stream->write((uint64_t*)&cgen_var_1410, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020349 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020350 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20351 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020352 if (pMultisampleProperties)
20353 {
20354 transform_fromhost_VkMultisamplePropertiesEXT(mImpl->resources(), (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
20355 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020356 mImpl->log("finish vkGetPhysicalDeviceMultisamplePropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020357}
20358
20359#endif
20360#ifdef VK_EXT_blend_operation_advanced
20361#endif
20362#ifdef VK_NV_fragment_coverage_to_color
20363#endif
20364#ifdef VK_NV_framebuffer_mixed_samples
20365#endif
20366#ifdef VK_NV_fill_rectangle
20367#endif
20368#ifdef VK_EXT_post_depth_coverage
20369#endif
20370#ifdef VK_EXT_validation_cache
20371VkResult VkEncoder::vkCreateValidationCacheEXT(
20372 VkDevice device,
20373 const VkValidationCacheCreateInfoEXT* pCreateInfo,
20374 const VkAllocationCallbacks* pAllocator,
20375 VkValidationCacheEXT* pValidationCache)
20376{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020377 mImpl->log("start vkCreateValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020378 auto stream = mImpl->stream();
20379 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020380 auto resources = mImpl->resources();
20381 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020382 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020383 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020384 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020385 VkAllocationCallbacks* local_pAllocator;
20386 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020387 local_pCreateInfo = nullptr;
20388 if (pCreateInfo)
20389 {
20390 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
20391 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
20392 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020393 local_pAllocator = nullptr;
20394 if (pAllocator)
20395 {
20396 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20397 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20398 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020399 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020400 if (local_pCreateInfo)
20401 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020402 transform_tohost_VkValidationCacheCreateInfoEXT(mImpl->resources(), (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020403 }
20404 if (local_pAllocator)
20405 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020406 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020407 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020408 countingStream->rewind();
20409 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020410 uint64_t cgen_var_1411;
20411 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1411, 1);
20412 countingStream->write((uint64_t*)&cgen_var_1411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020413 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020414 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020415 uint64_t cgen_var_1412 = (uint64_t)(uintptr_t)local_pAllocator;
20416 countingStream->putBe64(cgen_var_1412);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020417 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020418 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020419 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020420 }
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020421 uint64_t cgen_var_1413;
20422 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1413, 1);
20423 countingStream->write((uint64_t*)&cgen_var_1413, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020424 }
20425 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20426 countingStream->rewind();
20427 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
20428 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
20429 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020430 uint64_t cgen_var_1414;
20431 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1414, 1);
20432 stream->write((uint64_t*)&cgen_var_1414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020433 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020434 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020435 uint64_t cgen_var_1415 = (uint64_t)(uintptr_t)local_pAllocator;
20436 stream->putBe64(cgen_var_1415);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020437 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020438 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020439 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020440 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020441 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020442 uint64_t cgen_var_1416;
20443 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1416, 1);
20444 stream->write((uint64_t*)&cgen_var_1416, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020445 stream->setHandleMapping(resources->unwrapMapping());
20446 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020447 uint64_t cgen_var_1417;
20448 stream->read((uint64_t*)&cgen_var_1417, 8);
20449 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1417, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020450 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020451 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
20452 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020453 countingStream->clearPool();
20454 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020455 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020456 mImpl->log("finish vkCreateValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020457 return vkCreateValidationCacheEXT_VkResult_return;
20458}
20459
20460void VkEncoder::vkDestroyValidationCacheEXT(
20461 VkDevice device,
20462 VkValidationCacheEXT validationCache,
20463 const VkAllocationCallbacks* pAllocator)
20464{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020465 mImpl->log("start vkDestroyValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020466 auto stream = mImpl->stream();
20467 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020468 auto resources = mImpl->resources();
20469 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020470 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020471 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020472 VkValidationCacheEXT local_validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020473 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020474 local_device = device;
20475 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020476 local_pAllocator = nullptr;
20477 if (pAllocator)
20478 {
20479 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20480 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20481 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020482 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020483 if (local_pAllocator)
20484 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020485 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020486 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020487 countingStream->rewind();
20488 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020489 uint64_t cgen_var_1418;
20490 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1418, 1);
20491 countingStream->write((uint64_t*)&cgen_var_1418, 1 * 8);
20492 uint64_t cgen_var_1419;
20493 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1419, 1);
20494 countingStream->write((uint64_t*)&cgen_var_1419, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020495 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020496 uint64_t cgen_var_1420 = (uint64_t)(uintptr_t)local_pAllocator;
20497 countingStream->putBe64(cgen_var_1420);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020498 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020499 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020500 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020501 }
20502 }
20503 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20504 countingStream->rewind();
20505 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
20506 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
20507 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020508 uint64_t cgen_var_1421;
20509 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1421, 1);
20510 stream->write((uint64_t*)&cgen_var_1421, 1 * 8);
20511 uint64_t cgen_var_1422;
20512 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1422, 1);
20513 stream->write((uint64_t*)&cgen_var_1422, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020514 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020515 uint64_t cgen_var_1423 = (uint64_t)(uintptr_t)local_pAllocator;
20516 stream->putBe64(cgen_var_1423);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020517 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020518 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020519 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020520 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020521 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020522 mImpl->log("finish vkDestroyValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020523}
20524
20525VkResult VkEncoder::vkMergeValidationCachesEXT(
20526 VkDevice device,
20527 VkValidationCacheEXT dstCache,
20528 uint32_t srcCacheCount,
20529 const VkValidationCacheEXT* pSrcCaches)
20530{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020531 mImpl->log("start vkMergeValidationCachesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020532 auto stream = mImpl->stream();
20533 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020534 auto resources = mImpl->resources();
20535 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020536 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020537 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020538 VkValidationCacheEXT local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020539 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020540 VkValidationCacheEXT* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020541 local_device = device;
20542 local_dstCache = dstCache;
20543 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020544 local_pSrcCaches = nullptr;
20545 if (pSrcCaches)
20546 {
20547 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
20548 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020549 countingStream->rewind();
20550 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020551 uint64_t cgen_var_1424;
20552 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1424, 1);
20553 countingStream->write((uint64_t*)&cgen_var_1424, 1 * 8);
20554 uint64_t cgen_var_1425;
20555 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1425, 1);
20556 countingStream->write((uint64_t*)&cgen_var_1425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020557 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020558 if (((srcCacheCount)))
20559 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020560 uint64_t* cgen_var_1426;
20561 countingStream->alloc((void**)&cgen_var_1426, ((srcCacheCount)) * 8);
20562 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1426, ((srcCacheCount)));
20563 countingStream->write((uint64_t*)cgen_var_1426, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020564 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020565 }
20566 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20567 countingStream->rewind();
20568 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
20569 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
20570 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020571 uint64_t cgen_var_1427;
20572 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1427, 1);
20573 stream->write((uint64_t*)&cgen_var_1427, 1 * 8);
20574 uint64_t cgen_var_1428;
20575 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1428, 1);
20576 stream->write((uint64_t*)&cgen_var_1428, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020577 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020578 if (((srcCacheCount)))
20579 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020580 uint64_t* cgen_var_1429;
20581 stream->alloc((void**)&cgen_var_1429, ((srcCacheCount)) * 8);
20582 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1429, ((srcCacheCount)));
20583 stream->write((uint64_t*)cgen_var_1429, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020584 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020585 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
20586 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020587 countingStream->clearPool();
20588 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020589 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020590 mImpl->log("finish vkMergeValidationCachesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020591 return vkMergeValidationCachesEXT_VkResult_return;
20592}
20593
20594VkResult VkEncoder::vkGetValidationCacheDataEXT(
20595 VkDevice device,
20596 VkValidationCacheEXT validationCache,
20597 size_t* pDataSize,
20598 void* pData)
20599{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020600 mImpl->log("start vkGetValidationCacheDataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020601 auto stream = mImpl->stream();
20602 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020603 auto resources = mImpl->resources();
20604 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020605 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020606 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020607 VkValidationCacheEXT local_validationCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020608 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020609 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020610 countingStream->rewind();
20611 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020612 uint64_t cgen_var_1430;
20613 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1430, 1);
20614 countingStream->write((uint64_t*)&cgen_var_1430, 1 * 8);
20615 uint64_t cgen_var_1431;
20616 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1431, 1);
20617 countingStream->write((uint64_t*)&cgen_var_1431, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020618 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020619 uint64_t cgen_var_1432 = (uint64_t)(uintptr_t)pDataSize;
20620 countingStream->putBe64(cgen_var_1432);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020621 if (pDataSize)
20622 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020623 uint64_t cgen_var_1433 = (uint64_t)(*pDataSize);
20624 countingStream->putBe64(cgen_var_1433);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020625 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020626 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020627 uint64_t cgen_var_1434 = (uint64_t)(uintptr_t)pData;
20628 countingStream->putBe64(cgen_var_1434);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020629 if (pData)
20630 {
20631 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20632 }
20633 }
20634 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20635 countingStream->rewind();
20636 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
20637 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
20638 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020639 uint64_t cgen_var_1435;
20640 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1435, 1);
20641 stream->write((uint64_t*)&cgen_var_1435, 1 * 8);
20642 uint64_t cgen_var_1436;
20643 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1436, 1);
20644 stream->write((uint64_t*)&cgen_var_1436, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020645 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020646 uint64_t cgen_var_1437 = (uint64_t)(uintptr_t)pDataSize;
20647 stream->putBe64(cgen_var_1437);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020648 if (pDataSize)
20649 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020650 uint64_t cgen_var_1438 = (uint64_t)(*pDataSize);
20651 stream->putBe64(cgen_var_1438);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020652 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020653 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020654 uint64_t cgen_var_1439 = (uint64_t)(uintptr_t)pData;
20655 stream->putBe64(cgen_var_1439);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020656 if (pData)
20657 {
20658 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20659 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020660 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020661 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020662 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020663 if (pDataSize)
20664 {
20665 if (!(check_pDataSize))
20666 {
20667 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
20668 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080020669 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020670 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020671 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020672 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020673 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020674 if (pData)
20675 {
20676 if (!(check_pData))
20677 {
20678 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
20679 }
20680 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
20681 }
20682 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
20683 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020684 countingStream->clearPool();
20685 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020686 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020687 mImpl->log("finish vkGetValidationCacheDataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020688 return vkGetValidationCacheDataEXT_VkResult_return;
20689}
20690
20691#endif
20692#ifdef VK_EXT_descriptor_indexing
20693#endif
20694#ifdef VK_EXT_shader_viewport_index_layer
20695#endif
20696#ifdef VK_EXT_global_priority
20697#endif
20698#ifdef VK_EXT_external_memory_host
20699VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
20700 VkDevice device,
20701 VkExternalMemoryHandleTypeFlagBits handleType,
20702 const void* pHostPointer,
20703 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
20704{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020705 mImpl->log("start vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020706 auto stream = mImpl->stream();
20707 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020708 auto resources = mImpl->resources();
20709 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020710 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020711 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020712 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020713 void* local_pHostPointer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020714 local_device = device;
20715 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020716 local_pHostPointer = nullptr;
20717 if (pHostPointer)
20718 {
20719 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
20720 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020721 countingStream->rewind();
20722 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020723 uint64_t cgen_var_1443;
20724 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1443, 1);
20725 countingStream->write((uint64_t*)&cgen_var_1443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020726 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020727 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020728 uint64_t cgen_var_1444 = (uint64_t)(uintptr_t)local_pHostPointer;
20729 countingStream->putBe64(cgen_var_1444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020730 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020731 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020732 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020733 }
20734 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20735 }
20736 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20737 countingStream->rewind();
20738 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
20739 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
20740 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020741 uint64_t cgen_var_1445;
20742 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1445, 1);
20743 stream->write((uint64_t*)&cgen_var_1445, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020744 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020745 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020746 uint64_t cgen_var_1446 = (uint64_t)(uintptr_t)local_pHostPointer;
20747 stream->putBe64(cgen_var_1446);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020748 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020749 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020750 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020751 }
20752 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20753 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020754 if (pMemoryHostPointerProperties)
20755 {
20756 transform_fromhost_VkMemoryHostPointerPropertiesEXT(mImpl->resources(), (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
20757 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020758 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
20759 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020760 countingStream->clearPool();
20761 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020762 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020763 mImpl->log("finish vkGetMemoryHostPointerPropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020764 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
20765}
20766
20767#endif
20768#ifdef VK_AMD_buffer_marker
20769void VkEncoder::vkCmdWriteBufferMarkerAMD(
20770 VkCommandBuffer commandBuffer,
20771 VkPipelineStageFlagBits pipelineStage,
20772 VkBuffer dstBuffer,
20773 VkDeviceSize dstOffset,
20774 uint32_t marker)
20775{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020776 mImpl->log("start vkCmdWriteBufferMarkerAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020777 auto stream = mImpl->stream();
20778 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020779 auto resources = mImpl->resources();
20780 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020781 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020782 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020783 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020784 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020785 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020786 uint32_t local_marker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020787 local_commandBuffer = commandBuffer;
20788 local_pipelineStage = pipelineStage;
20789 local_dstBuffer = dstBuffer;
20790 local_dstOffset = dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020791 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020792 countingStream->rewind();
20793 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020794 uint64_t cgen_var_1447;
20795 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1447, 1);
20796 countingStream->write((uint64_t*)&cgen_var_1447, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020797 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020798 uint64_t cgen_var_1448;
20799 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1448, 1);
20800 countingStream->write((uint64_t*)&cgen_var_1448, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020801 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
20802 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020803 }
20804 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20805 countingStream->rewind();
20806 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
20807 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
20808 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020809 uint64_t cgen_var_1449;
20810 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1449, 1);
20811 stream->write((uint64_t*)&cgen_var_1449, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020812 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020813 uint64_t cgen_var_1450;
20814 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1450, 1);
20815 stream->write((uint64_t*)&cgen_var_1450, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020816 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
20817 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020818 mImpl->log("finish vkCmdWriteBufferMarkerAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020819}
20820
20821#endif
20822#ifdef VK_AMD_shader_core_properties
20823#endif
20824#ifdef VK_EXT_vertex_attribute_divisor
20825#endif
20826#ifdef VK_NV_shader_subgroup_partitioned
20827#endif
20828#ifdef VK_NV_device_diagnostic_checkpoints
20829void VkEncoder::vkCmdSetCheckpointNV(
20830 VkCommandBuffer commandBuffer,
20831 const void* pCheckpointMarker)
20832{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020833 mImpl->log("start vkCmdSetCheckpointNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020834 auto stream = mImpl->stream();
20835 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020836 auto resources = mImpl->resources();
20837 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020838 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020839 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020840 void* local_pCheckpointMarker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020841 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020842 local_pCheckpointMarker = nullptr;
20843 if (pCheckpointMarker)
20844 {
20845 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
20846 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020847 countingStream->rewind();
20848 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020849 uint64_t cgen_var_1451;
20850 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1451, 1);
20851 countingStream->write((uint64_t*)&cgen_var_1451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020852 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020853 uint64_t cgen_var_1452 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
20854 countingStream->putBe64(cgen_var_1452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020855 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020856 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020857 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020858 }
20859 }
20860 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20861 countingStream->rewind();
20862 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
20863 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
20864 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020865 uint64_t cgen_var_1453;
20866 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1453, 1);
20867 stream->write((uint64_t*)&cgen_var_1453, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020868 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020869 uint64_t cgen_var_1454 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
20870 stream->putBe64(cgen_var_1454);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020871 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020872 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020873 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020874 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020875 mImpl->log("finish vkCmdSetCheckpointNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020876}
20877
20878void VkEncoder::vkGetQueueCheckpointDataNV(
20879 VkQueue queue,
20880 uint32_t* pCheckpointDataCount,
20881 VkCheckpointDataNV* pCheckpointData)
20882{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020883 mImpl->log("start vkGetQueueCheckpointDataNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020884 auto stream = mImpl->stream();
20885 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020886 auto resources = mImpl->resources();
20887 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020888 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020889 VkQueue local_queue;
20890 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020891 countingStream->rewind();
20892 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020893 uint64_t cgen_var_1455;
20894 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1455, 1);
20895 countingStream->write((uint64_t*)&cgen_var_1455, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020896 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020897 uint64_t cgen_var_1456 = (uint64_t)(uintptr_t)pCheckpointDataCount;
20898 countingStream->putBe64(cgen_var_1456);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020899 if (pCheckpointDataCount)
20900 {
20901 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
20902 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020903 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020904 uint64_t cgen_var_1457 = (uint64_t)(uintptr_t)pCheckpointData;
20905 countingStream->putBe64(cgen_var_1457);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020906 if (pCheckpointData)
20907 {
20908 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
20909 {
20910 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
20911 }
20912 }
20913 }
20914 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20915 countingStream->rewind();
20916 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
20917 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
20918 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020919 uint64_t cgen_var_1458;
20920 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1458, 1);
20921 stream->write((uint64_t*)&cgen_var_1458, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020922 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020923 uint64_t cgen_var_1459 = (uint64_t)(uintptr_t)pCheckpointDataCount;
20924 stream->putBe64(cgen_var_1459);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020925 if (pCheckpointDataCount)
20926 {
20927 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
20928 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020929 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020930 uint64_t cgen_var_1460 = (uint64_t)(uintptr_t)pCheckpointData;
20931 stream->putBe64(cgen_var_1460);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020932 if (pCheckpointData)
20933 {
20934 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
20935 {
20936 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
20937 }
20938 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020939 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020940 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020941 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020942 if (pCheckpointDataCount)
20943 {
20944 if (!(check_pCheckpointDataCount))
20945 {
20946 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
20947 }
20948 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
20949 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020950 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020951 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020952 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020953 if (pCheckpointData)
20954 {
20955 if (!(check_pCheckpointData))
20956 {
20957 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
20958 }
20959 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
20960 {
20961 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
20962 }
20963 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080020964 if (pCheckpointData)
20965 {
20966 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
20967 {
20968 transform_fromhost_VkCheckpointDataNV(mImpl->resources(), (VkCheckpointDataNV*)(pCheckpointData + i));
20969 }
20970 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020971 mImpl->log("finish vkGetQueueCheckpointDataNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020972}
20973
20974#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080020975#ifdef VK_GOOGLE_address_space
20976VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE(
20977 VkDevice device,
20978 VkDeviceMemory memory,
20979 uint64_t* pAddress)
20980{
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020981 mImpl->log("start vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080020982 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress);
20983 auto stream = mImpl->stream();
20984 auto countingStream = mImpl->countingStream();
20985 auto resources = mImpl->resources();
20986 auto pool = mImpl->pool();
20987 stream->setHandleMapping(resources->unwrapMapping());
20988 VkDevice local_device;
20989 VkDeviceMemory local_memory;
20990 local_device = device;
20991 local_memory = memory;
Lingfeng Yangafe29d32018-12-25 13:01:52 -080020992 mImpl->resources()->deviceMemoryTransform_tohost(&local_memory, 1, nullptr, 0, nullptr, 0, nullptr, 0, nullptr, 0);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080020993 countingStream->rewind();
20994 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080020995 uint64_t cgen_var_1463;
20996 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1463, 1);
20997 countingStream->write((uint64_t*)&cgen_var_1463, 1 * 8);
20998 uint64_t cgen_var_1464;
20999 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1464, 1);
21000 countingStream->write((uint64_t*)&cgen_var_1464, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021001 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080021002 uint64_t cgen_var_1465 = (uint64_t)(uintptr_t)pAddress;
21003 countingStream->putBe64(cgen_var_1465);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021004 if (pAddress)
21005 {
21006 countingStream->write((uint64_t*)pAddress, sizeof(uint64_t));
21007 }
21008 }
21009 uint32_t packetSize_vkMapMemoryIntoAddressSpaceGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21010 countingStream->rewind();
21011 uint32_t opcode_vkMapMemoryIntoAddressSpaceGOOGLE = OP_vkMapMemoryIntoAddressSpaceGOOGLE;
21012 stream->write(&opcode_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
21013 stream->write(&packetSize_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080021014 uint64_t cgen_var_1466;
21015 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1466, 1);
21016 stream->write((uint64_t*)&cgen_var_1466, 1 * 8);
21017 uint64_t cgen_var_1467;
21018 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1467, 1);
21019 stream->write((uint64_t*)&cgen_var_1467, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021020 // WARNING PTR CHECK
Lingfeng Yang5fda8132019-01-23 09:57:27 -080021021 uint64_t cgen_var_1468 = (uint64_t)(uintptr_t)pAddress;
21022 stream->putBe64(cgen_var_1468);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021023 if (pAddress)
21024 {
21025 stream->write((uint64_t*)pAddress, sizeof(uint64_t));
21026 }
21027 // WARNING PTR CHECK
21028 uint64_t* check_pAddress;
21029 check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64();
21030 if (pAddress)
21031 {
21032 if (!(check_pAddress))
21033 {
21034 fprintf(stderr, "fatal: pAddress inconsistent between guest and host\n");
21035 }
21036 stream->read((uint64_t*)pAddress, sizeof(uint64_t));
21037 }
21038 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
21039 stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult));
21040 countingStream->clearPool();
21041 stream->clearPool();
21042 pool->freeAll();
21043 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021044 mImpl->log("finish vkMapMemoryIntoAddressSpaceGOOGLE");;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080021045 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
21046}
21047
21048#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021049
Lingfeng Yangb1d90102018-11-29 16:10:36 -080021050} // namespace goldfish_vk