blob: 51976f98bc0e1ce3e9aa59bb14f3c4916b4e5eb9 [file] [log] [blame]
Lingfeng Yang6a283672018-11-01 13:37:56 -07001// Copyright (C) 2018 The Android Open Source Project
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002// Copyright (C) 2018 Google Inc.
Lingfeng Yang6a283672018-11-01 13:37:56 -07003//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015
16// Autogenerated module VkEncoder
17// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18// Please do not modify directly;
19// re-run android/scripts/generate-vulkan-sources.sh,
20// or directly from Python by defining:
21// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22// CEREAL_OUTPUT_DIR: Where to put the generated sources.
23// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070025#include "VkEncoder.h"
Lingfeng Yang6a283672018-11-01 13:37:56 -070026
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070027
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070028#include "IOStream.h"
Lingfeng Yange30d3382018-11-09 08:24:37 -080029#include "Resources.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080030#include "ResourceTracker.h"
Lingfeng Yang60b411d2018-11-29 00:26:45 -080031#include "Validation.h"
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070032#include "VulkanStream.h"
33
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080034#include "android/base/AlignedBuf.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080035#include "android/base/Pool.h"
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080036
Lingfeng Yange71c6422018-11-01 19:29:49 -070037#include "goldfish_vk_marshaling_guest.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080038#include "goldfish_vk_deepcopy_guest.h"
39#include "goldfish_vk_handlemap_guest.h"
Lingfeng Yang808a6312018-11-13 21:06:15 -080040#include "goldfish_vk_private_defs.h"
Lingfeng Yange71c6422018-11-01 19:29:49 -070041
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070042
Lingfeng Yangb1d90102018-11-29 16:10:36 -080043namespace goldfish_vk {
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070044
45
46
Lingfeng Yang71b596b2018-11-07 18:03:25 -080047using namespace goldfish_vk;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070048
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080049using android::aligned_buf_alloc;
50using android::aligned_buf_free;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080051using android::base::Pool;
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080052
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070053class VkEncoder::Impl {
54public:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070055 Impl(IOStream* stream) : m_stream(stream) { }
56 VulkanCountingStream* countingStream() { return &m_countingStream; }
57 VulkanStream* stream() { return &m_stream; }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080058 Pool* pool() { return &m_pool; }
59 ResourceTracker* resources() { return ResourceTracker::get(); }
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070060private:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070061 VulkanCountingStream m_countingStream;
62 VulkanStream m_stream;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080063 Pool m_pool { 8, 4096, 64 };
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070064};
65
66VkEncoder::VkEncoder(IOStream *stream) :
67 mImpl(new VkEncoder::Impl(stream)) { }
Lingfeng Yang60b411d2018-11-29 00:26:45 -080068
69#define VALIDATE_RET(retType, success, validate) \
70 retType goldfish_vk_validateResult = validate; \
71 if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \
72
73#define VALIDATE_VOID(validate) \
74 VkResult goldfish_vk_validateResult = validate; \
75 if (goldfish_vk_validateResult != VK_SUCCESS) return; \
76
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070077#ifdef VK_VERSION_1_0
78VkResult VkEncoder::vkCreateInstance(
79 const VkInstanceCreateInfo* pCreateInfo,
80 const VkAllocationCallbacks* pAllocator,
81 VkInstance* pInstance)
82{
83 auto stream = mImpl->stream();
84 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080085 auto resources = mImpl->resources();
86 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080087 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080088 VkInstanceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080089 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080090 local_pCreateInfo = nullptr;
91 if (pCreateInfo)
92 {
93 local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo));
94 deepcopy_VkInstanceCreateInfo(pool, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo));
95 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080096 local_pAllocator = nullptr;
97 if (pAllocator)
98 {
99 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
100 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
101 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800102 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700103 countingStream->rewind();
104 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800105 marshal_VkInstanceCreateInfo(countingStream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800106 // WARNING PTR CHECK
107 uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator;
108 countingStream->putBe64(cgen_var_0);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800109 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700110 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800111 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700112 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800113 uint64_t cgen_var_1;
114 countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1);
115 countingStream->write((uint64_t*)&cgen_var_1, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700116 }
117 uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
118 countingStream->rewind();
119 uint32_t opcode_vkCreateInstance = OP_vkCreateInstance;
120 stream->write(&opcode_vkCreateInstance, sizeof(uint32_t));
121 stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800122 marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800123 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800124 uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator;
125 stream->putBe64(cgen_var_2);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800126 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700127 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800128 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700129 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800130 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800131 uint64_t cgen_var_3;
132 stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1);
133 stream->write((uint64_t*)&cgen_var_3, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800134 stream->setHandleMapping(resources->unwrapMapping());
135 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800136 uint64_t cgen_var_4;
137 stream->read((uint64_t*)&cgen_var_4, 8);
138 stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800139 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700140 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
141 stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800142 countingStream->clearPool();
143 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800144 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700145 return vkCreateInstance_VkResult_return;
146}
147
148void VkEncoder::vkDestroyInstance(
149 VkInstance instance,
150 const VkAllocationCallbacks* pAllocator)
151{
152 auto stream = mImpl->stream();
153 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800154 auto resources = mImpl->resources();
155 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800156 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800157 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800158 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800159 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800160 local_pAllocator = nullptr;
161 if (pAllocator)
162 {
163 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
164 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
165 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800166 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700167 countingStream->rewind();
168 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800169 uint64_t cgen_var_5;
170 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800171 countingStream->write((uint64_t*)&cgen_var_5, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800172 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800173 uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
174 countingStream->putBe64(cgen_var_6);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800175 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700176 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800177 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700178 }
179 }
180 uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
181 countingStream->rewind();
182 uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
183 stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
184 stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800185 uint64_t cgen_var_7;
186 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800187 stream->write((uint64_t*)&cgen_var_7, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800188 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800189 uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
190 stream->putBe64(cgen_var_8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800191 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700192 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800193 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700194 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800195 resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700196}
197
198VkResult VkEncoder::vkEnumeratePhysicalDevices(
199 VkInstance instance,
200 uint32_t* pPhysicalDeviceCount,
201 VkPhysicalDevice* pPhysicalDevices)
202{
203 auto stream = mImpl->stream();
204 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800205 auto resources = mImpl->resources();
206 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800207 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800208 VkInstance local_instance;
209 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700210 countingStream->rewind();
211 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800212 uint64_t cgen_var_9;
213 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800214 countingStream->write((uint64_t*)&cgen_var_9, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800215 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800216 uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
217 countingStream->putBe64(cgen_var_10);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700218 if (pPhysicalDeviceCount)
219 {
220 countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
221 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800222 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800223 uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
224 countingStream->putBe64(cgen_var_11);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700225 if (pPhysicalDevices)
226 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800227 if ((*(pPhysicalDeviceCount)))
228 {
229 uint64_t* cgen_var_12;
230 countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
231 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800232 countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800233 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700234 }
235 }
236 uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
237 countingStream->rewind();
238 uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
239 stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
240 stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800241 uint64_t cgen_var_13;
242 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800243 stream->write((uint64_t*)&cgen_var_13, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800244 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800245 uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
246 stream->putBe64(cgen_var_14);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700247 if (pPhysicalDeviceCount)
248 {
249 stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
250 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800251 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800252 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800253 uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
254 stream->putBe64(cgen_var_15);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700255 if (pPhysicalDevices)
256 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800257 if ((*(pPhysicalDeviceCount)))
258 {
259 uint64_t* cgen_var_16;
260 stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
261 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800262 stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800263 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700264 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800265 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800266 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700267 uint32_t* check_pPhysicalDeviceCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800268 check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700269 if (pPhysicalDeviceCount)
270 {
271 if (!(check_pPhysicalDeviceCount))
272 {
273 fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
274 }
275 stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
276 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800277 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800278 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700279 VkPhysicalDevice* check_pPhysicalDevices;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800280 check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700281 if (pPhysicalDevices)
282 {
283 if (!(check_pPhysicalDevices))
284 {
285 fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
286 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800287 if ((*(pPhysicalDeviceCount)))
288 {
289 uint64_t* cgen_var_19;
290 stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800291 stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800292 stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
293 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700294 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800295 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700296 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
297 stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800298 countingStream->clearPool();
299 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800300 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700301 return vkEnumeratePhysicalDevices_VkResult_return;
302}
303
304void VkEncoder::vkGetPhysicalDeviceFeatures(
305 VkPhysicalDevice physicalDevice,
306 VkPhysicalDeviceFeatures* pFeatures)
307{
308 auto stream = mImpl->stream();
309 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800310 auto resources = mImpl->resources();
311 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800312 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800313 VkPhysicalDevice local_physicalDevice;
314 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700315 countingStream->rewind();
316 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800317 uint64_t cgen_var_20;
318 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800319 countingStream->write((uint64_t*)&cgen_var_20, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700320 marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
321 }
322 uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
323 countingStream->rewind();
324 uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
325 stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
326 stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800327 uint64_t cgen_var_21;
328 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800329 stream->write((uint64_t*)&cgen_var_21, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700330 marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
331 unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
332}
333
334void VkEncoder::vkGetPhysicalDeviceFormatProperties(
335 VkPhysicalDevice physicalDevice,
336 VkFormat format,
337 VkFormatProperties* pFormatProperties)
338{
339 auto stream = mImpl->stream();
340 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800341 auto resources = mImpl->resources();
342 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800343 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800344 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800345 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800346 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800347 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700348 countingStream->rewind();
349 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800350 uint64_t cgen_var_22;
351 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800352 countingStream->write((uint64_t*)&cgen_var_22, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800353 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700354 marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
355 }
356 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
357 countingStream->rewind();
358 uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
359 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
360 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800361 uint64_t cgen_var_23;
362 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800363 stream->write((uint64_t*)&cgen_var_23, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800364 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700365 marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
366 unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
367}
368
369VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
370 VkPhysicalDevice physicalDevice,
371 VkFormat format,
372 VkImageType type,
373 VkImageTiling tiling,
374 VkImageUsageFlags usage,
375 VkImageCreateFlags flags,
376 VkImageFormatProperties* pImageFormatProperties)
377{
378 auto stream = mImpl->stream();
379 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800380 auto resources = mImpl->resources();
381 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800382 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800383 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800384 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800385 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800386 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800387 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800388 VkImageCreateFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800389 local_physicalDevice = physicalDevice;
390 local_format = format;
391 local_type = type;
392 local_tiling = tiling;
393 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800394 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700395 countingStream->rewind();
396 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800397 uint64_t cgen_var_24;
398 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800399 countingStream->write((uint64_t*)&cgen_var_24, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800400 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
401 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
402 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
403 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
404 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700405 marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
406 }
407 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
408 countingStream->rewind();
409 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
410 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
411 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800412 uint64_t cgen_var_25;
413 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800414 stream->write((uint64_t*)&cgen_var_25, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800415 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
416 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
417 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
418 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
419 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700420 marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
421 unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
422 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
423 stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800424 countingStream->clearPool();
425 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800426 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700427 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
428}
429
430void VkEncoder::vkGetPhysicalDeviceProperties(
431 VkPhysicalDevice physicalDevice,
432 VkPhysicalDeviceProperties* pProperties)
433{
434 auto stream = mImpl->stream();
435 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800436 auto resources = mImpl->resources();
437 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800438 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800439 VkPhysicalDevice local_physicalDevice;
440 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700441 countingStream->rewind();
442 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800443 uint64_t cgen_var_26;
444 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800445 countingStream->write((uint64_t*)&cgen_var_26, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700446 marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
447 }
448 uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
449 countingStream->rewind();
450 uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
451 stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
452 stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800453 uint64_t cgen_var_27;
454 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800455 stream->write((uint64_t*)&cgen_var_27, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700456 marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
457 unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
458}
459
460void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
461 VkPhysicalDevice physicalDevice,
462 uint32_t* pQueueFamilyPropertyCount,
463 VkQueueFamilyProperties* pQueueFamilyProperties)
464{
465 auto stream = mImpl->stream();
466 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800467 auto resources = mImpl->resources();
468 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800469 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800470 VkPhysicalDevice local_physicalDevice;
471 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700472 countingStream->rewind();
473 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800474 uint64_t cgen_var_28;
475 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800476 countingStream->write((uint64_t*)&cgen_var_28, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800477 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800478 uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
479 countingStream->putBe64(cgen_var_29);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700480 if (pQueueFamilyPropertyCount)
481 {
482 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
483 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800484 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800485 uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
486 countingStream->putBe64(cgen_var_30);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700487 if (pQueueFamilyProperties)
488 {
489 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
490 {
491 marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
492 }
493 }
494 }
495 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
496 countingStream->rewind();
497 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
498 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
499 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800500 uint64_t cgen_var_31;
501 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800502 stream->write((uint64_t*)&cgen_var_31, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800503 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800504 uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
505 stream->putBe64(cgen_var_32);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700506 if (pQueueFamilyPropertyCount)
507 {
508 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
509 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800510 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800511 uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
512 stream->putBe64(cgen_var_33);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700513 if (pQueueFamilyProperties)
514 {
515 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
516 {
517 marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
518 }
519 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800520 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700521 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800522 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700523 if (pQueueFamilyPropertyCount)
524 {
525 if (!(check_pQueueFamilyPropertyCount))
526 {
527 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
528 }
529 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
530 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800531 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700532 VkQueueFamilyProperties* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800533 check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700534 if (pQueueFamilyProperties)
535 {
536 if (!(check_pQueueFamilyProperties))
537 {
538 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
539 }
540 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
541 {
542 unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
543 }
544 }
545}
546
547void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
548 VkPhysicalDevice physicalDevice,
549 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
550{
551 auto stream = mImpl->stream();
552 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800553 auto resources = mImpl->resources();
554 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800555 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800556 VkPhysicalDevice local_physicalDevice;
557 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700558 countingStream->rewind();
559 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800560 uint64_t cgen_var_36;
561 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800562 countingStream->write((uint64_t*)&cgen_var_36, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700563 marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
564 }
565 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
566 countingStream->rewind();
567 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
568 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
569 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800570 uint64_t cgen_var_37;
571 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800572 stream->write((uint64_t*)&cgen_var_37, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700573 marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
574 unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
575}
576
577PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
578 VkInstance instance,
579 const char* pName)
580{
581 auto stream = mImpl->stream();
582 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800583 auto resources = mImpl->resources();
584 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800585 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800586 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800587 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800588 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800589 local_pName = nullptr;
590 if (pName)
591 {
592 local_pName = pool->strDup(pName);
593 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700594 countingStream->rewind();
595 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800596 uint64_t cgen_var_38;
597 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800598 countingStream->write((uint64_t*)&cgen_var_38, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800599 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700600 }
601 uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
602 countingStream->rewind();
603 uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
604 stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
605 stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800606 uint64_t cgen_var_39;
607 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800608 stream->write((uint64_t*)&cgen_var_39, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800609 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700610 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
611 stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800612 countingStream->clearPool();
613 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800614 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700615 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
616}
617
618PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
619 VkDevice device,
620 const char* pName)
621{
622 auto stream = mImpl->stream();
623 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800624 auto resources = mImpl->resources();
625 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800626 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800627 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800628 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800629 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800630 local_pName = nullptr;
631 if (pName)
632 {
633 local_pName = pool->strDup(pName);
634 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700635 countingStream->rewind();
636 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800637 uint64_t cgen_var_40;
638 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800639 countingStream->write((uint64_t*)&cgen_var_40, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800640 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700641 }
642 uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
643 countingStream->rewind();
644 uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
645 stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
646 stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800647 uint64_t cgen_var_41;
648 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800649 stream->write((uint64_t*)&cgen_var_41, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800650 stream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700651 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
652 stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800653 countingStream->clearPool();
654 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800655 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700656 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
657}
658
659VkResult VkEncoder::vkCreateDevice(
660 VkPhysicalDevice physicalDevice,
661 const VkDeviceCreateInfo* pCreateInfo,
662 const VkAllocationCallbacks* pAllocator,
663 VkDevice* pDevice)
664{
665 auto stream = mImpl->stream();
666 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800667 auto resources = mImpl->resources();
668 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800669 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800670 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800671 VkDeviceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800672 VkAllocationCallbacks* local_pAllocator;
673 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800674 local_pCreateInfo = nullptr;
675 if (pCreateInfo)
676 {
677 local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo));
678 deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo));
679 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800680 local_pAllocator = nullptr;
681 if (pAllocator)
682 {
683 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
684 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
685 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800686 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700687 countingStream->rewind();
688 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800689 uint64_t cgen_var_42;
690 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800691 countingStream->write((uint64_t*)&cgen_var_42, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800692 marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800693 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800694 uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
695 countingStream->putBe64(cgen_var_43);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800696 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700697 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800698 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700699 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800700 uint64_t cgen_var_44;
701 countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
702 countingStream->write((uint64_t*)&cgen_var_44, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700703 }
704 uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
705 countingStream->rewind();
706 uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
707 stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
708 stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800709 uint64_t cgen_var_45;
710 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800711 stream->write((uint64_t*)&cgen_var_45, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800712 marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800713 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800714 uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
715 stream->putBe64(cgen_var_46);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800716 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700717 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800718 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700719 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800720 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800721 uint64_t cgen_var_47;
722 stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
723 stream->write((uint64_t*)&cgen_var_47, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800724 stream->setHandleMapping(resources->unwrapMapping());
725 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800726 uint64_t cgen_var_48;
727 stream->read((uint64_t*)&cgen_var_48, 8);
728 stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800729 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700730 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
731 stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800732 countingStream->clearPool();
733 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800734 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -0800735 goldfish_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700736 return vkCreateDevice_VkResult_return;
737}
738
739void VkEncoder::vkDestroyDevice(
740 VkDevice device,
741 const VkAllocationCallbacks* pAllocator)
742{
743 auto stream = mImpl->stream();
744 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800745 auto resources = mImpl->resources();
746 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800747 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800748 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800749 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800750 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800751 local_pAllocator = nullptr;
752 if (pAllocator)
753 {
754 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
755 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
756 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800757 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700758 countingStream->rewind();
759 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800760 uint64_t cgen_var_49;
761 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800762 countingStream->write((uint64_t*)&cgen_var_49, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800763 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800764 uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
765 countingStream->putBe64(cgen_var_50);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800766 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700767 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800768 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700769 }
770 }
771 uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
772 countingStream->rewind();
773 uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
774 stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
775 stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800776 uint64_t cgen_var_51;
777 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800778 stream->write((uint64_t*)&cgen_var_51, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800779 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800780 uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
781 stream->putBe64(cgen_var_52);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800782 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700783 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800784 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700785 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800786 resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700787}
788
789VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
790 const char* pLayerName,
791 uint32_t* pPropertyCount,
792 VkExtensionProperties* pProperties)
793{
794 auto stream = mImpl->stream();
795 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800796 auto resources = mImpl->resources();
797 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800798 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800799 char* local_pLayerName;
800 local_pLayerName = nullptr;
801 if (pLayerName)
802 {
803 local_pLayerName = pool->strDup(pLayerName);
804 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700805 countingStream->rewind();
806 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800807 countingStream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800808 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800809 uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
810 countingStream->putBe64(cgen_var_53);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700811 if (pPropertyCount)
812 {
813 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
814 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800815 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800816 uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
817 countingStream->putBe64(cgen_var_54);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700818 if (pProperties)
819 {
820 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
821 {
822 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
823 }
824 }
825 }
826 uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
827 countingStream->rewind();
828 uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
829 stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
830 stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800831 stream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800832 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800833 uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
834 stream->putBe64(cgen_var_55);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700835 if (pPropertyCount)
836 {
837 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
838 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800839 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800840 uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
841 stream->putBe64(cgen_var_56);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700842 if (pProperties)
843 {
844 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
845 {
846 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
847 }
848 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800849 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700850 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800851 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700852 if (pPropertyCount)
853 {
854 if (!(check_pPropertyCount))
855 {
856 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
857 }
858 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
859 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800860 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700861 VkExtensionProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800862 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700863 if (pProperties)
864 {
865 if (!(check_pProperties))
866 {
867 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
868 }
869 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
870 {
871 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
872 }
873 }
874 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
875 stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800876 countingStream->clearPool();
877 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800878 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700879 return vkEnumerateInstanceExtensionProperties_VkResult_return;
880}
881
882VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
883 VkPhysicalDevice physicalDevice,
884 const char* pLayerName,
885 uint32_t* pPropertyCount,
886 VkExtensionProperties* pProperties)
887{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700888 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -0800889 vkEnumerateDeviceExtensionProperties_VkResult_return = goldfish_vkEnumerateDeviceExtensionProperties(this, vkEnumerateDeviceExtensionProperties_VkResult_return, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700890 return vkEnumerateDeviceExtensionProperties_VkResult_return;
891}
892
893VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
894 uint32_t* pPropertyCount,
895 VkLayerProperties* pProperties)
896{
897 auto stream = mImpl->stream();
898 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800899 auto resources = mImpl->resources();
900 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800901 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700902 countingStream->rewind();
903 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800904 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800905 uint64_t cgen_var_59 = (uint64_t)(uintptr_t)pPropertyCount;
906 countingStream->putBe64(cgen_var_59);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700907 if (pPropertyCount)
908 {
909 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
910 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800911 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800912 uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pProperties;
913 countingStream->putBe64(cgen_var_60);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700914 if (pProperties)
915 {
916 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
917 {
918 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
919 }
920 }
921 }
922 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
923 countingStream->rewind();
924 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
925 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
926 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800927 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800928 uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pPropertyCount;
929 stream->putBe64(cgen_var_61);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700930 if (pPropertyCount)
931 {
932 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
933 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800934 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800935 uint64_t cgen_var_62 = (uint64_t)(uintptr_t)pProperties;
936 stream->putBe64(cgen_var_62);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700937 if (pProperties)
938 {
939 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
940 {
941 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
942 }
943 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800944 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700945 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800946 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700947 if (pPropertyCount)
948 {
949 if (!(check_pPropertyCount))
950 {
951 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
952 }
953 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
954 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800955 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700956 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800957 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700958 if (pProperties)
959 {
960 if (!(check_pProperties))
961 {
962 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
963 }
964 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
965 {
966 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
967 }
968 }
969 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
970 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800971 countingStream->clearPool();
972 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800973 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700974 return vkEnumerateInstanceLayerProperties_VkResult_return;
975}
976
977VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
978 VkPhysicalDevice physicalDevice,
979 uint32_t* pPropertyCount,
980 VkLayerProperties* pProperties)
981{
982 auto stream = mImpl->stream();
983 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800984 auto resources = mImpl->resources();
985 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800986 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800987 VkPhysicalDevice local_physicalDevice;
988 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700989 countingStream->rewind();
990 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800991 uint64_t cgen_var_65;
992 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_65, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800993 countingStream->write((uint64_t*)&cgen_var_65, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800994 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800995 uint64_t cgen_var_66 = (uint64_t)(uintptr_t)pPropertyCount;
996 countingStream->putBe64(cgen_var_66);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700997 if (pPropertyCount)
998 {
999 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1000 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001001 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001002 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pProperties;
1003 countingStream->putBe64(cgen_var_67);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001004 if (pProperties)
1005 {
1006 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1007 {
1008 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1009 }
1010 }
1011 }
1012 uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1013 countingStream->rewind();
1014 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1015 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1016 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001017 uint64_t cgen_var_68;
1018 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_68, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001019 stream->write((uint64_t*)&cgen_var_68, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001020 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001021 uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1022 stream->putBe64(cgen_var_69);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001023 if (pPropertyCount)
1024 {
1025 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1026 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001027 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001028 uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1029 stream->putBe64(cgen_var_70);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001030 if (pProperties)
1031 {
1032 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1033 {
1034 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1035 }
1036 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001037 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001038 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001039 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001040 if (pPropertyCount)
1041 {
1042 if (!(check_pPropertyCount))
1043 {
1044 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1045 }
1046 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1047 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001048 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001049 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001050 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001051 if (pProperties)
1052 {
1053 if (!(check_pProperties))
1054 {
1055 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1056 }
1057 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1058 {
1059 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1060 }
1061 }
1062 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1063 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001064 countingStream->clearPool();
1065 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001066 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001067 return vkEnumerateDeviceLayerProperties_VkResult_return;
1068}
1069
1070void VkEncoder::vkGetDeviceQueue(
1071 VkDevice device,
1072 uint32_t queueFamilyIndex,
1073 uint32_t queueIndex,
1074 VkQueue* pQueue)
1075{
1076 auto stream = mImpl->stream();
1077 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001078 auto resources = mImpl->resources();
1079 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001080 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001081 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001082 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001083 uint32_t local_queueIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001084 local_device = device;
1085 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001086 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001087 countingStream->rewind();
1088 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001089 uint64_t cgen_var_73;
1090 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_73, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001091 countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001092 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1093 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001094 uint64_t cgen_var_74;
1095 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_74, 1);
1096 countingStream->write((uint64_t*)&cgen_var_74, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001097 }
1098 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1099 countingStream->rewind();
1100 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1101 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1102 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001103 uint64_t cgen_var_75;
1104 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_75, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001105 stream->write((uint64_t*)&cgen_var_75, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001106 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1107 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001108 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001109 uint64_t cgen_var_76;
1110 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_76, 1);
1111 stream->write((uint64_t*)&cgen_var_76, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001112 stream->setHandleMapping(resources->unwrapMapping());
1113 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001114 uint64_t cgen_var_77;
1115 stream->read((uint64_t*)&cgen_var_77, 8);
1116 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_77, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001117 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001118}
1119
1120VkResult VkEncoder::vkQueueSubmit(
1121 VkQueue queue,
1122 uint32_t submitCount,
1123 const VkSubmitInfo* pSubmits,
1124 VkFence fence)
1125{
1126 auto stream = mImpl->stream();
1127 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001128 auto resources = mImpl->resources();
1129 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001130 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001131 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001132 uint32_t local_submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001133 VkSubmitInfo* local_pSubmits;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001134 VkFence local_fence;
1135 local_queue = queue;
1136 local_submitCount = submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001137 local_pSubmits = nullptr;
1138 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001139 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001140 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001141 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1142 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001143 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001144 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001145 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001146 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001147 countingStream->rewind();
1148 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001149 uint64_t cgen_var_78;
1150 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_78, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001151 countingStream->write((uint64_t*)&cgen_var_78, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001152 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1153 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1154 {
1155 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1156 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001157 uint64_t cgen_var_79;
1158 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_79, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001159 countingStream->write((uint64_t*)&cgen_var_79, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001160 }
1161 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1162 countingStream->rewind();
1163 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1164 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1165 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001166 uint64_t cgen_var_80;
1167 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_80, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001168 stream->write((uint64_t*)&cgen_var_80, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001169 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001170 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1171 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001172 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001173 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001174 uint64_t cgen_var_81;
1175 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_81, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001176 stream->write((uint64_t*)&cgen_var_81, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001177 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1178 stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001179 countingStream->clearPool();
1180 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001181 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001182 return vkQueueSubmit_VkResult_return;
1183}
1184
1185VkResult VkEncoder::vkQueueWaitIdle(
1186 VkQueue queue)
1187{
1188 auto stream = mImpl->stream();
1189 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001190 auto resources = mImpl->resources();
1191 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001192 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001193 VkQueue local_queue;
1194 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001195 countingStream->rewind();
1196 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001197 uint64_t cgen_var_82;
1198 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_82, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001199 countingStream->write((uint64_t*)&cgen_var_82, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001200 }
1201 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1202 countingStream->rewind();
1203 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1204 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1205 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001206 uint64_t cgen_var_83;
1207 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_83, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001208 stream->write((uint64_t*)&cgen_var_83, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001209 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1210 stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001211 countingStream->clearPool();
1212 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001213 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001214 return vkQueueWaitIdle_VkResult_return;
1215}
1216
1217VkResult VkEncoder::vkDeviceWaitIdle(
1218 VkDevice device)
1219{
1220 auto stream = mImpl->stream();
1221 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001222 auto resources = mImpl->resources();
1223 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001224 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001225 VkDevice local_device;
1226 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001227 countingStream->rewind();
1228 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001229 uint64_t cgen_var_84;
1230 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_84, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001231 countingStream->write((uint64_t*)&cgen_var_84, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001232 }
1233 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1234 countingStream->rewind();
1235 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1236 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1237 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001238 uint64_t cgen_var_85;
1239 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_85, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001240 stream->write((uint64_t*)&cgen_var_85, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001241 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1242 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001243 countingStream->clearPool();
1244 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001245 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001246 return vkDeviceWaitIdle_VkResult_return;
1247}
1248
1249VkResult VkEncoder::vkAllocateMemory(
1250 VkDevice device,
1251 const VkMemoryAllocateInfo* pAllocateInfo,
1252 const VkAllocationCallbacks* pAllocator,
1253 VkDeviceMemory* pMemory)
1254{
1255 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 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001261 VkMemoryAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001262 VkAllocationCallbacks* local_pAllocator;
1263 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001264 local_pAllocateInfo = nullptr;
1265 if (pAllocateInfo)
1266 {
1267 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1268 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1269 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001270 local_pAllocator = nullptr;
1271 if (pAllocator)
1272 {
1273 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1274 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1275 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001276 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001277 countingStream->rewind();
1278 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001279 uint64_t cgen_var_86;
1280 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_86, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001281 countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001282 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001283 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001284 uint64_t cgen_var_87 = (uint64_t)(uintptr_t)local_pAllocator;
1285 countingStream->putBe64(cgen_var_87);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001286 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001287 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001288 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001289 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08001290 uint64_t cgen_var_88;
1291 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_88, 1);
1292 countingStream->write((uint64_t*)&cgen_var_88, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001293 }
1294 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1295 countingStream->rewind();
1296 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1297 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1298 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001299 uint64_t cgen_var_89;
1300 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_89, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001301 stream->write((uint64_t*)&cgen_var_89, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001302 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001303 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001304 uint64_t cgen_var_90 = (uint64_t)(uintptr_t)local_pAllocator;
1305 stream->putBe64(cgen_var_90);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001306 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001307 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001308 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001309 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001310 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08001311 uint64_t cgen_var_91;
1312 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_91, 1);
1313 stream->write((uint64_t*)&cgen_var_91, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001314 stream->setHandleMapping(resources->unwrapMapping());
1315 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08001316 uint64_t cgen_var_92;
1317 stream->read((uint64_t*)&cgen_var_92, 8);
1318 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_92, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001319 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001320 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1321 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001322 countingStream->clearPool();
1323 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001324 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08001325 goldfish_vkAllocateMemory(this, vkAllocateMemory_VkResult_return, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001326 return vkAllocateMemory_VkResult_return;
1327}
1328
1329void VkEncoder::vkFreeMemory(
1330 VkDevice device,
1331 VkDeviceMemory memory,
1332 const VkAllocationCallbacks* pAllocator)
1333{
1334 auto stream = mImpl->stream();
1335 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001336 auto resources = mImpl->resources();
1337 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001338 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001339 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001340 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001341 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001342 local_device = device;
1343 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001344 local_pAllocator = nullptr;
1345 if (pAllocator)
1346 {
1347 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1348 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1349 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001350 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001351 countingStream->rewind();
1352 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001353 uint64_t cgen_var_93;
1354 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001355 countingStream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001356 uint64_t cgen_var_94;
1357 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_94, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001358 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001359 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001360 uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1361 countingStream->putBe64(cgen_var_95);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001362 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001363 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001364 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001365 }
1366 }
1367 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1368 countingStream->rewind();
1369 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1370 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1371 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001372 uint64_t cgen_var_96;
1373 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_96, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001374 stream->write((uint64_t*)&cgen_var_96, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001375 uint64_t cgen_var_97;
1376 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_97, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001377 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001378 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001379 uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1380 stream->putBe64(cgen_var_98);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001381 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001382 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001383 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001384 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001385 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001386}
1387
1388VkResult VkEncoder::vkMapMemory(
1389 VkDevice device,
1390 VkDeviceMemory memory,
1391 VkDeviceSize offset,
1392 VkDeviceSize size,
1393 VkMemoryMapFlags flags,
1394 void** ppData)
1395{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001396 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08001397 vkMapMemory_VkResult_return = goldfish_vkMapMemory(this, vkMapMemory_VkResult_return, device, memory, offset, size, flags, ppData);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001398 return vkMapMemory_VkResult_return;
1399}
1400
1401void VkEncoder::vkUnmapMemory(
1402 VkDevice device,
1403 VkDeviceMemory memory)
1404{
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08001405 goldfish_vkUnmapMemory(this, device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001406}
1407
1408VkResult VkEncoder::vkFlushMappedMemoryRanges(
1409 VkDevice device,
1410 uint32_t memoryRangeCount,
1411 const VkMappedMemoryRange* pMemoryRanges)
1412{
Lingfeng Yang60b411d2018-11-29 00:26:45 -08001413 VALIDATE_RET(VkResult, VK_SUCCESS, validate_vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001414 auto stream = mImpl->stream();
1415 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001416 auto resources = mImpl->resources();
1417 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001418 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001419 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001420 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001421 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001422 local_device = device;
1423 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001424 local_pMemoryRanges = nullptr;
1425 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001426 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001427 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001428 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1429 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001430 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1431 }
1432 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001433 countingStream->rewind();
1434 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001435 uint64_t cgen_var_99;
1436 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_99, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001437 countingStream->write((uint64_t*)&cgen_var_99, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001438 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1439 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1440 {
1441 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001442 }
1443 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001444 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1445 {
1446 auto range = pMemoryRanges[i];
1447 auto memory = pMemoryRanges[i].memory;
1448 auto size = pMemoryRanges[i].size;
1449 auto offset = pMemoryRanges[i].offset;
1450 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001451 uint64_t streamSize = 0;
1452 if (!goldfishMem) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yange30d3382018-11-09 08:24:37 -08001453 auto hostPtr = goldfishMem->ptr;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001454 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001455 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001456 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001457 countingStream->write(&streamSize, sizeof(uint64_t));
Lingfeng Yange30d3382018-11-09 08:24:37 -08001458 uint8_t* targetRange = hostPtr + offset;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001459 countingStream->write(targetRange, actualSize);
Lingfeng Yange30d3382018-11-09 08:24:37 -08001460 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001461 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1462 countingStream->rewind();
1463 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1464 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1465 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001466 uint64_t cgen_var_100;
1467 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_100, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001468 stream->write((uint64_t*)&cgen_var_100, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001469 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001470 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1471 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001472 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001473 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001474 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1475 {
1476 auto range = pMemoryRanges[i];
1477 auto memory = pMemoryRanges[i].memory;
1478 auto size = pMemoryRanges[i].size;
1479 auto offset = pMemoryRanges[i].offset;
1480 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001481 uint64_t streamSize = 0;
1482 if (!goldfishMem) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yange30d3382018-11-09 08:24:37 -08001483 auto hostPtr = goldfishMem->ptr;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001484 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001485 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001486 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001487 stream->write(&streamSize, sizeof(uint64_t));
Lingfeng Yange30d3382018-11-09 08:24:37 -08001488 uint8_t* targetRange = hostPtr + offset;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001489 stream->write(targetRange, actualSize);
Lingfeng Yange30d3382018-11-09 08:24:37 -08001490 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001491 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1492 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001493 countingStream->clearPool();
1494 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001495 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001496 return vkFlushMappedMemoryRanges_VkResult_return;
1497}
1498
1499VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1500 VkDevice device,
1501 uint32_t memoryRangeCount,
1502 const VkMappedMemoryRange* pMemoryRanges)
1503{
Lingfeng Yang60b411d2018-11-29 00:26:45 -08001504 VALIDATE_RET(VkResult, VK_SUCCESS, validate_vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001505 auto stream = mImpl->stream();
1506 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001507 auto resources = mImpl->resources();
1508 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001509 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001510 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001511 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001512 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001513 local_device = device;
1514 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001515 local_pMemoryRanges = nullptr;
1516 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001517 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001518 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001519 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1520 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001521 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1522 }
1523 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001524 countingStream->rewind();
1525 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001526 uint64_t cgen_var_101;
1527 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001528 countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001529 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1530 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1531 {
1532 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001533 }
1534 }
1535 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1536 countingStream->rewind();
1537 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1538 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1539 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001540 uint64_t cgen_var_102;
1541 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_102, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001542 stream->write((uint64_t*)&cgen_var_102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001543 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001544 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1545 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001546 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001547 }
1548 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1549 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001550 countingStream->clearPool();
1551 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001552 pool->freeAll();
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001553 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1554 {
1555 auto range = pMemoryRanges[i];
1556 auto memory = pMemoryRanges[i].memory;
1557 auto size = pMemoryRanges[i].size;
1558 auto offset = pMemoryRanges[i].offset;
1559 auto goldfishMem = as_goldfish_VkDeviceMemory(memory);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001560 uint64_t streamSize = 0;
1561 if (!goldfishMem) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001562 auto hostPtr = goldfishMem->ptr;
1563 auto actualSize = size == VK_WHOLE_SIZE ? goldfishMem->size : size;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001564 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001565 streamSize = actualSize;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08001566 stream->read(&streamSize, sizeof(uint64_t));
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001567 uint8_t* targetRange = hostPtr + offset;
1568 stream->read(targetRange, actualSize);
1569 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001570 return vkInvalidateMappedMemoryRanges_VkResult_return;
1571}
1572
1573void VkEncoder::vkGetDeviceMemoryCommitment(
1574 VkDevice device,
1575 VkDeviceMemory memory,
1576 VkDeviceSize* pCommittedMemoryInBytes)
1577{
1578 auto stream = mImpl->stream();
1579 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001580 auto resources = mImpl->resources();
1581 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001582 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001583 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001584 VkDeviceMemory local_memory;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001585 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001586 local_memory = memory;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001587 countingStream->rewind();
1588 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001589 uint64_t cgen_var_103;
1590 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_103, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001591 countingStream->write((uint64_t*)&cgen_var_103, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001592 uint64_t cgen_var_104;
1593 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_104, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001594 countingStream->write((uint64_t*)&cgen_var_104, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001595 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1596 }
1597 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1598 countingStream->rewind();
1599 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1600 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1601 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001602 uint64_t cgen_var_105;
1603 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_105, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001604 stream->write((uint64_t*)&cgen_var_105, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001605 uint64_t cgen_var_106;
1606 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_106, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001607 stream->write((uint64_t*)&cgen_var_106, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001608 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1609 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1610}
1611
1612VkResult VkEncoder::vkBindBufferMemory(
1613 VkDevice device,
1614 VkBuffer buffer,
1615 VkDeviceMemory memory,
1616 VkDeviceSize memoryOffset)
1617{
1618 auto stream = mImpl->stream();
1619 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001620 auto resources = mImpl->resources();
1621 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001622 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001623 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001624 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001625 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001626 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001627 local_device = device;
1628 local_buffer = buffer;
1629 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001630 local_memoryOffset = memoryOffset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001631 countingStream->rewind();
1632 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001633 uint64_t cgen_var_107;
1634 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001635 countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001636 uint64_t cgen_var_108;
1637 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_108, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001638 countingStream->write((uint64_t*)&cgen_var_108, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001639 uint64_t cgen_var_109;
1640 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_109, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001641 countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001642 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001643 }
1644 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1645 countingStream->rewind();
1646 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
1647 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
1648 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001649 uint64_t cgen_var_110;
1650 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001651 stream->write((uint64_t*)&cgen_var_110, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001652 uint64_t cgen_var_111;
1653 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_111, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001654 stream->write((uint64_t*)&cgen_var_111, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001655 uint64_t cgen_var_112;
1656 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001657 stream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001658 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001659 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
1660 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001661 countingStream->clearPool();
1662 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001663 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001664 return vkBindBufferMemory_VkResult_return;
1665}
1666
1667VkResult VkEncoder::vkBindImageMemory(
1668 VkDevice device,
1669 VkImage image,
1670 VkDeviceMemory memory,
1671 VkDeviceSize memoryOffset)
1672{
1673 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 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001680 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001681 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001682 local_device = device;
1683 local_image = image;
1684 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001685 local_memoryOffset = memoryOffset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001686 countingStream->rewind();
1687 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001688 uint64_t cgen_var_113;
1689 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001690 countingStream->write((uint64_t*)&cgen_var_113, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001691 uint64_t cgen_var_114;
1692 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_114, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001693 countingStream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001694 uint64_t cgen_var_115;
1695 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_115, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001696 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001697 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001698 }
1699 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1700 countingStream->rewind();
1701 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
1702 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
1703 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001704 uint64_t cgen_var_116;
1705 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_116, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001706 stream->write((uint64_t*)&cgen_var_116, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001707 uint64_t cgen_var_117;
1708 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_117, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001709 stream->write((uint64_t*)&cgen_var_117, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001710 uint64_t cgen_var_118;
1711 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001712 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001713 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001714 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
1715 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001716 countingStream->clearPool();
1717 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001718 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001719 return vkBindImageMemory_VkResult_return;
1720}
1721
1722void VkEncoder::vkGetBufferMemoryRequirements(
1723 VkDevice device,
1724 VkBuffer buffer,
1725 VkMemoryRequirements* pMemoryRequirements)
1726{
1727 auto stream = mImpl->stream();
1728 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001729 auto resources = mImpl->resources();
1730 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001731 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001732 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001733 VkBuffer local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001734 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001735 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001736 countingStream->rewind();
1737 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001738 uint64_t cgen_var_119;
1739 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_119, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001740 countingStream->write((uint64_t*)&cgen_var_119, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001741 uint64_t cgen_var_120;
1742 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_120, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001743 countingStream->write((uint64_t*)&cgen_var_120, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001744 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1745 }
1746 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1747 countingStream->rewind();
1748 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
1749 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
1750 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001751 uint64_t cgen_var_121;
1752 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001753 stream->write((uint64_t*)&cgen_var_121, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001754 uint64_t cgen_var_122;
1755 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_122, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001756 stream->write((uint64_t*)&cgen_var_122, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001757 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1758 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1759}
1760
1761void VkEncoder::vkGetImageMemoryRequirements(
1762 VkDevice device,
1763 VkImage image,
1764 VkMemoryRequirements* pMemoryRequirements)
1765{
1766 auto stream = mImpl->stream();
1767 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001768 auto resources = mImpl->resources();
1769 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001770 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001771 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001772 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001773 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001774 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001775 countingStream->rewind();
1776 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001777 uint64_t cgen_var_123;
1778 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_123, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001779 countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001780 uint64_t cgen_var_124;
1781 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_124, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001782 countingStream->write((uint64_t*)&cgen_var_124, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001783 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
1784 }
1785 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1786 countingStream->rewind();
1787 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
1788 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
1789 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001790 uint64_t cgen_var_125;
1791 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_125, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001792 stream->write((uint64_t*)&cgen_var_125, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001793 uint64_t cgen_var_126;
1794 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_126, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001795 stream->write((uint64_t*)&cgen_var_126, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001796 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1797 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
1798}
1799
1800void VkEncoder::vkGetImageSparseMemoryRequirements(
1801 VkDevice device,
1802 VkImage image,
1803 uint32_t* pSparseMemoryRequirementCount,
1804 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
1805{
1806 auto stream = mImpl->stream();
1807 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001808 auto resources = mImpl->resources();
1809 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001810 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001811 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001812 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001813 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001814 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001815 countingStream->rewind();
1816 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001817 uint64_t cgen_var_127;
1818 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001819 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001820 uint64_t cgen_var_128;
1821 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_128, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001822 countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001823 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001824 uint64_t cgen_var_129 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1825 countingStream->putBe64(cgen_var_129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001826 if (pSparseMemoryRequirementCount)
1827 {
1828 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1829 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001830 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001831 uint64_t cgen_var_130 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1832 countingStream->putBe64(cgen_var_130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001833 if (pSparseMemoryRequirements)
1834 {
1835 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1836 {
1837 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1838 }
1839 }
1840 }
1841 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1842 countingStream->rewind();
1843 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
1844 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
1845 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001846 uint64_t cgen_var_131;
1847 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001848 stream->write((uint64_t*)&cgen_var_131, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08001849 uint64_t cgen_var_132;
1850 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001851 stream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001852 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001853 uint64_t cgen_var_133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
1854 stream->putBe64(cgen_var_133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001855 if (pSparseMemoryRequirementCount)
1856 {
1857 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1858 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001859 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001860 uint64_t cgen_var_134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
1861 stream->putBe64(cgen_var_134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001862 if (pSparseMemoryRequirements)
1863 {
1864 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1865 {
1866 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1867 }
1868 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001869 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001870 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001871 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001872 if (pSparseMemoryRequirementCount)
1873 {
1874 if (!(check_pSparseMemoryRequirementCount))
1875 {
1876 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
1877 }
1878 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
1879 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001880 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001881 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001882 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001883 if (pSparseMemoryRequirements)
1884 {
1885 if (!(check_pSparseMemoryRequirements))
1886 {
1887 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
1888 }
1889 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
1890 {
1891 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
1892 }
1893 }
1894}
1895
1896void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
1897 VkPhysicalDevice physicalDevice,
1898 VkFormat format,
1899 VkImageType type,
1900 VkSampleCountFlagBits samples,
1901 VkImageUsageFlags usage,
1902 VkImageTiling tiling,
1903 uint32_t* pPropertyCount,
1904 VkSparseImageFormatProperties* pProperties)
1905{
1906 auto stream = mImpl->stream();
1907 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001908 auto resources = mImpl->resources();
1909 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001910 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001911 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001912 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001913 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001914 VkSampleCountFlagBits local_samples;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001915 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001916 VkImageTiling local_tiling;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001917 local_physicalDevice = physicalDevice;
1918 local_format = format;
1919 local_type = type;
1920 local_samples = samples;
1921 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001922 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001923 countingStream->rewind();
1924 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08001925 uint64_t cgen_var_137;
1926 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_137, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001927 countingStream->write((uint64_t*)&cgen_var_137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001928 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
1929 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
1930 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
1931 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
1932 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001933 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001934 uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pPropertyCount;
1935 countingStream->putBe64(cgen_var_138);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001936 if (pPropertyCount)
1937 {
1938 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1939 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001940 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001941 uint64_t cgen_var_139 = (uint64_t)(uintptr_t)pProperties;
1942 countingStream->putBe64(cgen_var_139);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001943 if (pProperties)
1944 {
1945 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1946 {
1947 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
1948 }
1949 }
1950 }
1951 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1952 countingStream->rewind();
1953 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
1954 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
1955 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001956 uint64_t cgen_var_140;
1957 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_140, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001958 stream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001959 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
1960 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
1961 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
1962 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
1963 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001964 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001965 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pPropertyCount;
1966 stream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001967 if (pPropertyCount)
1968 {
1969 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1970 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001971 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08001972 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pProperties;
1973 stream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001974 if (pProperties)
1975 {
1976 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1977 {
1978 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
1979 }
1980 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001981 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001982 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001983 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001984 if (pPropertyCount)
1985 {
1986 if (!(check_pPropertyCount))
1987 {
1988 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1989 }
1990 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1991 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001992 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001993 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001994 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001995 if (pProperties)
1996 {
1997 if (!(check_pProperties))
1998 {
1999 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
2000 }
2001 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2002 {
2003 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2004 }
2005 }
2006}
2007
2008VkResult VkEncoder::vkQueueBindSparse(
2009 VkQueue queue,
2010 uint32_t bindInfoCount,
2011 const VkBindSparseInfo* pBindInfo,
2012 VkFence fence)
2013{
2014 auto stream = mImpl->stream();
2015 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002016 auto resources = mImpl->resources();
2017 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002018 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002019 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002020 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002021 VkBindSparseInfo* local_pBindInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002022 VkFence local_fence;
2023 local_queue = queue;
2024 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002025 local_pBindInfo = nullptr;
2026 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002027 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002028 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002029 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2030 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002031 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002032 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002033 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002034 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002035 countingStream->rewind();
2036 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002037 uint64_t cgen_var_145;
2038 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_145, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002039 countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002040 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2041 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2042 {
2043 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2044 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002045 uint64_t cgen_var_146;
2046 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_146, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002047 countingStream->write((uint64_t*)&cgen_var_146, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002048 }
2049 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2050 countingStream->rewind();
2051 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2052 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2053 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002054 uint64_t cgen_var_147;
2055 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_147, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002056 stream->write((uint64_t*)&cgen_var_147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002057 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002058 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2059 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002060 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002061 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002062 uint64_t cgen_var_148;
2063 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_148, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002064 stream->write((uint64_t*)&cgen_var_148, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002065 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2066 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002067 countingStream->clearPool();
2068 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002069 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002070 return vkQueueBindSparse_VkResult_return;
2071}
2072
2073VkResult VkEncoder::vkCreateFence(
2074 VkDevice device,
2075 const VkFenceCreateInfo* pCreateInfo,
2076 const VkAllocationCallbacks* pAllocator,
2077 VkFence* pFence)
2078{
2079 auto stream = mImpl->stream();
2080 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002081 auto resources = mImpl->resources();
2082 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002083 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002084 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002085 VkFenceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002086 VkAllocationCallbacks* local_pAllocator;
2087 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002088 local_pCreateInfo = nullptr;
2089 if (pCreateInfo)
2090 {
2091 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2092 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2093 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002094 local_pAllocator = nullptr;
2095 if (pAllocator)
2096 {
2097 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2098 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2099 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002100 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002101 countingStream->rewind();
2102 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002103 uint64_t cgen_var_149;
2104 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_149, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002105 countingStream->write((uint64_t*)&cgen_var_149, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002106 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002107 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002108 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)local_pAllocator;
2109 countingStream->putBe64(cgen_var_150);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002110 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002111 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002112 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002113 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002114 uint64_t cgen_var_151;
2115 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_151, 1);
2116 countingStream->write((uint64_t*)&cgen_var_151, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002117 }
2118 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2119 countingStream->rewind();
2120 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2121 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2122 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002123 uint64_t cgen_var_152;
2124 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_152, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002125 stream->write((uint64_t*)&cgen_var_152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002126 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002127 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002128 uint64_t cgen_var_153 = (uint64_t)(uintptr_t)local_pAllocator;
2129 stream->putBe64(cgen_var_153);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002130 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002131 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002132 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002133 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002134 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002135 uint64_t cgen_var_154;
2136 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_154, 1);
2137 stream->write((uint64_t*)&cgen_var_154, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002138 stream->setHandleMapping(resources->unwrapMapping());
2139 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002140 uint64_t cgen_var_155;
2141 stream->read((uint64_t*)&cgen_var_155, 8);
2142 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_155, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002143 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002144 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2145 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002146 countingStream->clearPool();
2147 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002148 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002149 return vkCreateFence_VkResult_return;
2150}
2151
2152void VkEncoder::vkDestroyFence(
2153 VkDevice device,
2154 VkFence fence,
2155 const VkAllocationCallbacks* pAllocator)
2156{
2157 auto stream = mImpl->stream();
2158 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002159 auto resources = mImpl->resources();
2160 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002161 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002162 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002163 VkFence local_fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002164 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002165 local_device = device;
2166 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002167 local_pAllocator = nullptr;
2168 if (pAllocator)
2169 {
2170 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2171 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2172 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002173 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002174 countingStream->rewind();
2175 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002176 uint64_t cgen_var_156;
2177 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_156, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002178 countingStream->write((uint64_t*)&cgen_var_156, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002179 uint64_t cgen_var_157;
2180 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_157, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002181 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002182 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002183 uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2184 countingStream->putBe64(cgen_var_158);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002185 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002186 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002187 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002188 }
2189 }
2190 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2191 countingStream->rewind();
2192 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2193 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2194 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002195 uint64_t cgen_var_159;
2196 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_159, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002197 stream->write((uint64_t*)&cgen_var_159, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002198 uint64_t cgen_var_160;
2199 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002200 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002201 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002202 uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2203 stream->putBe64(cgen_var_161);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002204 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002205 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002206 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002207 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002208 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002209}
2210
2211VkResult VkEncoder::vkResetFences(
2212 VkDevice device,
2213 uint32_t fenceCount,
2214 const VkFence* pFences)
2215{
2216 auto stream = mImpl->stream();
2217 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002218 auto resources = mImpl->resources();
2219 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002220 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002221 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002222 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002223 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002224 local_device = device;
2225 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002226 local_pFences = nullptr;
2227 if (pFences)
2228 {
2229 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2230 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002231 countingStream->rewind();
2232 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002233 uint64_t cgen_var_162;
2234 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_162, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002235 countingStream->write((uint64_t*)&cgen_var_162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002236 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002237 if (((fenceCount)))
2238 {
2239 uint64_t* cgen_var_163;
2240 countingStream->alloc((void**)&cgen_var_163, ((fenceCount)) * 8);
2241 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_163, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002242 countingStream->write((uint64_t*)cgen_var_163, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002243 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002244 }
2245 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2246 countingStream->rewind();
2247 uint32_t opcode_vkResetFences = OP_vkResetFences;
2248 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2249 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002250 uint64_t cgen_var_164;
2251 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002252 stream->write((uint64_t*)&cgen_var_164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002253 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002254 if (((fenceCount)))
2255 {
2256 uint64_t* cgen_var_165;
2257 stream->alloc((void**)&cgen_var_165, ((fenceCount)) * 8);
2258 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_165, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002259 stream->write((uint64_t*)cgen_var_165, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002260 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002261 VkResult vkResetFences_VkResult_return = (VkResult)0;
2262 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002263 countingStream->clearPool();
2264 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002265 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002266 return vkResetFences_VkResult_return;
2267}
2268
2269VkResult VkEncoder::vkGetFenceStatus(
2270 VkDevice device,
2271 VkFence fence)
2272{
2273 auto stream = mImpl->stream();
2274 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002275 auto resources = mImpl->resources();
2276 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002277 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002278 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002279 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002280 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002281 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002282 countingStream->rewind();
2283 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002284 uint64_t cgen_var_166;
2285 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_166, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002286 countingStream->write((uint64_t*)&cgen_var_166, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002287 uint64_t cgen_var_167;
2288 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_167, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002289 countingStream->write((uint64_t*)&cgen_var_167, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002290 }
2291 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2292 countingStream->rewind();
2293 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2294 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2295 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002296 uint64_t cgen_var_168;
2297 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_168, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002298 stream->write((uint64_t*)&cgen_var_168, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002299 uint64_t cgen_var_169;
2300 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_169, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002301 stream->write((uint64_t*)&cgen_var_169, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002302 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2303 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002304 countingStream->clearPool();
2305 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002306 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002307 return vkGetFenceStatus_VkResult_return;
2308}
2309
2310VkResult VkEncoder::vkWaitForFences(
2311 VkDevice device,
2312 uint32_t fenceCount,
2313 const VkFence* pFences,
2314 VkBool32 waitAll,
2315 uint64_t timeout)
2316{
2317 auto stream = mImpl->stream();
2318 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002319 auto resources = mImpl->resources();
2320 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002321 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002322 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002323 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002324 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002325 VkBool32 local_waitAll;
2326 uint64_t local_timeout;
2327 local_device = device;
2328 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002329 local_pFences = nullptr;
2330 if (pFences)
2331 {
2332 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2333 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002334 local_waitAll = waitAll;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002335 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002336 countingStream->rewind();
2337 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002338 uint64_t cgen_var_170;
2339 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002340 countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002341 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002342 if (((fenceCount)))
2343 {
2344 uint64_t* cgen_var_171;
2345 countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2346 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002347 countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002348 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002349 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2350 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002351 }
2352 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2353 countingStream->rewind();
2354 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2355 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2356 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002357 uint64_t cgen_var_172;
2358 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002359 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002360 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002361 if (((fenceCount)))
2362 {
2363 uint64_t* cgen_var_173;
2364 stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2365 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -08002366 stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002367 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002368 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2369 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002370 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2371 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002372 countingStream->clearPool();
2373 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002374 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002375 return vkWaitForFences_VkResult_return;
2376}
2377
2378VkResult VkEncoder::vkCreateSemaphore(
2379 VkDevice device,
2380 const VkSemaphoreCreateInfo* pCreateInfo,
2381 const VkAllocationCallbacks* pAllocator,
2382 VkSemaphore* pSemaphore)
2383{
2384 auto stream = mImpl->stream();
2385 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002386 auto resources = mImpl->resources();
2387 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002388 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002389 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002390 VkSemaphoreCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002391 VkAllocationCallbacks* local_pAllocator;
2392 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002393 local_pCreateInfo = nullptr;
2394 if (pCreateInfo)
2395 {
2396 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2397 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2398 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002399 local_pAllocator = nullptr;
2400 if (pAllocator)
2401 {
2402 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2403 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2404 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002405 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002406 countingStream->rewind();
2407 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002408 uint64_t cgen_var_174;
2409 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002410 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002411 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002412 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002413 uint64_t cgen_var_175 = (uint64_t)(uintptr_t)local_pAllocator;
2414 countingStream->putBe64(cgen_var_175);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002415 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002416 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002417 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002418 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002419 uint64_t cgen_var_176;
2420 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_176, 1);
2421 countingStream->write((uint64_t*)&cgen_var_176, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002422 }
2423 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2424 countingStream->rewind();
2425 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2426 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2427 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002428 uint64_t cgen_var_177;
2429 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_177, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002430 stream->write((uint64_t*)&cgen_var_177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002431 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002432 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002433 uint64_t cgen_var_178 = (uint64_t)(uintptr_t)local_pAllocator;
2434 stream->putBe64(cgen_var_178);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002435 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002436 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002437 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002438 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002439 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002440 uint64_t cgen_var_179;
2441 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_179, 1);
2442 stream->write((uint64_t*)&cgen_var_179, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002443 stream->setHandleMapping(resources->unwrapMapping());
2444 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002445 uint64_t cgen_var_180;
2446 stream->read((uint64_t*)&cgen_var_180, 8);
2447 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_180, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002448 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002449 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2450 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002451 countingStream->clearPool();
2452 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002453 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002454 return vkCreateSemaphore_VkResult_return;
2455}
2456
2457void VkEncoder::vkDestroySemaphore(
2458 VkDevice device,
2459 VkSemaphore semaphore,
2460 const VkAllocationCallbacks* pAllocator)
2461{
2462 auto stream = mImpl->stream();
2463 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002464 auto resources = mImpl->resources();
2465 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002466 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002467 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002468 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002469 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002470 local_device = device;
2471 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002472 local_pAllocator = nullptr;
2473 if (pAllocator)
2474 {
2475 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2476 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2477 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002478 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002479 countingStream->rewind();
2480 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002481 uint64_t cgen_var_181;
2482 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_181, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002483 countingStream->write((uint64_t*)&cgen_var_181, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002484 uint64_t cgen_var_182;
2485 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_182, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002486 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002487 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002488 uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2489 countingStream->putBe64(cgen_var_183);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002490 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002491 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002492 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002493 }
2494 }
2495 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2496 countingStream->rewind();
2497 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2498 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2499 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002500 uint64_t cgen_var_184;
2501 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_184, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002502 stream->write((uint64_t*)&cgen_var_184, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002503 uint64_t cgen_var_185;
2504 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_185, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002505 stream->write((uint64_t*)&cgen_var_185, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002506 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002507 uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2508 stream->putBe64(cgen_var_186);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002509 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002510 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002511 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002512 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002513 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002514}
2515
2516VkResult VkEncoder::vkCreateEvent(
2517 VkDevice device,
2518 const VkEventCreateInfo* pCreateInfo,
2519 const VkAllocationCallbacks* pAllocator,
2520 VkEvent* pEvent)
2521{
2522 auto stream = mImpl->stream();
2523 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002524 auto resources = mImpl->resources();
2525 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002526 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002527 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002528 VkEventCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002529 VkAllocationCallbacks* local_pAllocator;
2530 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002531 local_pCreateInfo = nullptr;
2532 if (pCreateInfo)
2533 {
2534 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
2535 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
2536 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002537 local_pAllocator = nullptr;
2538 if (pAllocator)
2539 {
2540 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2541 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2542 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002543 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002544 countingStream->rewind();
2545 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002546 uint64_t cgen_var_187;
2547 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_187, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002548 countingStream->write((uint64_t*)&cgen_var_187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002549 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002550 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002551 uint64_t cgen_var_188 = (uint64_t)(uintptr_t)local_pAllocator;
2552 countingStream->putBe64(cgen_var_188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002553 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002554 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002555 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002556 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002557 uint64_t cgen_var_189;
2558 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_189, 1);
2559 countingStream->write((uint64_t*)&cgen_var_189, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002560 }
2561 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2562 countingStream->rewind();
2563 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
2564 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
2565 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002566 uint64_t cgen_var_190;
2567 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_190, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002568 stream->write((uint64_t*)&cgen_var_190, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002569 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002570 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002571 uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2572 stream->putBe64(cgen_var_191);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002573 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002574 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002575 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002576 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002577 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002578 uint64_t cgen_var_192;
2579 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_192, 1);
2580 stream->write((uint64_t*)&cgen_var_192, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002581 stream->setHandleMapping(resources->unwrapMapping());
2582 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002583 uint64_t cgen_var_193;
2584 stream->read((uint64_t*)&cgen_var_193, 8);
2585 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_193, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002586 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002587 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
2588 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002589 countingStream->clearPool();
2590 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002591 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002592 return vkCreateEvent_VkResult_return;
2593}
2594
2595void VkEncoder::vkDestroyEvent(
2596 VkDevice device,
2597 VkEvent event,
2598 const VkAllocationCallbacks* pAllocator)
2599{
2600 auto stream = mImpl->stream();
2601 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002602 auto resources = mImpl->resources();
2603 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002604 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002605 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002606 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002607 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002608 local_device = device;
2609 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002610 local_pAllocator = nullptr;
2611 if (pAllocator)
2612 {
2613 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2614 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2615 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002616 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002617 countingStream->rewind();
2618 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002619 uint64_t cgen_var_194;
2620 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_194, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002621 countingStream->write((uint64_t*)&cgen_var_194, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002622 uint64_t cgen_var_195;
2623 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_195, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002624 countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002625 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002626 uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
2627 countingStream->putBe64(cgen_var_196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002628 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002629 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002630 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002631 }
2632 }
2633 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2634 countingStream->rewind();
2635 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
2636 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
2637 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002638 uint64_t cgen_var_197;
2639 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_197, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002640 stream->write((uint64_t*)&cgen_var_197, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002641 uint64_t cgen_var_198;
2642 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_198, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002643 stream->write((uint64_t*)&cgen_var_198, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002644 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002645 uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
2646 stream->putBe64(cgen_var_199);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002647 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002648 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002649 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002650 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002651 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002652}
2653
2654VkResult VkEncoder::vkGetEventStatus(
2655 VkDevice device,
2656 VkEvent event)
2657{
2658 auto stream = mImpl->stream();
2659 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002660 auto resources = mImpl->resources();
2661 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002663 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002664 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002665 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002666 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002667 countingStream->rewind();
2668 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002669 uint64_t cgen_var_200;
2670 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_200, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002671 countingStream->write((uint64_t*)&cgen_var_200, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002672 uint64_t cgen_var_201;
2673 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_201, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002674 countingStream->write((uint64_t*)&cgen_var_201, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002675 }
2676 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2677 countingStream->rewind();
2678 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
2679 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
2680 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002681 uint64_t cgen_var_202;
2682 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002683 stream->write((uint64_t*)&cgen_var_202, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002684 uint64_t cgen_var_203;
2685 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002686 stream->write((uint64_t*)&cgen_var_203, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002687 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
2688 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002689 countingStream->clearPool();
2690 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002691 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002692 return vkGetEventStatus_VkResult_return;
2693}
2694
2695VkResult VkEncoder::vkSetEvent(
2696 VkDevice device,
2697 VkEvent event)
2698{
2699 auto stream = mImpl->stream();
2700 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002701 auto resources = mImpl->resources();
2702 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002703 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002704 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002705 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002706 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002707 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002708 countingStream->rewind();
2709 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002710 uint64_t cgen_var_204;
2711 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_204, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002712 countingStream->write((uint64_t*)&cgen_var_204, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002713 uint64_t cgen_var_205;
2714 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_205, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002715 countingStream->write((uint64_t*)&cgen_var_205, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002716 }
2717 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2718 countingStream->rewind();
2719 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
2720 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
2721 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002722 uint64_t cgen_var_206;
2723 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_206, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002724 stream->write((uint64_t*)&cgen_var_206, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002725 uint64_t cgen_var_207;
2726 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_207, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002727 stream->write((uint64_t*)&cgen_var_207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002728 VkResult vkSetEvent_VkResult_return = (VkResult)0;
2729 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002730 countingStream->clearPool();
2731 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002732 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002733 return vkSetEvent_VkResult_return;
2734}
2735
2736VkResult VkEncoder::vkResetEvent(
2737 VkDevice device,
2738 VkEvent event)
2739{
2740 auto stream = mImpl->stream();
2741 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002742 auto resources = mImpl->resources();
2743 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002744 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002745 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002746 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002747 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002748 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002749 countingStream->rewind();
2750 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002751 uint64_t cgen_var_208;
2752 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002753 countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002754 uint64_t cgen_var_209;
2755 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002756 countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002757 }
2758 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2759 countingStream->rewind();
2760 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
2761 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
2762 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002763 uint64_t cgen_var_210;
2764 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002765 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002766 uint64_t cgen_var_211;
2767 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002768 stream->write((uint64_t*)&cgen_var_211, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002769 VkResult vkResetEvent_VkResult_return = (VkResult)0;
2770 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002771 countingStream->clearPool();
2772 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002773 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002774 return vkResetEvent_VkResult_return;
2775}
2776
2777VkResult VkEncoder::vkCreateQueryPool(
2778 VkDevice device,
2779 const VkQueryPoolCreateInfo* pCreateInfo,
2780 const VkAllocationCallbacks* pAllocator,
2781 VkQueryPool* pQueryPool)
2782{
2783 auto stream = mImpl->stream();
2784 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002785 auto resources = mImpl->resources();
2786 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002787 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002788 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002789 VkQueryPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002790 VkAllocationCallbacks* local_pAllocator;
2791 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002792 local_pCreateInfo = nullptr;
2793 if (pCreateInfo)
2794 {
2795 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
2796 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
2797 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002798 local_pAllocator = nullptr;
2799 if (pAllocator)
2800 {
2801 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2802 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2803 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002804 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002805 countingStream->rewind();
2806 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002807 uint64_t cgen_var_212;
2808 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002809 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002810 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002811 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002812 uint64_t cgen_var_213 = (uint64_t)(uintptr_t)local_pAllocator;
2813 countingStream->putBe64(cgen_var_213);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002814 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002815 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002816 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002817 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08002818 uint64_t cgen_var_214;
2819 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_214, 1);
2820 countingStream->write((uint64_t*)&cgen_var_214, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002821 }
2822 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2823 countingStream->rewind();
2824 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
2825 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
2826 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002827 uint64_t cgen_var_215;
2828 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_215, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002829 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002830 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002831 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002832 uint64_t cgen_var_216 = (uint64_t)(uintptr_t)local_pAllocator;
2833 stream->putBe64(cgen_var_216);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002834 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002835 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002836 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002837 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002838 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08002839 uint64_t cgen_var_217;
2840 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_217, 1);
2841 stream->write((uint64_t*)&cgen_var_217, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002842 stream->setHandleMapping(resources->unwrapMapping());
2843 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08002844 uint64_t cgen_var_218;
2845 stream->read((uint64_t*)&cgen_var_218, 8);
2846 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_218, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002847 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002848 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
2849 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002850 countingStream->clearPool();
2851 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002852 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002853 return vkCreateQueryPool_VkResult_return;
2854}
2855
2856void VkEncoder::vkDestroyQueryPool(
2857 VkDevice device,
2858 VkQueryPool queryPool,
2859 const VkAllocationCallbacks* pAllocator)
2860{
2861 auto stream = mImpl->stream();
2862 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002863 auto resources = mImpl->resources();
2864 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002865 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002866 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002867 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002868 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002869 local_device = device;
2870 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002871 local_pAllocator = nullptr;
2872 if (pAllocator)
2873 {
2874 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2875 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2876 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002877 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002878 countingStream->rewind();
2879 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002880 uint64_t cgen_var_219;
2881 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_219, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002882 countingStream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002883 uint64_t cgen_var_220;
2884 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_220, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002885 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002886 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002887 uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
2888 countingStream->putBe64(cgen_var_221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002889 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002890 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002891 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002892 }
2893 }
2894 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2895 countingStream->rewind();
2896 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
2897 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
2898 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002899 uint64_t cgen_var_222;
2900 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_222, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002901 stream->write((uint64_t*)&cgen_var_222, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002902 uint64_t cgen_var_223;
2903 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_223, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002904 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002905 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -08002906 uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
2907 stream->putBe64(cgen_var_224);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002908 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002909 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002910 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002911 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002912 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002913}
2914
2915VkResult VkEncoder::vkGetQueryPoolResults(
2916 VkDevice device,
2917 VkQueryPool queryPool,
2918 uint32_t firstQuery,
2919 uint32_t queryCount,
2920 size_t dataSize,
2921 void* pData,
2922 VkDeviceSize stride,
2923 VkQueryResultFlags flags)
2924{
2925 auto stream = mImpl->stream();
2926 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002927 auto resources = mImpl->resources();
2928 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002929 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002930 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002931 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002932 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002933 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002934 size_t local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002935 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002936 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002937 local_device = device;
2938 local_queryPool = queryPool;
2939 local_firstQuery = firstQuery;
2940 local_queryCount = queryCount;
2941 local_dataSize = dataSize;
2942 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002943 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002944 countingStream->rewind();
2945 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08002946 uint64_t cgen_var_225;
2947 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_225, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002948 countingStream->write((uint64_t*)&cgen_var_225, 1 * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002949 uint64_t cgen_var_226;
2950 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_226, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002951 countingStream->write((uint64_t*)&cgen_var_226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002952 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
2953 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002954 uint64_t cgen_var_227 = (uint64_t)local_dataSize;
2955 countingStream->putBe64(cgen_var_227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002956 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002957 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
2958 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002959 }
2960 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2961 countingStream->rewind();
2962 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
2963 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
2964 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002965 uint64_t cgen_var_228;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002966 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_228, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002967 stream->write((uint64_t*)&cgen_var_228, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002968 uint64_t cgen_var_229;
2969 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_229, 1);
2970 stream->write((uint64_t*)&cgen_var_229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002971 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
2972 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08002973 uint64_t cgen_var_230 = (uint64_t)local_dataSize;
2974 stream->putBe64(cgen_var_230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002975 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002976 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
2977 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002978 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
2979 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
2980 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002981 countingStream->clearPool();
2982 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002983 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002984 return vkGetQueryPoolResults_VkResult_return;
2985}
2986
2987VkResult VkEncoder::vkCreateBuffer(
2988 VkDevice device,
2989 const VkBufferCreateInfo* pCreateInfo,
2990 const VkAllocationCallbacks* pAllocator,
2991 VkBuffer* pBuffer)
2992{
2993 auto stream = mImpl->stream();
2994 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002995 auto resources = mImpl->resources();
2996 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002997 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002998 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002999 VkBufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003000 VkAllocationCallbacks* local_pAllocator;
3001 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003002 local_pCreateInfo = nullptr;
3003 if (pCreateInfo)
3004 {
3005 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3006 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3007 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003008 local_pAllocator = nullptr;
3009 if (pAllocator)
3010 {
3011 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3012 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3013 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003014 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003015 countingStream->rewind();
3016 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003017 uint64_t cgen_var_231;
3018 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_231, 1);
3019 countingStream->write((uint64_t*)&cgen_var_231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003020 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003021 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003022 uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3023 countingStream->putBe64(cgen_var_232);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003024 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003025 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003026 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003027 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003028 uint64_t cgen_var_233;
3029 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_233, 1);
3030 countingStream->write((uint64_t*)&cgen_var_233, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003031 }
3032 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3033 countingStream->rewind();
3034 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3035 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3036 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003037 uint64_t cgen_var_234;
3038 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_234, 1);
3039 stream->write((uint64_t*)&cgen_var_234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003040 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003041 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003042 uint64_t cgen_var_235 = (uint64_t)(uintptr_t)local_pAllocator;
3043 stream->putBe64(cgen_var_235);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003044 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003045 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003046 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003047 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003048 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003049 uint64_t cgen_var_236;
3050 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_236, 1);
3051 stream->write((uint64_t*)&cgen_var_236, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003052 stream->setHandleMapping(resources->unwrapMapping());
3053 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003054 uint64_t cgen_var_237;
3055 stream->read((uint64_t*)&cgen_var_237, 8);
3056 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_237, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003057 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003058 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3059 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003060 countingStream->clearPool();
3061 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003062 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003063 return vkCreateBuffer_VkResult_return;
3064}
3065
3066void VkEncoder::vkDestroyBuffer(
3067 VkDevice device,
3068 VkBuffer buffer,
3069 const VkAllocationCallbacks* pAllocator)
3070{
3071 auto stream = mImpl->stream();
3072 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003073 auto resources = mImpl->resources();
3074 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003075 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003076 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003077 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003078 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003079 local_device = device;
3080 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003081 local_pAllocator = nullptr;
3082 if (pAllocator)
3083 {
3084 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3085 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3086 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003087 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003088 countingStream->rewind();
3089 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003090 uint64_t cgen_var_238;
3091 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_238, 1);
3092 countingStream->write((uint64_t*)&cgen_var_238, 1 * 8);
3093 uint64_t cgen_var_239;
3094 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_239, 1);
3095 countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003096 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003097 uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3098 countingStream->putBe64(cgen_var_240);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003099 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003100 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003101 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003102 }
3103 }
3104 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3105 countingStream->rewind();
3106 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3107 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3108 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003109 uint64_t cgen_var_241;
3110 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_241, 1);
3111 stream->write((uint64_t*)&cgen_var_241, 1 * 8);
3112 uint64_t cgen_var_242;
3113 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_242, 1);
3114 stream->write((uint64_t*)&cgen_var_242, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003115 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003116 uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3117 stream->putBe64(cgen_var_243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003118 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003119 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003120 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003121 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003122 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003123}
3124
3125VkResult VkEncoder::vkCreateBufferView(
3126 VkDevice device,
3127 const VkBufferViewCreateInfo* pCreateInfo,
3128 const VkAllocationCallbacks* pAllocator,
3129 VkBufferView* pView)
3130{
3131 auto stream = mImpl->stream();
3132 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003133 auto resources = mImpl->resources();
3134 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003135 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003136 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003137 VkBufferViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003138 VkAllocationCallbacks* local_pAllocator;
3139 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003140 local_pCreateInfo = nullptr;
3141 if (pCreateInfo)
3142 {
3143 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3144 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3145 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003146 local_pAllocator = nullptr;
3147 if (pAllocator)
3148 {
3149 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3150 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3151 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003152 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003153 countingStream->rewind();
3154 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003155 uint64_t cgen_var_244;
3156 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_244, 1);
3157 countingStream->write((uint64_t*)&cgen_var_244, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003158 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003159 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003160 uint64_t cgen_var_245 = (uint64_t)(uintptr_t)local_pAllocator;
3161 countingStream->putBe64(cgen_var_245);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003162 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003163 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003164 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003165 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003166 uint64_t cgen_var_246;
3167 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_246, 1);
3168 countingStream->write((uint64_t*)&cgen_var_246, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003169 }
3170 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3171 countingStream->rewind();
3172 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3173 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3174 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003175 uint64_t cgen_var_247;
3176 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_247, 1);
3177 stream->write((uint64_t*)&cgen_var_247, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003178 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003179 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003180 uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3181 stream->putBe64(cgen_var_248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003182 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003183 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003184 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003185 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003186 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003187 uint64_t cgen_var_249;
3188 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_249, 1);
3189 stream->write((uint64_t*)&cgen_var_249, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003190 stream->setHandleMapping(resources->unwrapMapping());
3191 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003192 uint64_t cgen_var_250;
3193 stream->read((uint64_t*)&cgen_var_250, 8);
3194 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_250, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003195 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003196 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3197 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003198 countingStream->clearPool();
3199 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003200 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003201 return vkCreateBufferView_VkResult_return;
3202}
3203
3204void VkEncoder::vkDestroyBufferView(
3205 VkDevice device,
3206 VkBufferView bufferView,
3207 const VkAllocationCallbacks* pAllocator)
3208{
3209 auto stream = mImpl->stream();
3210 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003211 auto resources = mImpl->resources();
3212 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003213 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003214 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003215 VkBufferView local_bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003216 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003217 local_device = device;
3218 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003219 local_pAllocator = nullptr;
3220 if (pAllocator)
3221 {
3222 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3223 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3224 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003225 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003226 countingStream->rewind();
3227 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003228 uint64_t cgen_var_251;
3229 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_251, 1);
3230 countingStream->write((uint64_t*)&cgen_var_251, 1 * 8);
3231 uint64_t cgen_var_252;
3232 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_252, 1);
3233 countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003234 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003235 uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3236 countingStream->putBe64(cgen_var_253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003237 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003238 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003239 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003240 }
3241 }
3242 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3243 countingStream->rewind();
3244 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3245 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3246 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003247 uint64_t cgen_var_254;
3248 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_254, 1);
3249 stream->write((uint64_t*)&cgen_var_254, 1 * 8);
3250 uint64_t cgen_var_255;
3251 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_255, 1);
3252 stream->write((uint64_t*)&cgen_var_255, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003253 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003254 uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3255 stream->putBe64(cgen_var_256);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003256 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003257 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003258 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003259 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003260 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003261}
3262
3263VkResult VkEncoder::vkCreateImage(
3264 VkDevice device,
3265 const VkImageCreateInfo* pCreateInfo,
3266 const VkAllocationCallbacks* pAllocator,
3267 VkImage* pImage)
3268{
3269 auto stream = mImpl->stream();
3270 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003271 auto resources = mImpl->resources();
3272 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003273 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003274 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003275 VkImageCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003276 VkAllocationCallbacks* local_pAllocator;
3277 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003278 local_pCreateInfo = nullptr;
3279 if (pCreateInfo)
3280 {
3281 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3282 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3283 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003284 local_pAllocator = nullptr;
3285 if (pAllocator)
3286 {
3287 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3288 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3289 }
Lingfeng Yang9666b852018-11-13 23:09:59 -08003290 goldfish_unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003291 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003292 countingStream->rewind();
3293 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003294 uint64_t cgen_var_257;
3295 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_257, 1);
3296 countingStream->write((uint64_t*)&cgen_var_257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003297 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003298 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003299 uint64_t cgen_var_258 = (uint64_t)(uintptr_t)local_pAllocator;
3300 countingStream->putBe64(cgen_var_258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003301 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003302 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003303 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003304 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003305 uint64_t cgen_var_259;
3306 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_259, 1);
3307 countingStream->write((uint64_t*)&cgen_var_259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003308 }
3309 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3310 countingStream->rewind();
3311 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3312 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3313 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003314 uint64_t cgen_var_260;
3315 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_260, 1);
3316 stream->write((uint64_t*)&cgen_var_260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003317 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003318 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003319 uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
3320 stream->putBe64(cgen_var_261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003321 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003322 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003323 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003324 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003325 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003326 uint64_t cgen_var_262;
3327 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_262, 1);
3328 stream->write((uint64_t*)&cgen_var_262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003329 stream->setHandleMapping(resources->unwrapMapping());
3330 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003331 uint64_t cgen_var_263;
3332 stream->read((uint64_t*)&cgen_var_263, 8);
3333 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_263, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003334 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003335 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3336 stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003337 countingStream->clearPool();
3338 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003339 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003340 return vkCreateImage_VkResult_return;
3341}
3342
3343void VkEncoder::vkDestroyImage(
3344 VkDevice device,
3345 VkImage image,
3346 const VkAllocationCallbacks* pAllocator)
3347{
3348 auto stream = mImpl->stream();
3349 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003350 auto resources = mImpl->resources();
3351 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003352 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003353 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003354 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003355 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003356 local_device = device;
3357 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003358 local_pAllocator = nullptr;
3359 if (pAllocator)
3360 {
3361 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3362 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3363 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003364 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003365 countingStream->rewind();
3366 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003367 uint64_t cgen_var_264;
3368 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_264, 1);
3369 countingStream->write((uint64_t*)&cgen_var_264, 1 * 8);
3370 uint64_t cgen_var_265;
3371 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_265, 1);
3372 countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003373 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003374 uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3375 countingStream->putBe64(cgen_var_266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003376 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003377 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003378 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003379 }
3380 }
3381 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3382 countingStream->rewind();
3383 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3384 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3385 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003386 uint64_t cgen_var_267;
3387 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_267, 1);
3388 stream->write((uint64_t*)&cgen_var_267, 1 * 8);
3389 uint64_t cgen_var_268;
3390 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_268, 1);
3391 stream->write((uint64_t*)&cgen_var_268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003392 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003393 uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3394 stream->putBe64(cgen_var_269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003395 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003396 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003397 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003398 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003399 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003400}
3401
3402void VkEncoder::vkGetImageSubresourceLayout(
3403 VkDevice device,
3404 VkImage image,
3405 const VkImageSubresource* pSubresource,
3406 VkSubresourceLayout* pLayout)
3407{
3408 auto stream = mImpl->stream();
3409 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003410 auto resources = mImpl->resources();
3411 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003412 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003413 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003414 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003415 VkImageSubresource* local_pSubresource;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003416 local_device = device;
3417 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003418 local_pSubresource = nullptr;
3419 if (pSubresource)
3420 {
3421 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
3422 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
3423 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003424 countingStream->rewind();
3425 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003426 uint64_t cgen_var_270;
3427 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_270, 1);
3428 countingStream->write((uint64_t*)&cgen_var_270, 1 * 8);
3429 uint64_t cgen_var_271;
3430 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_271, 1);
3431 countingStream->write((uint64_t*)&cgen_var_271, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003432 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003433 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
3434 }
3435 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3436 countingStream->rewind();
3437 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
3438 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
3439 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003440 uint64_t cgen_var_272;
3441 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3442 stream->write((uint64_t*)&cgen_var_272, 1 * 8);
3443 uint64_t cgen_var_273;
3444 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3445 stream->write((uint64_t*)&cgen_var_273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003446 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003447 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3448 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
3449}
3450
3451VkResult VkEncoder::vkCreateImageView(
3452 VkDevice device,
3453 const VkImageViewCreateInfo* pCreateInfo,
3454 const VkAllocationCallbacks* pAllocator,
3455 VkImageView* pView)
3456{
3457 auto stream = mImpl->stream();
3458 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003459 auto resources = mImpl->resources();
3460 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003461 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003462 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003463 VkImageViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003464 VkAllocationCallbacks* local_pAllocator;
3465 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003466 local_pCreateInfo = nullptr;
3467 if (pCreateInfo)
3468 {
3469 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
3470 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
3471 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003472 local_pAllocator = nullptr;
3473 if (pAllocator)
3474 {
3475 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3476 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3477 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003478 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003479 countingStream->rewind();
3480 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003481 uint64_t cgen_var_274;
3482 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_274, 1);
3483 countingStream->write((uint64_t*)&cgen_var_274, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003484 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003485 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003486 uint64_t cgen_var_275 = (uint64_t)(uintptr_t)local_pAllocator;
3487 countingStream->putBe64(cgen_var_275);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003488 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003489 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003490 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003491 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003492 uint64_t cgen_var_276;
3493 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_276, 1);
3494 countingStream->write((uint64_t*)&cgen_var_276, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003495 }
3496 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3497 countingStream->rewind();
3498 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
3499 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
3500 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003501 uint64_t cgen_var_277;
3502 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_277, 1);
3503 stream->write((uint64_t*)&cgen_var_277, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003504 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003505 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003506 uint64_t cgen_var_278 = (uint64_t)(uintptr_t)local_pAllocator;
3507 stream->putBe64(cgen_var_278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003508 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003509 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003510 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003511 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003512 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003513 uint64_t cgen_var_279;
3514 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_279, 1);
3515 stream->write((uint64_t*)&cgen_var_279, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003516 stream->setHandleMapping(resources->unwrapMapping());
3517 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003518 uint64_t cgen_var_280;
3519 stream->read((uint64_t*)&cgen_var_280, 8);
3520 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_280, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003521 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003522 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
3523 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003524 countingStream->clearPool();
3525 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003526 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003527 return vkCreateImageView_VkResult_return;
3528}
3529
3530void VkEncoder::vkDestroyImageView(
3531 VkDevice device,
3532 VkImageView imageView,
3533 const VkAllocationCallbacks* pAllocator)
3534{
3535 auto stream = mImpl->stream();
3536 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003537 auto resources = mImpl->resources();
3538 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003539 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003540 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003541 VkImageView local_imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003542 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003543 local_device = device;
3544 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003545 local_pAllocator = nullptr;
3546 if (pAllocator)
3547 {
3548 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3549 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3550 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003551 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003552 countingStream->rewind();
3553 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003554 uint64_t cgen_var_281;
3555 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_281, 1);
3556 countingStream->write((uint64_t*)&cgen_var_281, 1 * 8);
3557 uint64_t cgen_var_282;
3558 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_282, 1);
3559 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003560 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003561 uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
3562 countingStream->putBe64(cgen_var_283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003563 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003564 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003565 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003566 }
3567 }
3568 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3569 countingStream->rewind();
3570 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
3571 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
3572 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003573 uint64_t cgen_var_284;
3574 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_284, 1);
3575 stream->write((uint64_t*)&cgen_var_284, 1 * 8);
3576 uint64_t cgen_var_285;
3577 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_285, 1);
3578 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003579 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003580 uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
3581 stream->putBe64(cgen_var_286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003582 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003583 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003584 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003585 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003586 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003587}
3588
3589VkResult VkEncoder::vkCreateShaderModule(
3590 VkDevice device,
3591 const VkShaderModuleCreateInfo* pCreateInfo,
3592 const VkAllocationCallbacks* pAllocator,
3593 VkShaderModule* pShaderModule)
3594{
3595 auto stream = mImpl->stream();
3596 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003597 auto resources = mImpl->resources();
3598 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003599 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003600 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003601 VkShaderModuleCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003602 VkAllocationCallbacks* local_pAllocator;
3603 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003604 local_pCreateInfo = nullptr;
3605 if (pCreateInfo)
3606 {
3607 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
3608 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
3609 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003610 local_pAllocator = nullptr;
3611 if (pAllocator)
3612 {
3613 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3614 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3615 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003616 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003617 countingStream->rewind();
3618 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003619 uint64_t cgen_var_287;
3620 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_287, 1);
3621 countingStream->write((uint64_t*)&cgen_var_287, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003622 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003623 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003624 uint64_t cgen_var_288 = (uint64_t)(uintptr_t)local_pAllocator;
3625 countingStream->putBe64(cgen_var_288);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003626 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003627 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003628 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003629 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003630 uint64_t cgen_var_289;
3631 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_289, 1);
3632 countingStream->write((uint64_t*)&cgen_var_289, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003633 }
3634 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3635 countingStream->rewind();
3636 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
3637 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
3638 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003639 uint64_t cgen_var_290;
3640 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_290, 1);
3641 stream->write((uint64_t*)&cgen_var_290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003642 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(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_291 = (uint64_t)(uintptr_t)local_pAllocator;
3645 stream->putBe64(cgen_var_291);
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(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003649 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003650 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003651 uint64_t cgen_var_292;
3652 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_292, 1);
3653 stream->write((uint64_t*)&cgen_var_292, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003654 stream->setHandleMapping(resources->unwrapMapping());
3655 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003656 uint64_t cgen_var_293;
3657 stream->read((uint64_t*)&cgen_var_293, 8);
3658 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_293, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003659 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003660 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
3661 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003662 countingStream->clearPool();
3663 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003664 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003665 return vkCreateShaderModule_VkResult_return;
3666}
3667
3668void VkEncoder::vkDestroyShaderModule(
3669 VkDevice device,
3670 VkShaderModule shaderModule,
3671 const VkAllocationCallbacks* pAllocator)
3672{
3673 auto stream = mImpl->stream();
3674 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003675 auto resources = mImpl->resources();
3676 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003677 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003678 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003679 VkShaderModule local_shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003680 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003681 local_device = device;
3682 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003683 local_pAllocator = nullptr;
3684 if (pAllocator)
3685 {
3686 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3687 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3688 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003689 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003690 countingStream->rewind();
3691 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003692 uint64_t cgen_var_294;
3693 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_294, 1);
3694 countingStream->write((uint64_t*)&cgen_var_294, 1 * 8);
3695 uint64_t cgen_var_295;
3696 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_295, 1);
3697 countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003698 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003699 uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
3700 countingStream->putBe64(cgen_var_296);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003701 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003702 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003703 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003704 }
3705 }
3706 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3707 countingStream->rewind();
3708 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
3709 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
3710 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003711 uint64_t cgen_var_297;
3712 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_297, 1);
3713 stream->write((uint64_t*)&cgen_var_297, 1 * 8);
3714 uint64_t cgen_var_298;
3715 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_298, 1);
3716 stream->write((uint64_t*)&cgen_var_298, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003717 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003718 uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
3719 stream->putBe64(cgen_var_299);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003720 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003721 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003722 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003723 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003724 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003725}
3726
3727VkResult VkEncoder::vkCreatePipelineCache(
3728 VkDevice device,
3729 const VkPipelineCacheCreateInfo* pCreateInfo,
3730 const VkAllocationCallbacks* pAllocator,
3731 VkPipelineCache* pPipelineCache)
3732{
3733 auto stream = mImpl->stream();
3734 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003735 auto resources = mImpl->resources();
3736 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003737 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003738 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003739 VkPipelineCacheCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003740 VkAllocationCallbacks* local_pAllocator;
3741 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003742 local_pCreateInfo = nullptr;
3743 if (pCreateInfo)
3744 {
3745 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
3746 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
3747 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003748 local_pAllocator = nullptr;
3749 if (pAllocator)
3750 {
3751 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3752 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3753 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003754 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003755 countingStream->rewind();
3756 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003757 uint64_t cgen_var_300;
3758 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_300, 1);
3759 countingStream->write((uint64_t*)&cgen_var_300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003760 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003761 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003762 uint64_t cgen_var_301 = (uint64_t)(uintptr_t)local_pAllocator;
3763 countingStream->putBe64(cgen_var_301);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003764 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003765 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003766 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003767 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003768 uint64_t cgen_var_302;
3769 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_302, 1);
3770 countingStream->write((uint64_t*)&cgen_var_302, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003771 }
3772 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3773 countingStream->rewind();
3774 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
3775 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
3776 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003777 uint64_t cgen_var_303;
3778 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_303, 1);
3779 stream->write((uint64_t*)&cgen_var_303, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003780 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003781 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003782 uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
3783 stream->putBe64(cgen_var_304);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003784 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003785 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003786 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003787 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003788 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003789 uint64_t cgen_var_305;
3790 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_305, 1);
3791 stream->write((uint64_t*)&cgen_var_305, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003792 stream->setHandleMapping(resources->unwrapMapping());
3793 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003794 uint64_t cgen_var_306;
3795 stream->read((uint64_t*)&cgen_var_306, 8);
3796 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_306, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003797 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003798 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
3799 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003800 countingStream->clearPool();
3801 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003802 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003803 return vkCreatePipelineCache_VkResult_return;
3804}
3805
3806void VkEncoder::vkDestroyPipelineCache(
3807 VkDevice device,
3808 VkPipelineCache pipelineCache,
3809 const VkAllocationCallbacks* pAllocator)
3810{
3811 auto stream = mImpl->stream();
3812 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003813 auto resources = mImpl->resources();
3814 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003815 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003816 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003817 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003818 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003819 local_device = device;
3820 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003821 local_pAllocator = nullptr;
3822 if (pAllocator)
3823 {
3824 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3825 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3826 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003827 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003828 countingStream->rewind();
3829 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003830 uint64_t cgen_var_307;
3831 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_307, 1);
3832 countingStream->write((uint64_t*)&cgen_var_307, 1 * 8);
3833 uint64_t cgen_var_308;
3834 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_308, 1);
3835 countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003836 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003837 uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
3838 countingStream->putBe64(cgen_var_309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003839 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003840 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003841 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003842 }
3843 }
3844 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3845 countingStream->rewind();
3846 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
3847 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
3848 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003849 uint64_t cgen_var_310;
3850 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_310, 1);
3851 stream->write((uint64_t*)&cgen_var_310, 1 * 8);
3852 uint64_t cgen_var_311;
3853 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_311, 1);
3854 stream->write((uint64_t*)&cgen_var_311, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003855 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003856 uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
3857 stream->putBe64(cgen_var_312);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003858 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003859 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003860 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003861 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003862 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003863}
3864
3865VkResult VkEncoder::vkGetPipelineCacheData(
3866 VkDevice device,
3867 VkPipelineCache pipelineCache,
3868 size_t* pDataSize,
3869 void* pData)
3870{
3871 auto stream = mImpl->stream();
3872 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003873 auto resources = mImpl->resources();
3874 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003875 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003876 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003877 VkPipelineCache local_pipelineCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003878 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003879 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003880 countingStream->rewind();
3881 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003882 uint64_t cgen_var_313;
3883 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_313, 1);
3884 countingStream->write((uint64_t*)&cgen_var_313, 1 * 8);
3885 uint64_t cgen_var_314;
3886 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_314, 1);
3887 countingStream->write((uint64_t*)&cgen_var_314, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003888 // WARNING PTR CHECK
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003889 uint64_t cgen_var_315 = (uint64_t)(uintptr_t)pDataSize;
3890 countingStream->putBe64(cgen_var_315);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003891 if (pDataSize)
3892 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003893 uint64_t cgen_var_316 = (uint64_t)(*pDataSize);
3894 countingStream->putBe64(cgen_var_316);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003895 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003896 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003897 uint64_t cgen_var_317 = (uint64_t)(uintptr_t)pData;
3898 countingStream->putBe64(cgen_var_317);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003899 if (pData)
3900 {
3901 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3902 }
3903 }
3904 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3905 countingStream->rewind();
3906 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
3907 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
3908 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003909 uint64_t cgen_var_318;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003910 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08003911 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003912 uint64_t cgen_var_319;
3913 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
3914 stream->write((uint64_t*)&cgen_var_319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003915 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003916 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)pDataSize;
3917 stream->putBe64(cgen_var_320);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003918 if (pDataSize)
3919 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003920 uint64_t cgen_var_321 = (uint64_t)(*pDataSize);
3921 stream->putBe64(cgen_var_321);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003922 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003923 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003924 uint64_t cgen_var_322 = (uint64_t)(uintptr_t)pData;
3925 stream->putBe64(cgen_var_322);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003926 if (pData)
3927 {
3928 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3929 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003930 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003931 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003932 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003933 if (pDataSize)
3934 {
3935 if (!(check_pDataSize))
3936 {
3937 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
3938 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003939 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003940 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003941 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003942 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003943 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003944 if (pData)
3945 {
3946 if (!(check_pData))
3947 {
3948 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
3949 }
3950 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
3951 }
3952 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
3953 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003954 countingStream->clearPool();
3955 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003956 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003957 return vkGetPipelineCacheData_VkResult_return;
3958}
3959
3960VkResult VkEncoder::vkMergePipelineCaches(
3961 VkDevice device,
3962 VkPipelineCache dstCache,
3963 uint32_t srcCacheCount,
3964 const VkPipelineCache* pSrcCaches)
3965{
3966 auto stream = mImpl->stream();
3967 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003968 auto resources = mImpl->resources();
3969 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003970 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003971 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003972 VkPipelineCache local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003973 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003974 VkPipelineCache* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003975 local_device = device;
3976 local_dstCache = dstCache;
3977 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003978 local_pSrcCaches = nullptr;
3979 if (pSrcCaches)
3980 {
3981 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
3982 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003983 countingStream->rewind();
3984 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003985 uint64_t cgen_var_326;
3986 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
3987 countingStream->write((uint64_t*)&cgen_var_326, 1 * 8);
3988 uint64_t cgen_var_327;
3989 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_327, 1);
3990 countingStream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003991 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003992 if (((srcCacheCount)))
3993 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08003994 uint64_t* cgen_var_328;
3995 countingStream->alloc((void**)&cgen_var_328, ((srcCacheCount)) * 8);
3996 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_328, ((srcCacheCount)));
3997 countingStream->write((uint64_t*)cgen_var_328, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08003998 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003999 }
4000 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4001 countingStream->rewind();
4002 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4003 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4004 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004005 uint64_t cgen_var_329;
4006 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_329, 1);
4007 stream->write((uint64_t*)&cgen_var_329, 1 * 8);
4008 uint64_t cgen_var_330;
4009 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_330, 1);
4010 stream->write((uint64_t*)&cgen_var_330, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004011 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004012 if (((srcCacheCount)))
4013 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004014 uint64_t* cgen_var_331;
4015 stream->alloc((void**)&cgen_var_331, ((srcCacheCount)) * 8);
4016 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_331, ((srcCacheCount)));
4017 stream->write((uint64_t*)cgen_var_331, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004018 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004019 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4020 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004021 countingStream->clearPool();
4022 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004023 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004024 return vkMergePipelineCaches_VkResult_return;
4025}
4026
4027VkResult VkEncoder::vkCreateGraphicsPipelines(
4028 VkDevice device,
4029 VkPipelineCache pipelineCache,
4030 uint32_t createInfoCount,
4031 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4032 const VkAllocationCallbacks* pAllocator,
4033 VkPipeline* pPipelines)
4034{
4035 auto stream = mImpl->stream();
4036 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004037 auto resources = mImpl->resources();
4038 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004039 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004040 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004041 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004042 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004043 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004044 VkAllocationCallbacks* local_pAllocator;
4045 local_device = device;
4046 local_pipelineCache = pipelineCache;
4047 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004048 local_pCreateInfos = nullptr;
4049 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004050 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004051 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004052 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4053 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004054 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004055 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004056 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004057 local_pAllocator = nullptr;
4058 if (pAllocator)
4059 {
4060 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4061 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4062 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004063 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004064 countingStream->rewind();
4065 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004066 uint64_t cgen_var_332;
4067 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_332, 1);
4068 countingStream->write((uint64_t*)&cgen_var_332, 1 * 8);
4069 uint64_t cgen_var_333;
4070 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_333, 1);
4071 countingStream->write((uint64_t*)&cgen_var_333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004072 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4073 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4074 {
4075 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4076 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004077 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004078 uint64_t cgen_var_334 = (uint64_t)(uintptr_t)local_pAllocator;
4079 countingStream->putBe64(cgen_var_334);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004080 if (local_pAllocator)
4081 {
4082 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004083 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004084 if (((createInfoCount)))
4085 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004086 uint64_t* cgen_var_335;
4087 countingStream->alloc((void**)&cgen_var_335, ((createInfoCount)) * 8);
4088 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_335, ((createInfoCount)));
4089 countingStream->write((uint64_t*)cgen_var_335, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004090 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004091 }
4092 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4093 countingStream->rewind();
4094 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4095 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4096 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004097 uint64_t cgen_var_336;
4098 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_336, 1);
4099 stream->write((uint64_t*)&cgen_var_336, 1 * 8);
4100 uint64_t cgen_var_337;
4101 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_337, 1);
4102 stream->write((uint64_t*)&cgen_var_337, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004103 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004104 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4105 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004106 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004107 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004108 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004109 uint64_t cgen_var_338 = (uint64_t)(uintptr_t)local_pAllocator;
4110 stream->putBe64(cgen_var_338);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004111 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004112 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004113 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004114 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004115 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004116 if (((createInfoCount)))
4117 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004118 uint64_t* cgen_var_339;
4119 stream->alloc((void**)&cgen_var_339, ((createInfoCount)) * 8);
4120 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_339, ((createInfoCount)));
4121 stream->write((uint64_t*)cgen_var_339, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004122 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004123 stream->setHandleMapping(resources->unwrapMapping());
4124 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004125 if (((createInfoCount)))
4126 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004127 uint64_t* cgen_var_340;
4128 stream->alloc((void**)&cgen_var_340, ((createInfoCount)) * 8);
4129 stream->read((uint64_t*)cgen_var_340, ((createInfoCount)) * 8);
4130 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_340, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004131 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004132 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004133 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4134 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004135 countingStream->clearPool();
4136 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004137 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004138 return vkCreateGraphicsPipelines_VkResult_return;
4139}
4140
4141VkResult VkEncoder::vkCreateComputePipelines(
4142 VkDevice device,
4143 VkPipelineCache pipelineCache,
4144 uint32_t createInfoCount,
4145 const VkComputePipelineCreateInfo* pCreateInfos,
4146 const VkAllocationCallbacks* pAllocator,
4147 VkPipeline* pPipelines)
4148{
4149 auto stream = mImpl->stream();
4150 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004151 auto resources = mImpl->resources();
4152 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004153 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004154 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004155 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004156 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004157 VkComputePipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004158 VkAllocationCallbacks* local_pAllocator;
4159 local_device = device;
4160 local_pipelineCache = pipelineCache;
4161 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004162 local_pCreateInfos = nullptr;
4163 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004164 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004165 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004166 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4167 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004168 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004169 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004170 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004171 local_pAllocator = nullptr;
4172 if (pAllocator)
4173 {
4174 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4175 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4176 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004177 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004178 countingStream->rewind();
4179 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004180 uint64_t cgen_var_341;
4181 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_341, 1);
4182 countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
4183 uint64_t cgen_var_342;
4184 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_342, 1);
4185 countingStream->write((uint64_t*)&cgen_var_342, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004186 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4187 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4188 {
4189 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4190 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004191 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004192 uint64_t cgen_var_343 = (uint64_t)(uintptr_t)local_pAllocator;
4193 countingStream->putBe64(cgen_var_343);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004194 if (local_pAllocator)
4195 {
4196 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004197 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004198 if (((createInfoCount)))
4199 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004200 uint64_t* cgen_var_344;
4201 countingStream->alloc((void**)&cgen_var_344, ((createInfoCount)) * 8);
4202 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_344, ((createInfoCount)));
4203 countingStream->write((uint64_t*)cgen_var_344, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004204 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004205 }
4206 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4207 countingStream->rewind();
4208 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4209 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4210 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004211 uint64_t cgen_var_345;
4212 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_345, 1);
4213 stream->write((uint64_t*)&cgen_var_345, 1 * 8);
4214 uint64_t cgen_var_346;
4215 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_346, 1);
4216 stream->write((uint64_t*)&cgen_var_346, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004217 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004218 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4219 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004220 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004221 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004222 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004223 uint64_t cgen_var_347 = (uint64_t)(uintptr_t)local_pAllocator;
4224 stream->putBe64(cgen_var_347);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004225 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004226 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004227 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004228 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004229 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004230 if (((createInfoCount)))
4231 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004232 uint64_t* cgen_var_348;
4233 stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4234 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_348, ((createInfoCount)));
4235 stream->write((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004236 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004237 stream->setHandleMapping(resources->unwrapMapping());
4238 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004239 if (((createInfoCount)))
4240 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004241 uint64_t* cgen_var_349;
4242 stream->alloc((void**)&cgen_var_349, ((createInfoCount)) * 8);
4243 stream->read((uint64_t*)cgen_var_349, ((createInfoCount)) * 8);
4244 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_349, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004245 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004246 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004247 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4248 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004249 countingStream->clearPool();
4250 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004251 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004252 return vkCreateComputePipelines_VkResult_return;
4253}
4254
4255void VkEncoder::vkDestroyPipeline(
4256 VkDevice device,
4257 VkPipeline pipeline,
4258 const VkAllocationCallbacks* pAllocator)
4259{
4260 auto stream = mImpl->stream();
4261 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004262 auto resources = mImpl->resources();
4263 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004264 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004265 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004266 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004267 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004268 local_device = device;
4269 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004270 local_pAllocator = nullptr;
4271 if (pAllocator)
4272 {
4273 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4274 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4275 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004276 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004277 countingStream->rewind();
4278 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004279 uint64_t cgen_var_350;
4280 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_350, 1);
4281 countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
4282 uint64_t cgen_var_351;
4283 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_351, 1);
4284 countingStream->write((uint64_t*)&cgen_var_351, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004285 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004286 uint64_t cgen_var_352 = (uint64_t)(uintptr_t)local_pAllocator;
4287 countingStream->putBe64(cgen_var_352);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004288 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004289 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004290 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004291 }
4292 }
4293 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4294 countingStream->rewind();
4295 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
4296 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
4297 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004298 uint64_t cgen_var_353;
4299 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4300 stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4301 uint64_t cgen_var_354;
4302 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_354, 1);
4303 stream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004304 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004305 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4306 stream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004307 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004308 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004309 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004310 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004311 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004312}
4313
4314VkResult VkEncoder::vkCreatePipelineLayout(
4315 VkDevice device,
4316 const VkPipelineLayoutCreateInfo* pCreateInfo,
4317 const VkAllocationCallbacks* pAllocator,
4318 VkPipelineLayout* pPipelineLayout)
4319{
4320 auto stream = mImpl->stream();
4321 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004322 auto resources = mImpl->resources();
4323 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004324 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004325 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004326 VkPipelineLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004327 VkAllocationCallbacks* local_pAllocator;
4328 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004329 local_pCreateInfo = nullptr;
4330 if (pCreateInfo)
4331 {
4332 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
4333 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
4334 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004335 local_pAllocator = nullptr;
4336 if (pAllocator)
4337 {
4338 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4339 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4340 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004341 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004342 countingStream->rewind();
4343 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004344 uint64_t cgen_var_356;
4345 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_356, 1);
4346 countingStream->write((uint64_t*)&cgen_var_356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004347 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004348 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004349 uint64_t cgen_var_357 = (uint64_t)(uintptr_t)local_pAllocator;
4350 countingStream->putBe64(cgen_var_357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004351 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004352 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004353 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004354 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004355 uint64_t cgen_var_358;
4356 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_358, 1);
4357 countingStream->write((uint64_t*)&cgen_var_358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004358 }
4359 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4360 countingStream->rewind();
4361 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
4362 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
4363 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004364 uint64_t cgen_var_359;
4365 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_359, 1);
4366 stream->write((uint64_t*)&cgen_var_359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004367 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004368 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004369 uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
4370 stream->putBe64(cgen_var_360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004371 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004372 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004373 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004374 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004375 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004376 uint64_t cgen_var_361;
4377 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_361, 1);
4378 stream->write((uint64_t*)&cgen_var_361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004379 stream->setHandleMapping(resources->unwrapMapping());
4380 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004381 uint64_t cgen_var_362;
4382 stream->read((uint64_t*)&cgen_var_362, 8);
4383 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_362, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004384 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004385 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
4386 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004387 countingStream->clearPool();
4388 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004389 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004390 return vkCreatePipelineLayout_VkResult_return;
4391}
4392
4393void VkEncoder::vkDestroyPipelineLayout(
4394 VkDevice device,
4395 VkPipelineLayout pipelineLayout,
4396 const VkAllocationCallbacks* pAllocator)
4397{
4398 auto stream = mImpl->stream();
4399 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004400 auto resources = mImpl->resources();
4401 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004402 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004403 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004404 VkPipelineLayout local_pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004405 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004406 local_device = device;
4407 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004408 local_pAllocator = nullptr;
4409 if (pAllocator)
4410 {
4411 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4412 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4413 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004414 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004415 countingStream->rewind();
4416 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004417 uint64_t cgen_var_363;
4418 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_363, 1);
4419 countingStream->write((uint64_t*)&cgen_var_363, 1 * 8);
4420 uint64_t cgen_var_364;
4421 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_364, 1);
4422 countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004423 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004424 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
4425 countingStream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004426 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004427 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004428 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004429 }
4430 }
4431 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4432 countingStream->rewind();
4433 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
4434 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
4435 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004436 uint64_t cgen_var_366;
4437 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_366, 1);
4438 stream->write((uint64_t*)&cgen_var_366, 1 * 8);
4439 uint64_t cgen_var_367;
4440 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_367, 1);
4441 stream->write((uint64_t*)&cgen_var_367, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004442 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004443 uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
4444 stream->putBe64(cgen_var_368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004445 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004446 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004447 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004448 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004449 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004450}
4451
4452VkResult VkEncoder::vkCreateSampler(
4453 VkDevice device,
4454 const VkSamplerCreateInfo* pCreateInfo,
4455 const VkAllocationCallbacks* pAllocator,
4456 VkSampler* pSampler)
4457{
4458 auto stream = mImpl->stream();
4459 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004460 auto resources = mImpl->resources();
4461 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004462 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004463 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004464 VkSamplerCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004465 VkAllocationCallbacks* local_pAllocator;
4466 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004467 local_pCreateInfo = nullptr;
4468 if (pCreateInfo)
4469 {
4470 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
4471 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
4472 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004473 local_pAllocator = nullptr;
4474 if (pAllocator)
4475 {
4476 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4477 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4478 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004479 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004480 countingStream->rewind();
4481 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004482 uint64_t cgen_var_369;
4483 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_369, 1);
4484 countingStream->write((uint64_t*)&cgen_var_369, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004485 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004486 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004487 uint64_t cgen_var_370 = (uint64_t)(uintptr_t)local_pAllocator;
4488 countingStream->putBe64(cgen_var_370);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004489 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004490 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004491 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004492 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004493 uint64_t cgen_var_371;
4494 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_371, 1);
4495 countingStream->write((uint64_t*)&cgen_var_371, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004496 }
4497 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4498 countingStream->rewind();
4499 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
4500 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
4501 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004502 uint64_t cgen_var_372;
4503 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_372, 1);
4504 stream->write((uint64_t*)&cgen_var_372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004505 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004506 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004507 uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
4508 stream->putBe64(cgen_var_373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004509 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004510 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004511 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004512 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004513 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004514 uint64_t cgen_var_374;
4515 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_374, 1);
4516 stream->write((uint64_t*)&cgen_var_374, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004517 stream->setHandleMapping(resources->unwrapMapping());
4518 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004519 uint64_t cgen_var_375;
4520 stream->read((uint64_t*)&cgen_var_375, 8);
4521 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_375, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004522 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004523 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
4524 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004525 countingStream->clearPool();
4526 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004527 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004528 return vkCreateSampler_VkResult_return;
4529}
4530
4531void VkEncoder::vkDestroySampler(
4532 VkDevice device,
4533 VkSampler sampler,
4534 const VkAllocationCallbacks* pAllocator)
4535{
4536 auto stream = mImpl->stream();
4537 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004538 auto resources = mImpl->resources();
4539 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004540 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004541 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004542 VkSampler local_sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004543 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004544 local_device = device;
4545 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004546 local_pAllocator = nullptr;
4547 if (pAllocator)
4548 {
4549 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4550 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4551 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004552 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004553 countingStream->rewind();
4554 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004555 uint64_t cgen_var_376;
4556 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_376, 1);
4557 countingStream->write((uint64_t*)&cgen_var_376, 1 * 8);
4558 uint64_t cgen_var_377;
4559 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_377, 1);
4560 countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004561 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004562 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
4563 countingStream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004564 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004565 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004566 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004567 }
4568 }
4569 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4570 countingStream->rewind();
4571 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
4572 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
4573 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004574 uint64_t cgen_var_379;
4575 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_379, 1);
4576 stream->write((uint64_t*)&cgen_var_379, 1 * 8);
4577 uint64_t cgen_var_380;
4578 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_380, 1);
4579 stream->write((uint64_t*)&cgen_var_380, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004580 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004581 uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
4582 stream->putBe64(cgen_var_381);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004583 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004584 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004585 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004586 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004587 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004588}
4589
4590VkResult VkEncoder::vkCreateDescriptorSetLayout(
4591 VkDevice device,
4592 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4593 const VkAllocationCallbacks* pAllocator,
4594 VkDescriptorSetLayout* pSetLayout)
4595{
4596 auto stream = mImpl->stream();
4597 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004598 auto resources = mImpl->resources();
4599 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004600 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004601 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004602 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004603 VkAllocationCallbacks* local_pAllocator;
4604 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004605 local_pCreateInfo = nullptr;
4606 if (pCreateInfo)
4607 {
4608 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
4609 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
4610 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004611 local_pAllocator = nullptr;
4612 if (pAllocator)
4613 {
4614 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4615 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4616 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004617 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004618 countingStream->rewind();
4619 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004620 uint64_t cgen_var_382;
4621 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_382, 1);
4622 countingStream->write((uint64_t*)&cgen_var_382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004623 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004624 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004625 uint64_t cgen_var_383 = (uint64_t)(uintptr_t)local_pAllocator;
4626 countingStream->putBe64(cgen_var_383);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004627 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004628 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004629 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004630 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004631 uint64_t cgen_var_384;
4632 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_384, 1);
4633 countingStream->write((uint64_t*)&cgen_var_384, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004634 }
4635 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4636 countingStream->rewind();
4637 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
4638 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
4639 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004640 uint64_t cgen_var_385;
4641 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_385, 1);
4642 stream->write((uint64_t*)&cgen_var_385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004643 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004644 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004645 uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
4646 stream->putBe64(cgen_var_386);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004647 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004648 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004649 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004650 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004651 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004652 uint64_t cgen_var_387;
4653 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_387, 1);
4654 stream->write((uint64_t*)&cgen_var_387, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004655 stream->setHandleMapping(resources->unwrapMapping());
4656 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004657 uint64_t cgen_var_388;
4658 stream->read((uint64_t*)&cgen_var_388, 8);
4659 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_388, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004660 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004661 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
4662 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004663 countingStream->clearPool();
4664 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004665 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004666 return vkCreateDescriptorSetLayout_VkResult_return;
4667}
4668
4669void VkEncoder::vkDestroyDescriptorSetLayout(
4670 VkDevice device,
4671 VkDescriptorSetLayout descriptorSetLayout,
4672 const VkAllocationCallbacks* pAllocator)
4673{
4674 auto stream = mImpl->stream();
4675 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004676 auto resources = mImpl->resources();
4677 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004678 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004679 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004680 VkDescriptorSetLayout local_descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004681 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004682 local_device = device;
4683 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004684 local_pAllocator = nullptr;
4685 if (pAllocator)
4686 {
4687 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4688 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4689 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004690 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004691 countingStream->rewind();
4692 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004693 uint64_t cgen_var_389;
4694 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_389, 1);
4695 countingStream->write((uint64_t*)&cgen_var_389, 1 * 8);
4696 uint64_t cgen_var_390;
4697 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_390, 1);
4698 countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004699 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004700 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
4701 countingStream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004702 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004703 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004704 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004705 }
4706 }
4707 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4708 countingStream->rewind();
4709 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
4710 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
4711 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004712 uint64_t cgen_var_392;
4713 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_392, 1);
4714 stream->write((uint64_t*)&cgen_var_392, 1 * 8);
4715 uint64_t cgen_var_393;
4716 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_393, 1);
4717 stream->write((uint64_t*)&cgen_var_393, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004718 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004719 uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
4720 stream->putBe64(cgen_var_394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004721 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004722 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004723 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004724 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004725 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004726}
4727
4728VkResult VkEncoder::vkCreateDescriptorPool(
4729 VkDevice device,
4730 const VkDescriptorPoolCreateInfo* pCreateInfo,
4731 const VkAllocationCallbacks* pAllocator,
4732 VkDescriptorPool* pDescriptorPool)
4733{
4734 auto stream = mImpl->stream();
4735 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004736 auto resources = mImpl->resources();
4737 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004738 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004739 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004740 VkDescriptorPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004741 VkAllocationCallbacks* local_pAllocator;
4742 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004743 local_pCreateInfo = nullptr;
4744 if (pCreateInfo)
4745 {
4746 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
4747 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
4748 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004749 local_pAllocator = nullptr;
4750 if (pAllocator)
4751 {
4752 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4753 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4754 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004755 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004756 countingStream->rewind();
4757 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004758 uint64_t cgen_var_395;
4759 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_395, 1);
4760 countingStream->write((uint64_t*)&cgen_var_395, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004761 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004762 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004763 uint64_t cgen_var_396 = (uint64_t)(uintptr_t)local_pAllocator;
4764 countingStream->putBe64(cgen_var_396);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004765 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004766 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004767 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004768 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004769 uint64_t cgen_var_397;
4770 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_397, 1);
4771 countingStream->write((uint64_t*)&cgen_var_397, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004772 }
4773 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4774 countingStream->rewind();
4775 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
4776 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
4777 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004778 uint64_t cgen_var_398;
4779 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_398, 1);
4780 stream->write((uint64_t*)&cgen_var_398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004781 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004782 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004783 uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
4784 stream->putBe64(cgen_var_399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004785 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004786 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004787 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004788 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004789 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004790 uint64_t cgen_var_400;
4791 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_400, 1);
4792 stream->write((uint64_t*)&cgen_var_400, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004793 stream->setHandleMapping(resources->unwrapMapping());
4794 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004795 uint64_t cgen_var_401;
4796 stream->read((uint64_t*)&cgen_var_401, 8);
4797 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_401, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004798 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004799 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
4800 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004801 countingStream->clearPool();
4802 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004803 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004804 return vkCreateDescriptorPool_VkResult_return;
4805}
4806
4807void VkEncoder::vkDestroyDescriptorPool(
4808 VkDevice device,
4809 VkDescriptorPool descriptorPool,
4810 const VkAllocationCallbacks* pAllocator)
4811{
4812 auto stream = mImpl->stream();
4813 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004814 auto resources = mImpl->resources();
4815 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004816 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004817 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004818 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004819 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004820 local_device = device;
4821 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004822 local_pAllocator = nullptr;
4823 if (pAllocator)
4824 {
4825 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4826 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4827 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004828 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004829 countingStream->rewind();
4830 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004831 uint64_t cgen_var_402;
4832 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_402, 1);
4833 countingStream->write((uint64_t*)&cgen_var_402, 1 * 8);
4834 uint64_t cgen_var_403;
4835 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_403, 1);
4836 countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004837 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004838 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
4839 countingStream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004840 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004841 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004842 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004843 }
4844 }
4845 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4846 countingStream->rewind();
4847 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
4848 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
4849 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004850 uint64_t cgen_var_405;
4851 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_405, 1);
4852 stream->write((uint64_t*)&cgen_var_405, 1 * 8);
4853 uint64_t cgen_var_406;
4854 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_406, 1);
4855 stream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004856 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004857 uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
4858 stream->putBe64(cgen_var_407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004859 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004860 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004861 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004862 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004863 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004864}
4865
4866VkResult VkEncoder::vkResetDescriptorPool(
4867 VkDevice device,
4868 VkDescriptorPool descriptorPool,
4869 VkDescriptorPoolResetFlags flags)
4870{
4871 auto stream = mImpl->stream();
4872 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004873 auto resources = mImpl->resources();
4874 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004875 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004876 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004877 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004878 VkDescriptorPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004879 local_device = device;
4880 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004881 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004882 countingStream->rewind();
4883 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004884 uint64_t cgen_var_408;
4885 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_408, 1);
4886 countingStream->write((uint64_t*)&cgen_var_408, 1 * 8);
4887 uint64_t cgen_var_409;
4888 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_409, 1);
4889 countingStream->write((uint64_t*)&cgen_var_409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004890 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004891 }
4892 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4893 countingStream->rewind();
4894 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
4895 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
4896 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004897 uint64_t cgen_var_410;
4898 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
4899 stream->write((uint64_t*)&cgen_var_410, 1 * 8);
4900 uint64_t cgen_var_411;
4901 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
4902 stream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004903 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004904 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
4905 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004906 countingStream->clearPool();
4907 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004908 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004909 return vkResetDescriptorPool_VkResult_return;
4910}
4911
4912VkResult VkEncoder::vkAllocateDescriptorSets(
4913 VkDevice device,
4914 const VkDescriptorSetAllocateInfo* pAllocateInfo,
4915 VkDescriptorSet* pDescriptorSets)
4916{
4917 auto stream = mImpl->stream();
4918 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004919 auto resources = mImpl->resources();
4920 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004921 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004922 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004923 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004924 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004925 local_pAllocateInfo = nullptr;
4926 if (pAllocateInfo)
4927 {
4928 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
4929 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
4930 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004931 countingStream->rewind();
4932 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004933 uint64_t cgen_var_412;
4934 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_412, 1);
4935 countingStream->write((uint64_t*)&cgen_var_412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004936 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004937 if (pAllocateInfo->descriptorSetCount)
4938 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004939 uint64_t* cgen_var_413;
4940 countingStream->alloc((void**)&cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
4941 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_413, pAllocateInfo->descriptorSetCount);
4942 countingStream->write((uint64_t*)cgen_var_413, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004943 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004944 }
4945 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4946 countingStream->rewind();
4947 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
4948 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
4949 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004950 uint64_t cgen_var_414;
4951 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_414, 1);
4952 stream->write((uint64_t*)&cgen_var_414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004953 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08004954 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004955 if (pAllocateInfo->descriptorSetCount)
4956 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004957 uint64_t* cgen_var_415;
4958 stream->alloc((void**)&cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
4959 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_415, pAllocateInfo->descriptorSetCount);
4960 stream->write((uint64_t*)cgen_var_415, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004961 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004962 stream->setHandleMapping(resources->unwrapMapping());
4963 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004964 if (pAllocateInfo->descriptorSetCount)
4965 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004966 uint64_t* cgen_var_416;
4967 stream->alloc((void**)&cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
4968 stream->read((uint64_t*)cgen_var_416, pAllocateInfo->descriptorSetCount * 8);
4969 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_416, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004970 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004971 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004972 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
4973 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004974 countingStream->clearPool();
4975 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004976 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004977 return vkAllocateDescriptorSets_VkResult_return;
4978}
4979
4980VkResult VkEncoder::vkFreeDescriptorSets(
4981 VkDevice device,
4982 VkDescriptorPool descriptorPool,
4983 uint32_t descriptorSetCount,
4984 const VkDescriptorSet* pDescriptorSets)
4985{
4986 auto stream = mImpl->stream();
4987 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004988 auto resources = mImpl->resources();
4989 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004990 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004991 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004992 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004993 uint32_t local_descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004994 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004995 local_device = device;
4996 local_descriptorPool = descriptorPool;
4997 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004998 local_pDescriptorSets = nullptr;
4999 if (pDescriptorSets)
5000 {
5001 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5002 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005003 countingStream->rewind();
5004 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005005 uint64_t cgen_var_417;
5006 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_417, 1);
5007 countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
5008 uint64_t cgen_var_418;
5009 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_418, 1);
5010 countingStream->write((uint64_t*)&cgen_var_418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005011 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005012 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005013 uint64_t cgen_var_419 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5014 countingStream->putBe64(cgen_var_419);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005015 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005016 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005017 if (((descriptorSetCount)))
5018 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005019 uint64_t* cgen_var_420;
5020 countingStream->alloc((void**)&cgen_var_420, ((descriptorSetCount)) * 8);
5021 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_420, ((descriptorSetCount)));
5022 countingStream->write((uint64_t*)cgen_var_420, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005023 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005024 }
5025 }
5026 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5027 countingStream->rewind();
5028 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5029 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5030 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005031 uint64_t cgen_var_421;
5032 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_421, 1);
5033 stream->write((uint64_t*)&cgen_var_421, 1 * 8);
5034 uint64_t cgen_var_422;
5035 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_422, 1);
5036 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005037 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005038 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005039 uint64_t cgen_var_423 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5040 stream->putBe64(cgen_var_423);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005041 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005042 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005043 if (((descriptorSetCount)))
5044 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005045 uint64_t* cgen_var_424;
5046 stream->alloc((void**)&cgen_var_424, ((descriptorSetCount)) * 8);
5047 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_424, ((descriptorSetCount)));
5048 stream->write((uint64_t*)cgen_var_424, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005049 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005050 }
5051 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5052 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005053 countingStream->clearPool();
5054 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005055 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08005056 if (pDescriptorSets)
5057 {
5058 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5059 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005060 return vkFreeDescriptorSets_VkResult_return;
5061}
5062
5063void VkEncoder::vkUpdateDescriptorSets(
5064 VkDevice device,
5065 uint32_t descriptorWriteCount,
5066 const VkWriteDescriptorSet* pDescriptorWrites,
5067 uint32_t descriptorCopyCount,
5068 const VkCopyDescriptorSet* pDescriptorCopies)
5069{
5070 auto stream = mImpl->stream();
5071 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005072 auto resources = mImpl->resources();
5073 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005074 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005075 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005076 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005077 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005078 uint32_t local_descriptorCopyCount;
5079 VkCopyDescriptorSet* local_pDescriptorCopies;
5080 local_device = device;
5081 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005082 local_pDescriptorWrites = nullptr;
5083 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005084 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005085 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005086 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5087 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005088 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005089 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005090 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005091 local_descriptorCopyCount = descriptorCopyCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005092 local_pDescriptorCopies = nullptr;
5093 if (pDescriptorCopies)
5094 {
5095 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005096 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5097 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005098 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5099 }
5100 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005101 countingStream->rewind();
5102 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005103 uint64_t cgen_var_425;
5104 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5105 countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005106 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5107 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5108 {
5109 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5110 }
5111 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5112 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5113 {
5114 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005115 }
5116 }
5117 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5118 countingStream->rewind();
5119 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5120 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5121 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005122 uint64_t cgen_var_426;
5123 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_426, 1);
5124 stream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005125 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005126 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5127 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005128 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005129 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005130 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005131 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5132 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005133 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005134 }
5135}
5136
5137VkResult VkEncoder::vkCreateFramebuffer(
5138 VkDevice device,
5139 const VkFramebufferCreateInfo* pCreateInfo,
5140 const VkAllocationCallbacks* pAllocator,
5141 VkFramebuffer* pFramebuffer)
5142{
5143 auto stream = mImpl->stream();
5144 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005145 auto resources = mImpl->resources();
5146 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005147 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005148 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005149 VkFramebufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005150 VkAllocationCallbacks* local_pAllocator;
5151 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005152 local_pCreateInfo = nullptr;
5153 if (pCreateInfo)
5154 {
5155 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
5156 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
5157 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005158 local_pAllocator = nullptr;
5159 if (pAllocator)
5160 {
5161 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5162 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5163 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005164 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005165 countingStream->rewind();
5166 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005167 uint64_t cgen_var_427;
5168 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_427, 1);
5169 countingStream->write((uint64_t*)&cgen_var_427, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005170 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005171 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005172 uint64_t cgen_var_428 = (uint64_t)(uintptr_t)local_pAllocator;
5173 countingStream->putBe64(cgen_var_428);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005174 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005175 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005176 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005177 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005178 uint64_t cgen_var_429;
5179 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_429, 1);
5180 countingStream->write((uint64_t*)&cgen_var_429, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005181 }
5182 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5183 countingStream->rewind();
5184 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
5185 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
5186 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005187 uint64_t cgen_var_430;
5188 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_430, 1);
5189 stream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005190 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005191 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005192 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pAllocator;
5193 stream->putBe64(cgen_var_431);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005194 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005195 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005196 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005197 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005198 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005199 uint64_t cgen_var_432;
5200 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_432, 1);
5201 stream->write((uint64_t*)&cgen_var_432, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005202 stream->setHandleMapping(resources->unwrapMapping());
5203 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005204 uint64_t cgen_var_433;
5205 stream->read((uint64_t*)&cgen_var_433, 8);
5206 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_433, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005207 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005208 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
5209 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005210 countingStream->clearPool();
5211 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005212 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005213 return vkCreateFramebuffer_VkResult_return;
5214}
5215
5216void VkEncoder::vkDestroyFramebuffer(
5217 VkDevice device,
5218 VkFramebuffer framebuffer,
5219 const VkAllocationCallbacks* pAllocator)
5220{
5221 auto stream = mImpl->stream();
5222 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005223 auto resources = mImpl->resources();
5224 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005225 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005226 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005227 VkFramebuffer local_framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005228 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005229 local_device = device;
5230 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005231 local_pAllocator = nullptr;
5232 if (pAllocator)
5233 {
5234 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5235 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5236 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005237 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005238 countingStream->rewind();
5239 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005240 uint64_t cgen_var_434;
5241 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5242 countingStream->write((uint64_t*)&cgen_var_434, 1 * 8);
5243 uint64_t cgen_var_435;
5244 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_435, 1);
5245 countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005246 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005247 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
5248 countingStream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005249 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005250 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005251 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005252 }
5253 }
5254 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5255 countingStream->rewind();
5256 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
5257 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
5258 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005259 uint64_t cgen_var_437;
5260 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_437, 1);
5261 stream->write((uint64_t*)&cgen_var_437, 1 * 8);
5262 uint64_t cgen_var_438;
5263 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_438, 1);
5264 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005265 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005266 uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
5267 stream->putBe64(cgen_var_439);
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(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005271 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005272 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005273}
5274
5275VkResult VkEncoder::vkCreateRenderPass(
5276 VkDevice device,
5277 const VkRenderPassCreateInfo* pCreateInfo,
5278 const VkAllocationCallbacks* pAllocator,
5279 VkRenderPass* pRenderPass)
5280{
5281 auto stream = mImpl->stream();
5282 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005283 auto resources = mImpl->resources();
5284 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005285 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005286 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005287 VkRenderPassCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005288 VkAllocationCallbacks* local_pAllocator;
5289 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005290 local_pCreateInfo = nullptr;
5291 if (pCreateInfo)
5292 {
5293 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
5294 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
5295 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005296 local_pAllocator = nullptr;
5297 if (pAllocator)
5298 {
5299 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5300 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5301 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005302 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005303 countingStream->rewind();
5304 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005305 uint64_t cgen_var_440;
5306 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_440, 1);
5307 countingStream->write((uint64_t*)&cgen_var_440, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005308 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005309 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005310 uint64_t cgen_var_441 = (uint64_t)(uintptr_t)local_pAllocator;
5311 countingStream->putBe64(cgen_var_441);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005312 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005313 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005314 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005315 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005316 uint64_t cgen_var_442;
5317 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_442, 1);
5318 countingStream->write((uint64_t*)&cgen_var_442, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005319 }
5320 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5321 countingStream->rewind();
5322 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
5323 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
5324 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005325 uint64_t cgen_var_443;
5326 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_443, 1);
5327 stream->write((uint64_t*)&cgen_var_443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005328 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005329 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005330 uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
5331 stream->putBe64(cgen_var_444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005332 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005333 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005334 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005335 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005336 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005337 uint64_t cgen_var_445;
5338 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_445, 1);
5339 stream->write((uint64_t*)&cgen_var_445, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005340 stream->setHandleMapping(resources->unwrapMapping());
5341 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005342 uint64_t cgen_var_446;
5343 stream->read((uint64_t*)&cgen_var_446, 8);
5344 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_446, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005345 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005346 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
5347 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005348 countingStream->clearPool();
5349 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005350 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005351 return vkCreateRenderPass_VkResult_return;
5352}
5353
5354void VkEncoder::vkDestroyRenderPass(
5355 VkDevice device,
5356 VkRenderPass renderPass,
5357 const VkAllocationCallbacks* pAllocator)
5358{
5359 auto stream = mImpl->stream();
5360 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005361 auto resources = mImpl->resources();
5362 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005363 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005364 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005365 VkRenderPass local_renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005366 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005367 local_device = device;
5368 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005369 local_pAllocator = nullptr;
5370 if (pAllocator)
5371 {
5372 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5373 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5374 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005375 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005376 countingStream->rewind();
5377 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005378 uint64_t cgen_var_447;
5379 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_447, 1);
5380 countingStream->write((uint64_t*)&cgen_var_447, 1 * 8);
5381 uint64_t cgen_var_448;
5382 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_448, 1);
5383 countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005384 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005385 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
5386 countingStream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005387 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005388 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005389 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005390 }
5391 }
5392 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5393 countingStream->rewind();
5394 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
5395 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
5396 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005397 uint64_t cgen_var_450;
5398 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_450, 1);
5399 stream->write((uint64_t*)&cgen_var_450, 1 * 8);
5400 uint64_t cgen_var_451;
5401 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_451, 1);
5402 stream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005403 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005404 uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
5405 stream->putBe64(cgen_var_452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005406 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005407 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005408 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005409 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005410 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005411}
5412
5413void VkEncoder::vkGetRenderAreaGranularity(
5414 VkDevice device,
5415 VkRenderPass renderPass,
5416 VkExtent2D* pGranularity)
5417{
5418 auto stream = mImpl->stream();
5419 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005420 auto resources = mImpl->resources();
5421 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005422 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005423 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005424 VkRenderPass local_renderPass;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005425 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005426 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005427 countingStream->rewind();
5428 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005429 uint64_t cgen_var_453;
5430 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_453, 1);
5431 countingStream->write((uint64_t*)&cgen_var_453, 1 * 8);
5432 uint64_t cgen_var_454;
5433 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_454, 1);
5434 countingStream->write((uint64_t*)&cgen_var_454, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005435 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
5436 }
5437 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5438 countingStream->rewind();
5439 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
5440 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
5441 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005442 uint64_t cgen_var_455;
5443 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
5444 stream->write((uint64_t*)&cgen_var_455, 1 * 8);
5445 uint64_t cgen_var_456;
5446 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
5447 stream->write((uint64_t*)&cgen_var_456, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005448 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5449 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
5450}
5451
5452VkResult VkEncoder::vkCreateCommandPool(
5453 VkDevice device,
5454 const VkCommandPoolCreateInfo* pCreateInfo,
5455 const VkAllocationCallbacks* pAllocator,
5456 VkCommandPool* pCommandPool)
5457{
5458 auto stream = mImpl->stream();
5459 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005460 auto resources = mImpl->resources();
5461 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005462 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005463 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005464 VkCommandPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005465 VkAllocationCallbacks* local_pAllocator;
5466 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005467 local_pCreateInfo = nullptr;
5468 if (pCreateInfo)
5469 {
5470 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
5471 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
5472 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005473 local_pAllocator = nullptr;
5474 if (pAllocator)
5475 {
5476 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5477 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5478 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005479 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005480 countingStream->rewind();
5481 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005482 uint64_t cgen_var_457;
5483 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_457, 1);
5484 countingStream->write((uint64_t*)&cgen_var_457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005485 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005486 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005487 uint64_t cgen_var_458 = (uint64_t)(uintptr_t)local_pAllocator;
5488 countingStream->putBe64(cgen_var_458);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005489 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005490 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005491 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005492 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005493 uint64_t cgen_var_459;
5494 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_459, 1);
5495 countingStream->write((uint64_t*)&cgen_var_459, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005496 }
5497 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5498 countingStream->rewind();
5499 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
5500 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
5501 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005502 uint64_t cgen_var_460;
5503 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_460, 1);
5504 stream->write((uint64_t*)&cgen_var_460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005505 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005506 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005507 uint64_t cgen_var_461 = (uint64_t)(uintptr_t)local_pAllocator;
5508 stream->putBe64(cgen_var_461);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005509 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005510 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005511 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005512 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005513 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005514 uint64_t cgen_var_462;
5515 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_462, 1);
5516 stream->write((uint64_t*)&cgen_var_462, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005517 stream->setHandleMapping(resources->unwrapMapping());
5518 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005519 uint64_t cgen_var_463;
5520 stream->read((uint64_t*)&cgen_var_463, 8);
5521 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_463, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005522 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005523 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
5524 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005525 countingStream->clearPool();
5526 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005527 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005528 return vkCreateCommandPool_VkResult_return;
5529}
5530
5531void VkEncoder::vkDestroyCommandPool(
5532 VkDevice device,
5533 VkCommandPool commandPool,
5534 const VkAllocationCallbacks* pAllocator)
5535{
5536 auto stream = mImpl->stream();
5537 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005538 auto resources = mImpl->resources();
5539 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005540 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005541 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005542 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005543 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005544 local_device = device;
5545 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005546 local_pAllocator = nullptr;
5547 if (pAllocator)
5548 {
5549 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5550 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5551 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005552 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005553 countingStream->rewind();
5554 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005555 uint64_t cgen_var_464;
5556 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_464, 1);
5557 countingStream->write((uint64_t*)&cgen_var_464, 1 * 8);
5558 uint64_t cgen_var_465;
5559 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_465, 1);
5560 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005561 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005562 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
5563 countingStream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005564 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005565 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005566 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005567 }
5568 }
5569 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5570 countingStream->rewind();
5571 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
5572 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
5573 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005574 uint64_t cgen_var_467;
5575 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1);
5576 stream->write((uint64_t*)&cgen_var_467, 1 * 8);
5577 uint64_t cgen_var_468;
5578 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_468, 1);
5579 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005580 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005581 uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
5582 stream->putBe64(cgen_var_469);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005583 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005584 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005585 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005586 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005587 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005588}
5589
5590VkResult VkEncoder::vkResetCommandPool(
5591 VkDevice device,
5592 VkCommandPool commandPool,
5593 VkCommandPoolResetFlags flags)
5594{
5595 auto stream = mImpl->stream();
5596 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005597 auto resources = mImpl->resources();
5598 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005599 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005600 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005601 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005602 VkCommandPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005603 local_device = device;
5604 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005605 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005606 countingStream->rewind();
5607 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005608 uint64_t cgen_var_470;
5609 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_470, 1);
5610 countingStream->write((uint64_t*)&cgen_var_470, 1 * 8);
5611 uint64_t cgen_var_471;
5612 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_471, 1);
5613 countingStream->write((uint64_t*)&cgen_var_471, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005614 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005615 }
5616 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5617 countingStream->rewind();
5618 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
5619 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
5620 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005621 uint64_t cgen_var_472;
5622 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
5623 stream->write((uint64_t*)&cgen_var_472, 1 * 8);
5624 uint64_t cgen_var_473;
5625 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
5626 stream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005627 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005628 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
5629 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005630 countingStream->clearPool();
5631 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005632 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005633 return vkResetCommandPool_VkResult_return;
5634}
5635
5636VkResult VkEncoder::vkAllocateCommandBuffers(
5637 VkDevice device,
5638 const VkCommandBufferAllocateInfo* pAllocateInfo,
5639 VkCommandBuffer* pCommandBuffers)
5640{
5641 auto stream = mImpl->stream();
5642 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005643 auto resources = mImpl->resources();
5644 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005645 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005646 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005647 VkCommandBufferAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005648 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005649 local_pAllocateInfo = nullptr;
5650 if (pAllocateInfo)
5651 {
5652 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
5653 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
5654 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005655 countingStream->rewind();
5656 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005657 uint64_t cgen_var_474;
5658 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_474, 1);
5659 countingStream->write((uint64_t*)&cgen_var_474, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005660 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005661 if (pAllocateInfo->commandBufferCount)
5662 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005663 uint64_t* cgen_var_475;
5664 countingStream->alloc((void**)&cgen_var_475, pAllocateInfo->commandBufferCount * 8);
5665 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_475, pAllocateInfo->commandBufferCount);
5666 countingStream->write((uint64_t*)cgen_var_475, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005667 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005668 }
5669 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5670 countingStream->rewind();
5671 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
5672 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
5673 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005674 uint64_t cgen_var_476;
5675 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_476, 1);
5676 stream->write((uint64_t*)&cgen_var_476, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005677 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005678 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005679 if (pAllocateInfo->commandBufferCount)
5680 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005681 uint64_t* cgen_var_477;
5682 stream->alloc((void**)&cgen_var_477, pAllocateInfo->commandBufferCount * 8);
5683 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_477, pAllocateInfo->commandBufferCount);
5684 stream->write((uint64_t*)cgen_var_477, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005685 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005686 stream->setHandleMapping(resources->unwrapMapping());
5687 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005688 if (pAllocateInfo->commandBufferCount)
5689 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005690 uint64_t* cgen_var_478;
5691 stream->alloc((void**)&cgen_var_478, pAllocateInfo->commandBufferCount * 8);
5692 stream->read((uint64_t*)cgen_var_478, pAllocateInfo->commandBufferCount * 8);
5693 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_478, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005694 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005695 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005696 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
5697 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005698 countingStream->clearPool();
5699 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005700 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005701 return vkAllocateCommandBuffers_VkResult_return;
5702}
5703
5704void VkEncoder::vkFreeCommandBuffers(
5705 VkDevice device,
5706 VkCommandPool commandPool,
5707 uint32_t commandBufferCount,
5708 const VkCommandBuffer* pCommandBuffers)
5709{
5710 auto stream = mImpl->stream();
5711 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005712 auto resources = mImpl->resources();
5713 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005714 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005715 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005716 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005717 uint32_t local_commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005718 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005719 local_device = device;
5720 local_commandPool = commandPool;
5721 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005722 local_pCommandBuffers = nullptr;
5723 if (pCommandBuffers)
5724 {
5725 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
5726 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005727 countingStream->rewind();
5728 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005729 uint64_t cgen_var_479;
5730 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_479, 1);
5731 countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
5732 uint64_t cgen_var_480;
5733 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_480, 1);
5734 countingStream->write((uint64_t*)&cgen_var_480, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005735 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005736 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005737 uint64_t cgen_var_481 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5738 countingStream->putBe64(cgen_var_481);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005739 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005740 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005741 if (((commandBufferCount)))
5742 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005743 uint64_t* cgen_var_482;
5744 countingStream->alloc((void**)&cgen_var_482, ((commandBufferCount)) * 8);
5745 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_482, ((commandBufferCount)));
5746 countingStream->write((uint64_t*)cgen_var_482, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005747 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005748 }
5749 }
5750 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5751 countingStream->rewind();
5752 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
5753 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
5754 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005755 uint64_t cgen_var_483;
5756 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_483, 1);
5757 stream->write((uint64_t*)&cgen_var_483, 1 * 8);
5758 uint64_t cgen_var_484;
5759 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_484, 1);
5760 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005761 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005762 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005763 uint64_t cgen_var_485 = (uint64_t)(uintptr_t)local_pCommandBuffers;
5764 stream->putBe64(cgen_var_485);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005765 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005766 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005767 if (((commandBufferCount)))
5768 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005769 uint64_t* cgen_var_486;
5770 stream->alloc((void**)&cgen_var_486, ((commandBufferCount)) * 8);
5771 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_486, ((commandBufferCount)));
5772 stream->write((uint64_t*)cgen_var_486, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005773 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005774 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005775 if (pCommandBuffers)
5776 {
5777 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
5778 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005779}
5780
5781VkResult VkEncoder::vkBeginCommandBuffer(
5782 VkCommandBuffer commandBuffer,
5783 const VkCommandBufferBeginInfo* pBeginInfo)
5784{
5785 auto stream = mImpl->stream();
5786 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005787 auto resources = mImpl->resources();
5788 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005789 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005790 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005791 VkCommandBufferBeginInfo* local_pBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005792 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005793 local_pBeginInfo = nullptr;
5794 if (pBeginInfo)
5795 {
5796 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
5797 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
5798 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005799 countingStream->rewind();
5800 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005801 uint64_t cgen_var_487;
5802 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_487, 1);
5803 countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005804 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005805 }
5806 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5807 countingStream->rewind();
5808 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
5809 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
5810 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005811 uint64_t cgen_var_488;
5812 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_488, 1);
5813 stream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005814 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005815 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
5816 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005817 countingStream->clearPool();
5818 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005819 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005820 return vkBeginCommandBuffer_VkResult_return;
5821}
5822
5823VkResult VkEncoder::vkEndCommandBuffer(
5824 VkCommandBuffer commandBuffer)
5825{
5826 auto stream = mImpl->stream();
5827 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005828 auto resources = mImpl->resources();
5829 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005830 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005831 VkCommandBuffer local_commandBuffer;
5832 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005833 countingStream->rewind();
5834 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005835 uint64_t cgen_var_489;
5836 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_489, 1);
5837 countingStream->write((uint64_t*)&cgen_var_489, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005838 }
5839 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5840 countingStream->rewind();
5841 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
5842 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
5843 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005844 uint64_t cgen_var_490;
5845 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_490, 1);
5846 stream->write((uint64_t*)&cgen_var_490, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005847 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
5848 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005849 countingStream->clearPool();
5850 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005851 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005852 return vkEndCommandBuffer_VkResult_return;
5853}
5854
5855VkResult VkEncoder::vkResetCommandBuffer(
5856 VkCommandBuffer commandBuffer,
5857 VkCommandBufferResetFlags flags)
5858{
5859 auto stream = mImpl->stream();
5860 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005861 auto resources = mImpl->resources();
5862 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005863 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005864 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005865 VkCommandBufferResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005866 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005867 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005868 countingStream->rewind();
5869 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005870 uint64_t cgen_var_491;
5871 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_491, 1);
5872 countingStream->write((uint64_t*)&cgen_var_491, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005873 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005874 }
5875 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5876 countingStream->rewind();
5877 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
5878 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
5879 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005880 uint64_t cgen_var_492;
5881 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_492, 1);
5882 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005883 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005884 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
5885 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005886 countingStream->clearPool();
5887 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005888 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005889 return vkResetCommandBuffer_VkResult_return;
5890}
5891
5892void VkEncoder::vkCmdBindPipeline(
5893 VkCommandBuffer commandBuffer,
5894 VkPipelineBindPoint pipelineBindPoint,
5895 VkPipeline pipeline)
5896{
5897 auto stream = mImpl->stream();
5898 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005899 auto resources = mImpl->resources();
5900 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005901 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005902 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005903 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005904 VkPipeline local_pipeline;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005905 local_commandBuffer = commandBuffer;
5906 local_pipelineBindPoint = pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005907 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005908 countingStream->rewind();
5909 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005910 uint64_t cgen_var_493;
5911 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_493, 1);
5912 countingStream->write((uint64_t*)&cgen_var_493, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005913 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005914 uint64_t cgen_var_494;
5915 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_494, 1);
5916 countingStream->write((uint64_t*)&cgen_var_494, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005917 }
5918 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5919 countingStream->rewind();
5920 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
5921 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
5922 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005923 uint64_t cgen_var_495;
5924 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
5925 stream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005926 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005927 uint64_t cgen_var_496;
5928 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_496, 1);
5929 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005930}
5931
5932void VkEncoder::vkCmdSetViewport(
5933 VkCommandBuffer commandBuffer,
5934 uint32_t firstViewport,
5935 uint32_t viewportCount,
5936 const VkViewport* pViewports)
5937{
5938 auto stream = mImpl->stream();
5939 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005940 auto resources = mImpl->resources();
5941 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005942 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005943 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005944 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005945 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005946 VkViewport* local_pViewports;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005947 local_commandBuffer = commandBuffer;
5948 local_firstViewport = firstViewport;
5949 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005950 local_pViewports = nullptr;
5951 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005952 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005953 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005954 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5955 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005956 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
5957 }
5958 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005959 countingStream->rewind();
5960 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005961 uint64_t cgen_var_497;
5962 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
5963 countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005964 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5965 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
5966 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5967 {
5968 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005969 }
5970 }
5971 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5972 countingStream->rewind();
5973 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
5974 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
5975 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08005976 uint64_t cgen_var_498;
5977 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
5978 stream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005979 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
5980 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005981 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
5982 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005983 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005984 }
5985}
5986
5987void VkEncoder::vkCmdSetScissor(
5988 VkCommandBuffer commandBuffer,
5989 uint32_t firstScissor,
5990 uint32_t scissorCount,
5991 const VkRect2D* pScissors)
5992{
5993 auto stream = mImpl->stream();
5994 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005995 auto resources = mImpl->resources();
5996 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005997 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005998 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005999 uint32_t local_firstScissor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006000 uint32_t local_scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006001 VkRect2D* local_pScissors;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006002 local_commandBuffer = commandBuffer;
6003 local_firstScissor = firstScissor;
6004 local_scissorCount = scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006005 local_pScissors = nullptr;
6006 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006007 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006008 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006009 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6010 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006011 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
6012 }
6013 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006014 countingStream->rewind();
6015 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006016 uint64_t cgen_var_499;
6017 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6018 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006019 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6020 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
6021 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6022 {
6023 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006024 }
6025 }
6026 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6027 countingStream->rewind();
6028 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
6029 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
6030 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006031 uint64_t cgen_var_500;
6032 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6033 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006034 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
6035 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006036 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
6037 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006038 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006039 }
6040}
6041
6042void VkEncoder::vkCmdSetLineWidth(
6043 VkCommandBuffer commandBuffer,
6044 float lineWidth)
6045{
6046 auto stream = mImpl->stream();
6047 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006048 auto resources = mImpl->resources();
6049 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006050 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006051 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006052 float local_lineWidth;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006053 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006054 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006055 countingStream->rewind();
6056 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006057 uint64_t cgen_var_501;
6058 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6059 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006060 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006061 }
6062 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6063 countingStream->rewind();
6064 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
6065 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
6066 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006067 uint64_t cgen_var_502;
6068 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1);
6069 stream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006070 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006071}
6072
6073void VkEncoder::vkCmdSetDepthBias(
6074 VkCommandBuffer commandBuffer,
6075 float depthBiasConstantFactor,
6076 float depthBiasClamp,
6077 float depthBiasSlopeFactor)
6078{
6079 auto stream = mImpl->stream();
6080 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006081 auto resources = mImpl->resources();
6082 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006083 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006084 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006085 float local_depthBiasConstantFactor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006086 float local_depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006087 float local_depthBiasSlopeFactor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006088 local_commandBuffer = commandBuffer;
6089 local_depthBiasConstantFactor = depthBiasConstantFactor;
6090 local_depthBiasClamp = depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006091 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006092 countingStream->rewind();
6093 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006094 uint64_t cgen_var_503;
6095 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6096 countingStream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006097 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6098 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
6099 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006100 }
6101 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6102 countingStream->rewind();
6103 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
6104 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
6105 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006106 uint64_t cgen_var_504;
6107 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1);
6108 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006109 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
6110 stream->write((float*)&local_depthBiasClamp, sizeof(float));
6111 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006112}
6113
6114void VkEncoder::vkCmdSetBlendConstants(
6115 VkCommandBuffer commandBuffer,
6116 const float blendConstants)
6117{
6118 auto stream = mImpl->stream();
6119 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006120 auto resources = mImpl->resources();
6121 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006122 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006123 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006124 float local_blendConstants[4];
Lingfeng Yang9666b852018-11-13 23:09:59 -08006125 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006126 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006127 countingStream->rewind();
6128 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006129 uint64_t cgen_var_505;
6130 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6131 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006132 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006133 }
6134 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6135 countingStream->rewind();
6136 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
6137 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
6138 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006139 uint64_t cgen_var_506;
6140 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6141 stream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006142 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006143}
6144
6145void VkEncoder::vkCmdSetDepthBounds(
6146 VkCommandBuffer commandBuffer,
6147 float minDepthBounds,
6148 float maxDepthBounds)
6149{
6150 auto stream = mImpl->stream();
6151 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006152 auto resources = mImpl->resources();
6153 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006154 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006155 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006156 float local_minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006157 float local_maxDepthBounds;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006158 local_commandBuffer = commandBuffer;
6159 local_minDepthBounds = minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006160 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006161 countingStream->rewind();
6162 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006163 uint64_t cgen_var_507;
6164 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6165 countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006166 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
6167 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006168 }
6169 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6170 countingStream->rewind();
6171 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
6172 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
6173 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006174 uint64_t cgen_var_508;
6175 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
6176 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006177 stream->write((float*)&local_minDepthBounds, sizeof(float));
6178 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006179}
6180
6181void VkEncoder::vkCmdSetStencilCompareMask(
6182 VkCommandBuffer commandBuffer,
6183 VkStencilFaceFlags faceMask,
6184 uint32_t compareMask)
6185{
6186 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 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006192 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006193 uint32_t local_compareMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006194 local_commandBuffer = commandBuffer;
6195 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006196 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006197 countingStream->rewind();
6198 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006199 uint64_t cgen_var_509;
6200 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6201 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006202 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6203 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006204 }
6205 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6206 countingStream->rewind();
6207 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
6208 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
6209 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006210 uint64_t cgen_var_510;
6211 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
6212 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006213 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6214 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006215}
6216
6217void VkEncoder::vkCmdSetStencilWriteMask(
6218 VkCommandBuffer commandBuffer,
6219 VkStencilFaceFlags faceMask,
6220 uint32_t writeMask)
6221{
6222 auto stream = mImpl->stream();
6223 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006224 auto resources = mImpl->resources();
6225 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006226 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006227 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006228 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006229 uint32_t local_writeMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006230 local_commandBuffer = commandBuffer;
6231 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006232 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006233 countingStream->rewind();
6234 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006235 uint64_t cgen_var_511;
6236 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
6237 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006238 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6239 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006240 }
6241 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6242 countingStream->rewind();
6243 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
6244 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
6245 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006246 uint64_t cgen_var_512;
6247 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
6248 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006249 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6250 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006251}
6252
6253void VkEncoder::vkCmdSetStencilReference(
6254 VkCommandBuffer commandBuffer,
6255 VkStencilFaceFlags faceMask,
6256 uint32_t reference)
6257{
6258 auto stream = mImpl->stream();
6259 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006260 auto resources = mImpl->resources();
6261 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006262 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006263 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006264 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006265 uint32_t local_reference;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006266 local_commandBuffer = commandBuffer;
6267 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006268 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006269 countingStream->rewind();
6270 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006271 uint64_t cgen_var_513;
6272 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
6273 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006274 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6275 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006276 }
6277 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6278 countingStream->rewind();
6279 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
6280 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
6281 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006282 uint64_t cgen_var_514;
6283 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
6284 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006285 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
6286 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006287}
6288
6289void VkEncoder::vkCmdBindDescriptorSets(
6290 VkCommandBuffer commandBuffer,
6291 VkPipelineBindPoint pipelineBindPoint,
6292 VkPipelineLayout layout,
6293 uint32_t firstSet,
6294 uint32_t descriptorSetCount,
6295 const VkDescriptorSet* pDescriptorSets,
6296 uint32_t dynamicOffsetCount,
6297 const uint32_t* pDynamicOffsets)
6298{
6299 auto stream = mImpl->stream();
6300 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006301 auto resources = mImpl->resources();
6302 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006303 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006304 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006305 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006306 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006307 uint32_t local_firstSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006308 uint32_t local_descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006309 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006310 uint32_t local_dynamicOffsetCount;
6311 uint32_t* local_pDynamicOffsets;
6312 local_commandBuffer = commandBuffer;
6313 local_pipelineBindPoint = pipelineBindPoint;
6314 local_layout = layout;
6315 local_firstSet = firstSet;
6316 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006317 local_pDescriptorSets = nullptr;
6318 if (pDescriptorSets)
6319 {
6320 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
6321 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006322 local_dynamicOffsetCount = dynamicOffsetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006323 local_pDynamicOffsets = nullptr;
6324 if (pDynamicOffsets)
6325 {
6326 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
6327 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006328 countingStream->rewind();
6329 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006330 uint64_t cgen_var_515;
6331 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
6332 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006333 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006334 uint64_t cgen_var_516;
6335 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_516, 1);
6336 countingStream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006337 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6338 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006339 if (((descriptorSetCount)))
6340 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006341 uint64_t* cgen_var_517;
6342 countingStream->alloc((void**)&cgen_var_517, ((descriptorSetCount)) * 8);
6343 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_517, ((descriptorSetCount)));
6344 countingStream->write((uint64_t*)cgen_var_517, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006345 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006346 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6347 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006348 }
6349 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6350 countingStream->rewind();
6351 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
6352 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
6353 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006354 uint64_t cgen_var_518;
6355 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
6356 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006357 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006358 uint64_t cgen_var_519;
6359 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_519, 1);
6360 stream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006361 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
6362 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006363 if (((descriptorSetCount)))
6364 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006365 uint64_t* cgen_var_520;
6366 stream->alloc((void**)&cgen_var_520, ((descriptorSetCount)) * 8);
6367 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_520, ((descriptorSetCount)));
6368 stream->write((uint64_t*)cgen_var_520, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006369 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006370 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
6371 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006372}
6373
6374void VkEncoder::vkCmdBindIndexBuffer(
6375 VkCommandBuffer commandBuffer,
6376 VkBuffer buffer,
6377 VkDeviceSize offset,
6378 VkIndexType indexType)
6379{
6380 auto stream = mImpl->stream();
6381 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006382 auto resources = mImpl->resources();
6383 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006384 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006385 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006386 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006387 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006388 VkIndexType local_indexType;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006389 local_commandBuffer = commandBuffer;
6390 local_buffer = buffer;
6391 local_offset = offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006392 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006393 countingStream->rewind();
6394 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006395 uint64_t cgen_var_521;
6396 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
6397 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
6398 uint64_t cgen_var_522;
6399 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_522, 1);
6400 countingStream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006401 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6402 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006403 }
6404 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6405 countingStream->rewind();
6406 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
6407 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
6408 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006409 uint64_t cgen_var_523;
6410 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
6411 stream->write((uint64_t*)&cgen_var_523, 1 * 8);
6412 uint64_t cgen_var_524;
6413 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_524, 1);
6414 stream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006415 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6416 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006417}
6418
6419void VkEncoder::vkCmdBindVertexBuffers(
6420 VkCommandBuffer commandBuffer,
6421 uint32_t firstBinding,
6422 uint32_t bindingCount,
6423 const VkBuffer* pBuffers,
6424 const VkDeviceSize* pOffsets)
6425{
6426 auto stream = mImpl->stream();
6427 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006428 auto resources = mImpl->resources();
6429 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006430 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006431 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006432 uint32_t local_firstBinding;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006433 uint32_t local_bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006434 VkBuffer* local_pBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006435 VkDeviceSize* local_pOffsets;
6436 local_commandBuffer = commandBuffer;
6437 local_firstBinding = firstBinding;
6438 local_bindingCount = bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006439 local_pBuffers = nullptr;
6440 if (pBuffers)
6441 {
6442 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
6443 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006444 local_pOffsets = nullptr;
6445 if (pOffsets)
6446 {
6447 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
6448 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006449 countingStream->rewind();
6450 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006451 uint64_t cgen_var_525;
6452 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_525, 1);
6453 countingStream->write((uint64_t*)&cgen_var_525, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006454 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6455 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006456 if (((bindingCount)))
6457 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006458 uint64_t* cgen_var_526;
6459 countingStream->alloc((void**)&cgen_var_526, ((bindingCount)) * 8);
6460 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_526, ((bindingCount)));
6461 countingStream->write((uint64_t*)cgen_var_526, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006462 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006463 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006464 }
6465 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6466 countingStream->rewind();
6467 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
6468 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
6469 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006470 uint64_t cgen_var_527;
6471 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1);
6472 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006473 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
6474 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006475 if (((bindingCount)))
6476 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006477 uint64_t* cgen_var_528;
6478 stream->alloc((void**)&cgen_var_528, ((bindingCount)) * 8);
6479 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_528, ((bindingCount)));
6480 stream->write((uint64_t*)cgen_var_528, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006481 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006482 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006483}
6484
6485void VkEncoder::vkCmdDraw(
6486 VkCommandBuffer commandBuffer,
6487 uint32_t vertexCount,
6488 uint32_t instanceCount,
6489 uint32_t firstVertex,
6490 uint32_t firstInstance)
6491{
6492 auto stream = mImpl->stream();
6493 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006494 auto resources = mImpl->resources();
6495 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006496 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006497 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006498 uint32_t local_vertexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006499 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006500 uint32_t local_firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006501 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006502 local_commandBuffer = commandBuffer;
6503 local_vertexCount = vertexCount;
6504 local_instanceCount = instanceCount;
6505 local_firstVertex = firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006506 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006507 countingStream->rewind();
6508 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006509 uint64_t cgen_var_529;
6510 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
6511 countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006512 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6513 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6514 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6515 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006516 }
6517 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6518 countingStream->rewind();
6519 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
6520 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
6521 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006522 uint64_t cgen_var_530;
6523 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1);
6524 stream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006525 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
6526 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6527 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
6528 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006529}
6530
6531void VkEncoder::vkCmdDrawIndexed(
6532 VkCommandBuffer commandBuffer,
6533 uint32_t indexCount,
6534 uint32_t instanceCount,
6535 uint32_t firstIndex,
6536 int32_t vertexOffset,
6537 uint32_t firstInstance)
6538{
6539 auto stream = mImpl->stream();
6540 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006541 auto resources = mImpl->resources();
6542 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006543 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006544 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006545 uint32_t local_indexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006546 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006547 uint32_t local_firstIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006548 int32_t local_vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006549 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006550 local_commandBuffer = commandBuffer;
6551 local_indexCount = indexCount;
6552 local_instanceCount = instanceCount;
6553 local_firstIndex = firstIndex;
6554 local_vertexOffset = vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006555 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006556 countingStream->rewind();
6557 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006558 uint64_t cgen_var_531;
6559 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
6560 countingStream->write((uint64_t*)&cgen_var_531, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006561 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6562 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6563 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6564 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6565 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006566 }
6567 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6568 countingStream->rewind();
6569 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
6570 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
6571 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006572 uint64_t cgen_var_532;
6573 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_532, 1);
6574 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006575 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
6576 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
6577 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
6578 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
6579 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006580}
6581
6582void VkEncoder::vkCmdDrawIndirect(
6583 VkCommandBuffer commandBuffer,
6584 VkBuffer buffer,
6585 VkDeviceSize offset,
6586 uint32_t drawCount,
6587 uint32_t stride)
6588{
6589 auto stream = mImpl->stream();
6590 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006591 auto resources = mImpl->resources();
6592 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006593 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006594 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006595 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006596 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006597 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006598 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006599 local_commandBuffer = commandBuffer;
6600 local_buffer = buffer;
6601 local_offset = offset;
6602 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006603 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006604 countingStream->rewind();
6605 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006606 uint64_t cgen_var_533;
6607 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
6608 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
6609 uint64_t cgen_var_534;
6610 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_534, 1);
6611 countingStream->write((uint64_t*)&cgen_var_534, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006612 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6613 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6614 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006615 }
6616 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6617 countingStream->rewind();
6618 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
6619 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
6620 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006621 uint64_t cgen_var_535;
6622 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
6623 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
6624 uint64_t cgen_var_536;
6625 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_536, 1);
6626 stream->write((uint64_t*)&cgen_var_536, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006627 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6628 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6629 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006630}
6631
6632void VkEncoder::vkCmdDrawIndexedIndirect(
6633 VkCommandBuffer commandBuffer,
6634 VkBuffer buffer,
6635 VkDeviceSize offset,
6636 uint32_t drawCount,
6637 uint32_t stride)
6638{
6639 auto stream = mImpl->stream();
6640 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006641 auto resources = mImpl->resources();
6642 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006643 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006644 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006645 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006646 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006647 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006648 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006649 local_commandBuffer = commandBuffer;
6650 local_buffer = buffer;
6651 local_offset = offset;
6652 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006653 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006654 countingStream->rewind();
6655 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006656 uint64_t cgen_var_537;
6657 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
6658 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
6659 uint64_t cgen_var_538;
6660 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_538, 1);
6661 countingStream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006662 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6663 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6664 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006665 }
6666 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6667 countingStream->rewind();
6668 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
6669 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
6670 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006671 uint64_t cgen_var_539;
6672 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
6673 stream->write((uint64_t*)&cgen_var_539, 1 * 8);
6674 uint64_t cgen_var_540;
6675 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_540, 1);
6676 stream->write((uint64_t*)&cgen_var_540, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006677 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
6678 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
6679 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006680}
6681
6682void VkEncoder::vkCmdDispatch(
6683 VkCommandBuffer commandBuffer,
6684 uint32_t groupCountX,
6685 uint32_t groupCountY,
6686 uint32_t groupCountZ)
6687{
6688 auto stream = mImpl->stream();
6689 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006690 auto resources = mImpl->resources();
6691 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006692 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006693 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006694 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006695 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006696 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006697 local_commandBuffer = commandBuffer;
6698 local_groupCountX = groupCountX;
6699 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006700 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006701 countingStream->rewind();
6702 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006703 uint64_t cgen_var_541;
6704 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
6705 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006706 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6707 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6708 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006709 }
6710 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6711 countingStream->rewind();
6712 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
6713 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
6714 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006715 uint64_t cgen_var_542;
6716 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1);
6717 stream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006718 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
6719 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
6720 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006721}
6722
6723void VkEncoder::vkCmdDispatchIndirect(
6724 VkCommandBuffer commandBuffer,
6725 VkBuffer buffer,
6726 VkDeviceSize offset)
6727{
6728 auto stream = mImpl->stream();
6729 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006730 auto resources = mImpl->resources();
6731 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006732 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006733 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006734 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006735 VkDeviceSize local_offset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006736 local_commandBuffer = commandBuffer;
6737 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006738 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006739 countingStream->rewind();
6740 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006741 uint64_t cgen_var_543;
6742 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
6743 countingStream->write((uint64_t*)&cgen_var_543, 1 * 8);
6744 uint64_t cgen_var_544;
6745 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
6746 countingStream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006747 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006748 }
6749 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6750 countingStream->rewind();
6751 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
6752 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
6753 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006754 uint64_t cgen_var_545;
6755 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
6756 stream->write((uint64_t*)&cgen_var_545, 1 * 8);
6757 uint64_t cgen_var_546;
6758 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
6759 stream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006760 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006761}
6762
6763void VkEncoder::vkCmdCopyBuffer(
6764 VkCommandBuffer commandBuffer,
6765 VkBuffer srcBuffer,
6766 VkBuffer dstBuffer,
6767 uint32_t regionCount,
6768 const VkBufferCopy* pRegions)
6769{
6770 auto stream = mImpl->stream();
6771 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006772 auto resources = mImpl->resources();
6773 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006774 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006775 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006776 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006777 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006778 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006779 VkBufferCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006780 local_commandBuffer = commandBuffer;
6781 local_srcBuffer = srcBuffer;
6782 local_dstBuffer = dstBuffer;
6783 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006784 local_pRegions = nullptr;
6785 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006786 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006787 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006788 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6789 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006790 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
6791 }
6792 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006793 countingStream->rewind();
6794 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006795 uint64_t cgen_var_547;
6796 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
6797 countingStream->write((uint64_t*)&cgen_var_547, 1 * 8);
6798 uint64_t cgen_var_548;
6799 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_548, 1);
6800 countingStream->write((uint64_t*)&cgen_var_548, 1 * 8);
6801 uint64_t cgen_var_549;
6802 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_549, 1);
6803 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006804 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6805 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6806 {
6807 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006808 }
6809 }
6810 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6811 countingStream->rewind();
6812 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
6813 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
6814 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006815 uint64_t cgen_var_550;
6816 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
6817 stream->write((uint64_t*)&cgen_var_550, 1 * 8);
6818 uint64_t cgen_var_551;
6819 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_551, 1);
6820 stream->write((uint64_t*)&cgen_var_551, 1 * 8);
6821 uint64_t cgen_var_552;
6822 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_552, 1);
6823 stream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006824 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006825 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6826 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006827 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006828 }
6829}
6830
6831void VkEncoder::vkCmdCopyImage(
6832 VkCommandBuffer commandBuffer,
6833 VkImage srcImage,
6834 VkImageLayout srcImageLayout,
6835 VkImage dstImage,
6836 VkImageLayout dstImageLayout,
6837 uint32_t regionCount,
6838 const VkImageCopy* pRegions)
6839{
6840 auto stream = mImpl->stream();
6841 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006842 auto resources = mImpl->resources();
6843 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006844 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006845 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006846 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006847 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006848 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006849 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006850 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006851 VkImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006852 local_commandBuffer = commandBuffer;
6853 local_srcImage = srcImage;
6854 local_srcImageLayout = srcImageLayout;
6855 local_dstImage = dstImage;
6856 local_dstImageLayout = dstImageLayout;
6857 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006858 local_pRegions = nullptr;
6859 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006860 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006861 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006862 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6863 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006864 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
6865 }
6866 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006867 countingStream->rewind();
6868 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006869 uint64_t cgen_var_553;
6870 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
6871 countingStream->write((uint64_t*)&cgen_var_553, 1 * 8);
6872 uint64_t cgen_var_554;
6873 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_554, 1);
6874 countingStream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006875 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006876 uint64_t cgen_var_555;
6877 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_555, 1);
6878 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006879 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6880 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6881 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6882 {
6883 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006884 }
6885 }
6886 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6887 countingStream->rewind();
6888 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
6889 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
6890 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006891 uint64_t cgen_var_556;
6892 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_556, 1);
6893 stream->write((uint64_t*)&cgen_var_556, 1 * 8);
6894 uint64_t cgen_var_557;
6895 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_557, 1);
6896 stream->write((uint64_t*)&cgen_var_557, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006897 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006898 uint64_t cgen_var_558;
6899 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_558, 1);
6900 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006901 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6902 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006903 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6904 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006905 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006906 }
6907}
6908
6909void VkEncoder::vkCmdBlitImage(
6910 VkCommandBuffer commandBuffer,
6911 VkImage srcImage,
6912 VkImageLayout srcImageLayout,
6913 VkImage dstImage,
6914 VkImageLayout dstImageLayout,
6915 uint32_t regionCount,
6916 const VkImageBlit* pRegions,
6917 VkFilter filter)
6918{
6919 auto stream = mImpl->stream();
6920 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006921 auto resources = mImpl->resources();
6922 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006923 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006924 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006925 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006926 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006927 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006928 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006929 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006930 VkImageBlit* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006931 VkFilter local_filter;
6932 local_commandBuffer = commandBuffer;
6933 local_srcImage = srcImage;
6934 local_srcImageLayout = srcImageLayout;
6935 local_dstImage = dstImage;
6936 local_dstImageLayout = dstImageLayout;
6937 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006938 local_pRegions = nullptr;
6939 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006940 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006941 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006942 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6943 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006944 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006945 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006946 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006947 local_filter = filter;
6948 countingStream->rewind();
6949 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006950 uint64_t cgen_var_559;
6951 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_559, 1);
6952 countingStream->write((uint64_t*)&cgen_var_559, 1 * 8);
6953 uint64_t cgen_var_560;
6954 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_560, 1);
6955 countingStream->write((uint64_t*)&cgen_var_560, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006956 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006957 uint64_t cgen_var_561;
6958 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_561, 1);
6959 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006960 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6961 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
6962 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6963 {
6964 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
6965 }
6966 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006967 }
6968 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6969 countingStream->rewind();
6970 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
6971 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
6972 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006973 uint64_t cgen_var_562;
6974 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_562, 1);
6975 stream->write((uint64_t*)&cgen_var_562, 1 * 8);
6976 uint64_t cgen_var_563;
6977 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_563, 1);
6978 stream->write((uint64_t*)&cgen_var_563, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08006979 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08006980 uint64_t cgen_var_564;
6981 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_564, 1);
6982 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006983 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
6984 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006985 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
6986 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006987 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006988 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006989 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006990}
6991
6992void VkEncoder::vkCmdCopyBufferToImage(
6993 VkCommandBuffer commandBuffer,
6994 VkBuffer srcBuffer,
6995 VkImage dstImage,
6996 VkImageLayout dstImageLayout,
6997 uint32_t regionCount,
6998 const VkBufferImageCopy* pRegions)
6999{
7000 auto stream = mImpl->stream();
7001 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007002 auto resources = mImpl->resources();
7003 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007004 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007005 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007006 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007007 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007008 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007009 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007010 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007011 local_commandBuffer = commandBuffer;
7012 local_srcBuffer = srcBuffer;
7013 local_dstImage = dstImage;
7014 local_dstImageLayout = dstImageLayout;
7015 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007016 local_pRegions = nullptr;
7017 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007018 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007019 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007020 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7021 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007022 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7023 }
7024 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007025 countingStream->rewind();
7026 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007027 uint64_t cgen_var_565;
7028 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_565, 1);
7029 countingStream->write((uint64_t*)&cgen_var_565, 1 * 8);
7030 uint64_t cgen_var_566;
7031 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_566, 1);
7032 countingStream->write((uint64_t*)&cgen_var_566, 1 * 8);
7033 uint64_t cgen_var_567;
7034 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_567, 1);
7035 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007036 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7037 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7038 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7039 {
7040 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007041 }
7042 }
7043 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7044 countingStream->rewind();
7045 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
7046 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
7047 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007048 uint64_t cgen_var_568;
7049 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_568, 1);
7050 stream->write((uint64_t*)&cgen_var_568, 1 * 8);
7051 uint64_t cgen_var_569;
7052 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_569, 1);
7053 stream->write((uint64_t*)&cgen_var_569, 1 * 8);
7054 uint64_t cgen_var_570;
7055 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_570, 1);
7056 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007057 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7058 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007059 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7060 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007061 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007062 }
7063}
7064
7065void VkEncoder::vkCmdCopyImageToBuffer(
7066 VkCommandBuffer commandBuffer,
7067 VkImage srcImage,
7068 VkImageLayout srcImageLayout,
7069 VkBuffer dstBuffer,
7070 uint32_t regionCount,
7071 const VkBufferImageCopy* pRegions)
7072{
7073 auto stream = mImpl->stream();
7074 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007075 auto resources = mImpl->resources();
7076 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007077 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007078 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007079 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007080 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007081 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007082 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007083 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007084 local_commandBuffer = commandBuffer;
7085 local_srcImage = srcImage;
7086 local_srcImageLayout = srcImageLayout;
7087 local_dstBuffer = dstBuffer;
7088 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007089 local_pRegions = nullptr;
7090 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007091 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007092 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007093 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7094 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007095 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
7096 }
7097 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007098 countingStream->rewind();
7099 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007100 uint64_t cgen_var_571;
7101 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_571, 1);
7102 countingStream->write((uint64_t*)&cgen_var_571, 1 * 8);
7103 uint64_t cgen_var_572;
7104 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_572, 1);
7105 countingStream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007106 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007107 uint64_t cgen_var_573;
7108 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_573, 1);
7109 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007110 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7111 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7112 {
7113 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007114 }
7115 }
7116 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7117 countingStream->rewind();
7118 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
7119 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
7120 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007121 uint64_t cgen_var_574;
7122 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1);
7123 stream->write((uint64_t*)&cgen_var_574, 1 * 8);
7124 uint64_t cgen_var_575;
7125 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_575, 1);
7126 stream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007127 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007128 uint64_t cgen_var_576;
7129 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_576, 1);
7130 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007131 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007132 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7133 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007134 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007135 }
7136}
7137
7138void VkEncoder::vkCmdUpdateBuffer(
7139 VkCommandBuffer commandBuffer,
7140 VkBuffer dstBuffer,
7141 VkDeviceSize dstOffset,
7142 VkDeviceSize dataSize,
7143 const void* pData)
7144{
7145 auto stream = mImpl->stream();
7146 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007147 auto resources = mImpl->resources();
7148 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007149 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007150 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007151 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007152 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007153 VkDeviceSize local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007154 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007155 local_commandBuffer = commandBuffer;
7156 local_dstBuffer = dstBuffer;
7157 local_dstOffset = dstOffset;
7158 local_dataSize = dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007159 local_pData = nullptr;
7160 if (pData)
7161 {
7162 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
7163 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007164 countingStream->rewind();
7165 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007166 uint64_t cgen_var_577;
7167 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_577, 1);
7168 countingStream->write((uint64_t*)&cgen_var_577, 1 * 8);
7169 uint64_t cgen_var_578;
7170 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_578, 1);
7171 countingStream->write((uint64_t*)&cgen_var_578, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007172 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7173 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7174 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007175 }
7176 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7177 countingStream->rewind();
7178 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
7179 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
7180 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007181 uint64_t cgen_var_579;
7182 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
7183 stream->write((uint64_t*)&cgen_var_579, 1 * 8);
7184 uint64_t cgen_var_580;
7185 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_580, 1);
7186 stream->write((uint64_t*)&cgen_var_580, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007187 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7188 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
7189 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007190}
7191
7192void VkEncoder::vkCmdFillBuffer(
7193 VkCommandBuffer commandBuffer,
7194 VkBuffer dstBuffer,
7195 VkDeviceSize dstOffset,
7196 VkDeviceSize size,
7197 uint32_t data)
7198{
7199 auto stream = mImpl->stream();
7200 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007201 auto resources = mImpl->resources();
7202 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007203 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007204 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007205 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007206 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007207 VkDeviceSize local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007208 uint32_t local_data;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007209 local_commandBuffer = commandBuffer;
7210 local_dstBuffer = dstBuffer;
7211 local_dstOffset = dstOffset;
7212 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007213 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007214 countingStream->rewind();
7215 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007216 uint64_t cgen_var_581;
7217 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_581, 1);
7218 countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
7219 uint64_t cgen_var_582;
7220 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_582, 1);
7221 countingStream->write((uint64_t*)&cgen_var_582, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007222 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7223 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7224 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007225 }
7226 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7227 countingStream->rewind();
7228 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
7229 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
7230 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007231 uint64_t cgen_var_583;
7232 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_583, 1);
7233 stream->write((uint64_t*)&cgen_var_583, 1 * 8);
7234 uint64_t cgen_var_584;
7235 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
7236 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007237 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
7238 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
7239 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007240}
7241
7242void VkEncoder::vkCmdClearColorImage(
7243 VkCommandBuffer commandBuffer,
7244 VkImage image,
7245 VkImageLayout imageLayout,
7246 const VkClearColorValue* pColor,
7247 uint32_t rangeCount,
7248 const VkImageSubresourceRange* pRanges)
7249{
7250 auto stream = mImpl->stream();
7251 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007252 auto resources = mImpl->resources();
7253 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007254 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007255 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007256 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007257 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007258 VkClearColorValue* local_pColor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007259 uint32_t local_rangeCount;
7260 VkImageSubresourceRange* local_pRanges;
7261 local_commandBuffer = commandBuffer;
7262 local_image = image;
7263 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007264 local_pColor = nullptr;
7265 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007266 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007267 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
7268 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
7269 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007270 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007271 local_pRanges = nullptr;
7272 if (pRanges)
7273 {
7274 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007275 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7276 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007277 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7278 }
7279 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007280 countingStream->rewind();
7281 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007282 uint64_t cgen_var_585;
7283 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
7284 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
7285 uint64_t cgen_var_586;
7286 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_586, 1);
7287 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007288 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7289 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
7290 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7291 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7292 {
7293 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007294 }
7295 }
7296 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7297 countingStream->rewind();
7298 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
7299 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
7300 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007301 uint64_t cgen_var_587;
7302 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
7303 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
7304 uint64_t cgen_var_588;
7305 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_588, 1);
7306 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007307 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7308 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
7309 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007310 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7311 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007312 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007313 }
7314}
7315
7316void VkEncoder::vkCmdClearDepthStencilImage(
7317 VkCommandBuffer commandBuffer,
7318 VkImage image,
7319 VkImageLayout imageLayout,
7320 const VkClearDepthStencilValue* pDepthStencil,
7321 uint32_t rangeCount,
7322 const VkImageSubresourceRange* pRanges)
7323{
7324 auto stream = mImpl->stream();
7325 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007326 auto resources = mImpl->resources();
7327 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007328 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007329 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007330 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007331 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007332 VkClearDepthStencilValue* local_pDepthStencil;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007333 uint32_t local_rangeCount;
7334 VkImageSubresourceRange* local_pRanges;
7335 local_commandBuffer = commandBuffer;
7336 local_image = image;
7337 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007338 local_pDepthStencil = nullptr;
7339 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007340 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007341 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
7342 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
7343 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007344 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007345 local_pRanges = nullptr;
7346 if (pRanges)
7347 {
7348 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007349 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7350 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007351 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
7352 }
7353 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007354 countingStream->rewind();
7355 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007356 uint64_t cgen_var_589;
7357 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
7358 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
7359 uint64_t cgen_var_590;
7360 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_590, 1);
7361 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007362 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7363 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7364 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
7365 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7366 {
7367 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007368 }
7369 }
7370 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7371 countingStream->rewind();
7372 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
7373 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
7374 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007375 uint64_t cgen_var_591;
7376 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
7377 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
7378 uint64_t cgen_var_592;
7379 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_592, 1);
7380 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007381 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
7382 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
7383 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007384 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
7385 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007386 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007387 }
7388}
7389
7390void VkEncoder::vkCmdClearAttachments(
7391 VkCommandBuffer commandBuffer,
7392 uint32_t attachmentCount,
7393 const VkClearAttachment* pAttachments,
7394 uint32_t rectCount,
7395 const VkClearRect* pRects)
7396{
7397 auto stream = mImpl->stream();
7398 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007399 auto resources = mImpl->resources();
7400 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007401 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007402 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007403 uint32_t local_attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007404 VkClearAttachment* local_pAttachments;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007405 uint32_t local_rectCount;
7406 VkClearRect* local_pRects;
7407 local_commandBuffer = commandBuffer;
7408 local_attachmentCount = attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007409 local_pAttachments = nullptr;
7410 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007411 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007412 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007413 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7414 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007415 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007416 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007417 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007418 local_rectCount = rectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007419 local_pRects = nullptr;
7420 if (pRects)
7421 {
7422 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007423 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7424 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007425 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
7426 }
7427 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007428 countingStream->rewind();
7429 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007430 uint64_t cgen_var_593;
7431 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
7432 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007433 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
7434 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7435 {
7436 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
7437 }
7438 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
7439 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7440 {
7441 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007442 }
7443 }
7444 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7445 countingStream->rewind();
7446 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
7447 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
7448 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007449 uint64_t cgen_var_594;
7450 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_594, 1);
7451 stream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007452 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007453 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
7454 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007455 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007456 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007457 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007458 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
7459 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007460 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007461 }
7462}
7463
7464void VkEncoder::vkCmdResolveImage(
7465 VkCommandBuffer commandBuffer,
7466 VkImage srcImage,
7467 VkImageLayout srcImageLayout,
7468 VkImage dstImage,
7469 VkImageLayout dstImageLayout,
7470 uint32_t regionCount,
7471 const VkImageResolve* pRegions)
7472{
7473 auto stream = mImpl->stream();
7474 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007475 auto resources = mImpl->resources();
7476 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007477 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007478 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007479 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007480 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007481 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007482 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007483 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007484 VkImageResolve* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007485 local_commandBuffer = commandBuffer;
7486 local_srcImage = srcImage;
7487 local_srcImageLayout = srcImageLayout;
7488 local_dstImage = dstImage;
7489 local_dstImageLayout = dstImageLayout;
7490 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007491 local_pRegions = nullptr;
7492 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007493 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007494 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
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 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
7498 }
7499 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007500 countingStream->rewind();
7501 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007502 uint64_t cgen_var_595;
7503 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
7504 countingStream->write((uint64_t*)&cgen_var_595, 1 * 8);
7505 uint64_t cgen_var_596;
7506 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_596, 1);
7507 countingStream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007508 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007509 uint64_t cgen_var_597;
7510 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_597, 1);
7511 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007512 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7513 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7514 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7515 {
7516 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007517 }
7518 }
7519 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7520 countingStream->rewind();
7521 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
7522 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
7523 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007524 uint64_t cgen_var_598;
7525 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_598, 1);
7526 stream->write((uint64_t*)&cgen_var_598, 1 * 8);
7527 uint64_t cgen_var_599;
7528 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_599, 1);
7529 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007530 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007531 uint64_t cgen_var_600;
7532 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_600, 1);
7533 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007534 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7535 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007536 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7537 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007538 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007539 }
7540}
7541
7542void VkEncoder::vkCmdSetEvent(
7543 VkCommandBuffer commandBuffer,
7544 VkEvent event,
7545 VkPipelineStageFlags stageMask)
7546{
7547 auto stream = mImpl->stream();
7548 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007549 auto resources = mImpl->resources();
7550 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007551 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007552 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007553 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007554 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007555 local_commandBuffer = commandBuffer;
7556 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007557 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007558 countingStream->rewind();
7559 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007560 uint64_t cgen_var_601;
7561 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
7562 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
7563 uint64_t cgen_var_602;
7564 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_602, 1);
7565 countingStream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007566 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007567 }
7568 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7569 countingStream->rewind();
7570 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
7571 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
7572 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007573 uint64_t cgen_var_603;
7574 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
7575 stream->write((uint64_t*)&cgen_var_603, 1 * 8);
7576 uint64_t cgen_var_604;
7577 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_604, 1);
7578 stream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007579 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007580}
7581
7582void VkEncoder::vkCmdResetEvent(
7583 VkCommandBuffer commandBuffer,
7584 VkEvent event,
7585 VkPipelineStageFlags stageMask)
7586{
7587 auto stream = mImpl->stream();
7588 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007589 auto resources = mImpl->resources();
7590 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007591 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007592 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007593 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007594 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007595 local_commandBuffer = commandBuffer;
7596 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007597 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007598 countingStream->rewind();
7599 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007600 uint64_t cgen_var_605;
7601 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_605, 1);
7602 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
7603 uint64_t cgen_var_606;
7604 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_606, 1);
7605 countingStream->write((uint64_t*)&cgen_var_606, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007606 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007607 }
7608 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7609 countingStream->rewind();
7610 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
7611 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
7612 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007613 uint64_t cgen_var_607;
7614 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_607, 1);
7615 stream->write((uint64_t*)&cgen_var_607, 1 * 8);
7616 uint64_t cgen_var_608;
7617 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_608, 1);
7618 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007619 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007620}
7621
7622void VkEncoder::vkCmdWaitEvents(
7623 VkCommandBuffer commandBuffer,
7624 uint32_t eventCount,
7625 const VkEvent* pEvents,
7626 VkPipelineStageFlags srcStageMask,
7627 VkPipelineStageFlags dstStageMask,
7628 uint32_t memoryBarrierCount,
7629 const VkMemoryBarrier* pMemoryBarriers,
7630 uint32_t bufferMemoryBarrierCount,
7631 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7632 uint32_t imageMemoryBarrierCount,
7633 const VkImageMemoryBarrier* pImageMemoryBarriers)
7634{
7635 auto stream = mImpl->stream();
7636 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007637 auto resources = mImpl->resources();
7638 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007639 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007640 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007641 uint32_t local_eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007642 VkEvent* local_pEvents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007643 VkPipelineStageFlags local_srcStageMask;
7644 VkPipelineStageFlags local_dstStageMask;
7645 uint32_t local_memoryBarrierCount;
7646 VkMemoryBarrier* local_pMemoryBarriers;
7647 uint32_t local_bufferMemoryBarrierCount;
7648 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7649 uint32_t local_imageMemoryBarrierCount;
7650 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7651 local_commandBuffer = commandBuffer;
7652 local_eventCount = eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007653 local_pEvents = nullptr;
7654 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007655 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007656 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
7657 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007658 local_srcStageMask = srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007659 local_dstStageMask = dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007660 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007661 local_pMemoryBarriers = nullptr;
7662 if (pMemoryBarriers)
7663 {
7664 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007665 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7666 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007667 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007668 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007669 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007670 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007671 local_pBufferMemoryBarriers = nullptr;
7672 if (pBufferMemoryBarriers)
7673 {
7674 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007675 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7676 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007677 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007678 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007679 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007680 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007681 local_pImageMemoryBarriers = nullptr;
7682 if (pImageMemoryBarriers)
7683 {
7684 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007685 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7686 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007687 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7688 }
7689 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007690 countingStream->rewind();
7691 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007692 uint64_t cgen_var_609;
7693 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
7694 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007695 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007696 if (((eventCount)))
7697 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007698 uint64_t* cgen_var_610;
7699 countingStream->alloc((void**)&cgen_var_610, ((eventCount)) * 8);
7700 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_610, ((eventCount)));
7701 countingStream->write((uint64_t*)cgen_var_610, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007702 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007703 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7704 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7705 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7706 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7707 {
7708 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7709 }
7710 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7711 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7712 {
7713 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7714 }
7715 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7716 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7717 {
7718 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007719 }
7720 }
7721 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7722 countingStream->rewind();
7723 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
7724 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
7725 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007726 uint64_t cgen_var_611;
7727 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
7728 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007729 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007730 if (((eventCount)))
7731 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007732 uint64_t* cgen_var_612;
7733 stream->alloc((void**)&cgen_var_612, ((eventCount)) * 8);
7734 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_612, ((eventCount)));
7735 stream->write((uint64_t*)cgen_var_612, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007736 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007737 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7738 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7739 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007740 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7741 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007742 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007743 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007744 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007745 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7746 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007747 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007748 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007749 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007750 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7751 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007752 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007753 }
7754}
7755
7756void VkEncoder::vkCmdPipelineBarrier(
7757 VkCommandBuffer commandBuffer,
7758 VkPipelineStageFlags srcStageMask,
7759 VkPipelineStageFlags dstStageMask,
7760 VkDependencyFlags dependencyFlags,
7761 uint32_t memoryBarrierCount,
7762 const VkMemoryBarrier* pMemoryBarriers,
7763 uint32_t bufferMemoryBarrierCount,
7764 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7765 uint32_t imageMemoryBarrierCount,
7766 const VkImageMemoryBarrier* pImageMemoryBarriers)
7767{
7768 auto stream = mImpl->stream();
7769 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007770 auto resources = mImpl->resources();
7771 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007772 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007773 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007774 VkPipelineStageFlags local_srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007775 VkPipelineStageFlags local_dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007776 VkDependencyFlags local_dependencyFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007777 uint32_t local_memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007778 VkMemoryBarrier* local_pMemoryBarriers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007779 uint32_t local_bufferMemoryBarrierCount;
7780 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
7781 uint32_t local_imageMemoryBarrierCount;
7782 VkImageMemoryBarrier* local_pImageMemoryBarriers;
7783 local_commandBuffer = commandBuffer;
7784 local_srcStageMask = srcStageMask;
7785 local_dstStageMask = dstStageMask;
7786 local_dependencyFlags = dependencyFlags;
7787 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007788 local_pMemoryBarriers = nullptr;
7789 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007790 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007791 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007792 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7793 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007794 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007795 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007796 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007797 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007798 local_pBufferMemoryBarriers = nullptr;
7799 if (pBufferMemoryBarriers)
7800 {
7801 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007802 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7803 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007804 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007805 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007806 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007807 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007808 local_pImageMemoryBarriers = nullptr;
7809 if (pImageMemoryBarriers)
7810 {
7811 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007812 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7813 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007814 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
7815 }
7816 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007817 countingStream->rewind();
7818 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007819 uint64_t cgen_var_613;
7820 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
7821 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007822 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7823 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7824 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7825 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
7826 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7827 {
7828 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
7829 }
7830 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
7831 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7832 {
7833 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
7834 }
7835 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
7836 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7837 {
7838 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007839 }
7840 }
7841 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7842 countingStream->rewind();
7843 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
7844 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
7845 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007846 uint64_t cgen_var_614;
7847 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_614, 1);
7848 stream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007849 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
7850 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
7851 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
7852 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007853 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
7854 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007855 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007856 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007857 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007858 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
7859 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007860 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007861 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007862 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007863 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
7864 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007865 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007866 }
7867}
7868
7869void VkEncoder::vkCmdBeginQuery(
7870 VkCommandBuffer commandBuffer,
7871 VkQueryPool queryPool,
7872 uint32_t query,
7873 VkQueryControlFlags flags)
7874{
7875 auto stream = mImpl->stream();
7876 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007877 auto resources = mImpl->resources();
7878 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007879 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007880 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007881 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007882 uint32_t local_query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007883 VkQueryControlFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007884 local_commandBuffer = commandBuffer;
7885 local_queryPool = queryPool;
7886 local_query = query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007887 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007888 countingStream->rewind();
7889 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007890 uint64_t cgen_var_615;
7891 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
7892 countingStream->write((uint64_t*)&cgen_var_615, 1 * 8);
7893 uint64_t cgen_var_616;
7894 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_616, 1);
7895 countingStream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007896 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
7897 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007898 }
7899 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7900 countingStream->rewind();
7901 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
7902 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
7903 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007904 uint64_t cgen_var_617;
7905 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
7906 stream->write((uint64_t*)&cgen_var_617, 1 * 8);
7907 uint64_t cgen_var_618;
7908 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_618, 1);
7909 stream->write((uint64_t*)&cgen_var_618, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007910 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
7911 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007912}
7913
7914void VkEncoder::vkCmdEndQuery(
7915 VkCommandBuffer commandBuffer,
7916 VkQueryPool queryPool,
7917 uint32_t query)
7918{
7919 auto stream = mImpl->stream();
7920 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007921 auto resources = mImpl->resources();
7922 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007923 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007924 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007925 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007926 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007927 local_commandBuffer = commandBuffer;
7928 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007929 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007930 countingStream->rewind();
7931 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007932 uint64_t cgen_var_619;
7933 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
7934 countingStream->write((uint64_t*)&cgen_var_619, 1 * 8);
7935 uint64_t cgen_var_620;
7936 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_620, 1);
7937 countingStream->write((uint64_t*)&cgen_var_620, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007938 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007939 }
7940 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7941 countingStream->rewind();
7942 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
7943 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
7944 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007945 uint64_t cgen_var_621;
7946 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
7947 stream->write((uint64_t*)&cgen_var_621, 1 * 8);
7948 uint64_t cgen_var_622;
7949 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_622, 1);
7950 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007951 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007952}
7953
7954void VkEncoder::vkCmdResetQueryPool(
7955 VkCommandBuffer commandBuffer,
7956 VkQueryPool queryPool,
7957 uint32_t firstQuery,
7958 uint32_t queryCount)
7959{
7960 auto stream = mImpl->stream();
7961 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007962 auto resources = mImpl->resources();
7963 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007964 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007965 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007966 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007967 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007968 uint32_t local_queryCount;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007969 local_commandBuffer = commandBuffer;
7970 local_queryPool = queryPool;
7971 local_firstQuery = firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007972 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007973 countingStream->rewind();
7974 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007975 uint64_t cgen_var_623;
7976 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
7977 countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
7978 uint64_t cgen_var_624;
7979 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
7980 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007981 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
7982 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007983 }
7984 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7985 countingStream->rewind();
7986 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
7987 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
7988 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08007989 uint64_t cgen_var_625;
7990 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
7991 stream->write((uint64_t*)&cgen_var_625, 1 * 8);
7992 uint64_t cgen_var_626;
7993 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
7994 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007995 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
7996 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007997}
7998
7999void VkEncoder::vkCmdWriteTimestamp(
8000 VkCommandBuffer commandBuffer,
8001 VkPipelineStageFlagBits pipelineStage,
8002 VkQueryPool queryPool,
8003 uint32_t query)
8004{
8005 auto stream = mImpl->stream();
8006 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008007 auto resources = mImpl->resources();
8008 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008009 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008010 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008011 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008012 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008013 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008014 local_commandBuffer = commandBuffer;
8015 local_pipelineStage = pipelineStage;
8016 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008017 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008018 countingStream->rewind();
8019 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008020 uint64_t cgen_var_627;
8021 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
8022 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008023 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008024 uint64_t cgen_var_628;
8025 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
8026 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008027 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008028 }
8029 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8030 countingStream->rewind();
8031 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
8032 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
8033 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008034 uint64_t cgen_var_629;
8035 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
8036 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008037 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008038 uint64_t cgen_var_630;
8039 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
8040 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008041 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008042}
8043
8044void VkEncoder::vkCmdCopyQueryPoolResults(
8045 VkCommandBuffer commandBuffer,
8046 VkQueryPool queryPool,
8047 uint32_t firstQuery,
8048 uint32_t queryCount,
8049 VkBuffer dstBuffer,
8050 VkDeviceSize dstOffset,
8051 VkDeviceSize stride,
8052 VkQueryResultFlags flags)
8053{
8054 auto stream = mImpl->stream();
8055 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008056 auto resources = mImpl->resources();
8057 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008058 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008059 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008060 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008061 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008062 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008063 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008064 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008065 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008066 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008067 local_commandBuffer = commandBuffer;
8068 local_queryPool = queryPool;
8069 local_firstQuery = firstQuery;
8070 local_queryCount = queryCount;
8071 local_dstBuffer = dstBuffer;
8072 local_dstOffset = dstOffset;
8073 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008074 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008075 countingStream->rewind();
8076 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008077 uint64_t cgen_var_631;
8078 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
8079 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
8080 uint64_t cgen_var_632;
8081 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
8082 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008083 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8084 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008085 uint64_t cgen_var_633;
8086 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_633, 1);
8087 countingStream->write((uint64_t*)&cgen_var_633, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008088 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8089 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8090 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008091 }
8092 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8093 countingStream->rewind();
8094 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
8095 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
8096 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008097 uint64_t cgen_var_634;
8098 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_634, 1);
8099 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
8100 uint64_t cgen_var_635;
8101 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_635, 1);
8102 stream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008103 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
8104 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008105 uint64_t cgen_var_636;
8106 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_636, 1);
8107 stream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008108 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8109 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
8110 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008111}
8112
8113void VkEncoder::vkCmdPushConstants(
8114 VkCommandBuffer commandBuffer,
8115 VkPipelineLayout layout,
8116 VkShaderStageFlags stageFlags,
8117 uint32_t offset,
8118 uint32_t size,
8119 const void* pValues)
8120{
8121 auto stream = mImpl->stream();
8122 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008123 auto resources = mImpl->resources();
8124 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008125 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008126 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008127 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008128 VkShaderStageFlags local_stageFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008129 uint32_t local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008130 uint32_t local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008131 void* local_pValues;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008132 local_commandBuffer = commandBuffer;
8133 local_layout = layout;
8134 local_stageFlags = stageFlags;
8135 local_offset = offset;
8136 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008137 local_pValues = nullptr;
8138 if (pValues)
8139 {
8140 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
8141 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008142 countingStream->rewind();
8143 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008144 uint64_t cgen_var_637;
8145 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
8146 countingStream->write((uint64_t*)&cgen_var_637, 1 * 8);
8147 uint64_t cgen_var_638;
8148 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_638, 1);
8149 countingStream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008150 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8151 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8152 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
8153 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008154 }
8155 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8156 countingStream->rewind();
8157 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
8158 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
8159 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008160 uint64_t cgen_var_639;
8161 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
8162 stream->write((uint64_t*)&cgen_var_639, 1 * 8);
8163 uint64_t cgen_var_640;
8164 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_640, 1);
8165 stream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008166 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
8167 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
8168 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
8169 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008170}
8171
8172void VkEncoder::vkCmdBeginRenderPass(
8173 VkCommandBuffer commandBuffer,
8174 const VkRenderPassBeginInfo* pRenderPassBegin,
8175 VkSubpassContents contents)
8176{
8177 auto stream = mImpl->stream();
8178 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008179 auto resources = mImpl->resources();
8180 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008181 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008182 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008183 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008184 VkSubpassContents local_contents;
8185 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008186 local_pRenderPassBegin = nullptr;
8187 if (pRenderPassBegin)
8188 {
8189 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
8190 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8191 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008192 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008193 countingStream->rewind();
8194 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008195 uint64_t cgen_var_641;
8196 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1);
8197 countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008198 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8199 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008200 }
8201 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8202 countingStream->rewind();
8203 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
8204 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
8205 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008206 uint64_t cgen_var_642;
8207 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
8208 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008209 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
8210 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008211}
8212
8213void VkEncoder::vkCmdNextSubpass(
8214 VkCommandBuffer commandBuffer,
8215 VkSubpassContents contents)
8216{
8217 auto stream = mImpl->stream();
8218 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008219 auto resources = mImpl->resources();
8220 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008221 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008222 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008223 VkSubpassContents local_contents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008224 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008225 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008226 countingStream->rewind();
8227 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008228 uint64_t cgen_var_643;
8229 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_643, 1);
8230 countingStream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008231 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008232 }
8233 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8234 countingStream->rewind();
8235 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
8236 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
8237 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008238 uint64_t cgen_var_644;
8239 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_644, 1);
8240 stream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008241 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008242}
8243
8244void VkEncoder::vkCmdEndRenderPass(
8245 VkCommandBuffer commandBuffer)
8246{
8247 auto stream = mImpl->stream();
8248 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008249 auto resources = mImpl->resources();
8250 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008251 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008252 VkCommandBuffer local_commandBuffer;
8253 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008254 countingStream->rewind();
8255 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008256 uint64_t cgen_var_645;
8257 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
8258 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008259 }
8260 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8261 countingStream->rewind();
8262 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
8263 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
8264 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008265 uint64_t cgen_var_646;
8266 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_646, 1);
8267 stream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008268}
8269
8270void VkEncoder::vkCmdExecuteCommands(
8271 VkCommandBuffer commandBuffer,
8272 uint32_t commandBufferCount,
8273 const VkCommandBuffer* pCommandBuffers)
8274{
8275 auto stream = mImpl->stream();
8276 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008277 auto resources = mImpl->resources();
8278 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008279 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008280 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008281 uint32_t local_commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008282 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008283 local_commandBuffer = commandBuffer;
8284 local_commandBufferCount = commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008285 local_pCommandBuffers = nullptr;
8286 if (pCommandBuffers)
8287 {
8288 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
8289 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008290 countingStream->rewind();
8291 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008292 uint64_t cgen_var_647;
8293 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
8294 countingStream->write((uint64_t*)&cgen_var_647, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008295 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008296 if (((commandBufferCount)))
8297 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008298 uint64_t* cgen_var_648;
8299 countingStream->alloc((void**)&cgen_var_648, ((commandBufferCount)) * 8);
8300 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_648, ((commandBufferCount)));
8301 countingStream->write((uint64_t*)cgen_var_648, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008302 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008303 }
8304 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8305 countingStream->rewind();
8306 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
8307 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
8308 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008309 uint64_t cgen_var_649;
8310 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
8311 stream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008312 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008313 if (((commandBufferCount)))
8314 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008315 uint64_t* cgen_var_650;
8316 stream->alloc((void**)&cgen_var_650, ((commandBufferCount)) * 8);
8317 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_650, ((commandBufferCount)));
8318 stream->write((uint64_t*)cgen_var_650, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008319 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008320}
8321
8322#endif
8323#ifdef VK_VERSION_1_1
8324VkResult VkEncoder::vkEnumerateInstanceVersion(
8325 uint32_t* pApiVersion)
8326{
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008327 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08008328 vkEnumerateInstanceVersion_VkResult_return = goldfish_vkEnumerateInstanceVersion(this, vkEnumerateInstanceVersion_VkResult_return, pApiVersion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008329 return vkEnumerateInstanceVersion_VkResult_return;
8330}
8331
8332VkResult VkEncoder::vkBindBufferMemory2(
8333 VkDevice device,
8334 uint32_t bindInfoCount,
8335 const VkBindBufferMemoryInfo* pBindInfos)
8336{
8337 auto stream = mImpl->stream();
8338 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008339 auto resources = mImpl->resources();
8340 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008341 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008342 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008343 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008344 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008345 local_device = device;
8346 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008347 local_pBindInfos = nullptr;
8348 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008349 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008350 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008351 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8352 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008353 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
8354 }
8355 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008356 countingStream->rewind();
8357 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008358 uint64_t cgen_var_651;
8359 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_651, 1);
8360 countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008361 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8362 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8363 {
8364 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008365 }
8366 }
8367 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8368 countingStream->rewind();
8369 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
8370 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
8371 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008372 uint64_t cgen_var_652;
8373 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_652, 1);
8374 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008375 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008376 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8377 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008378 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008379 }
8380 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
8381 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008382 countingStream->clearPool();
8383 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008384 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008385 return vkBindBufferMemory2_VkResult_return;
8386}
8387
8388VkResult VkEncoder::vkBindImageMemory2(
8389 VkDevice device,
8390 uint32_t bindInfoCount,
8391 const VkBindImageMemoryInfo* pBindInfos)
8392{
8393 auto stream = mImpl->stream();
8394 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008395 auto resources = mImpl->resources();
8396 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008397 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008398 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008399 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008400 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008401 local_device = device;
8402 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008403 local_pBindInfos = nullptr;
8404 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008405 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008406 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008407 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8408 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008409 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
8410 }
8411 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008412 countingStream->rewind();
8413 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008414 uint64_t cgen_var_653;
8415 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_653, 1);
8416 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008417 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
8418 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8419 {
8420 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008421 }
8422 }
8423 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8424 countingStream->rewind();
8425 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
8426 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
8427 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008428 uint64_t cgen_var_654;
8429 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_654, 1);
8430 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008431 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008432 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
8433 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008434 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008435 }
8436 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
8437 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008438 countingStream->clearPool();
8439 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008440 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008441 return vkBindImageMemory2_VkResult_return;
8442}
8443
8444void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
8445 VkDevice device,
8446 uint32_t heapIndex,
8447 uint32_t localDeviceIndex,
8448 uint32_t remoteDeviceIndex,
8449 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
8450{
8451 auto stream = mImpl->stream();
8452 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008453 auto resources = mImpl->resources();
8454 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008455 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008456 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008457 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008458 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008459 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008460 local_device = device;
8461 local_heapIndex = heapIndex;
8462 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008463 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008464 countingStream->rewind();
8465 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008466 uint64_t cgen_var_655;
8467 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_655, 1);
8468 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008469 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8470 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8471 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008472 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8473 }
8474 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8475 countingStream->rewind();
8476 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
8477 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
8478 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008479 uint64_t cgen_var_656;
8480 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_656, 1);
8481 stream->write((uint64_t*)&cgen_var_656, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008482 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
8483 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
8484 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008485 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8486 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
8487}
8488
8489void VkEncoder::vkCmdSetDeviceMask(
8490 VkCommandBuffer commandBuffer,
8491 uint32_t deviceMask)
8492{
8493 auto stream = mImpl->stream();
8494 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008495 auto resources = mImpl->resources();
8496 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008497 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008498 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008499 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008500 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008501 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008502 countingStream->rewind();
8503 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008504 uint64_t cgen_var_657;
8505 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
8506 countingStream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008507 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008508 }
8509 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8510 countingStream->rewind();
8511 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
8512 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
8513 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008514 uint64_t cgen_var_658;
8515 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_658, 1);
8516 stream->write((uint64_t*)&cgen_var_658, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008517 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008518}
8519
8520void VkEncoder::vkCmdDispatchBase(
8521 VkCommandBuffer commandBuffer,
8522 uint32_t baseGroupX,
8523 uint32_t baseGroupY,
8524 uint32_t baseGroupZ,
8525 uint32_t groupCountX,
8526 uint32_t groupCountY,
8527 uint32_t groupCountZ)
8528{
8529 auto stream = mImpl->stream();
8530 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008531 auto resources = mImpl->resources();
8532 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008533 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008534 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008535 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008536 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008537 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008538 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008539 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008540 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008541 local_commandBuffer = commandBuffer;
8542 local_baseGroupX = baseGroupX;
8543 local_baseGroupY = baseGroupY;
8544 local_baseGroupZ = baseGroupZ;
8545 local_groupCountX = groupCountX;
8546 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008547 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008548 countingStream->rewind();
8549 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008550 uint64_t cgen_var_659;
8551 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_659, 1);
8552 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008553 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8554 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8555 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8556 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8557 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8558 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008559 }
8560 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8561 countingStream->rewind();
8562 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
8563 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
8564 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008565 uint64_t cgen_var_660;
8566 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_660, 1);
8567 stream->write((uint64_t*)&cgen_var_660, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008568 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
8569 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
8570 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
8571 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
8572 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
8573 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008574}
8575
8576VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
8577 VkInstance instance,
8578 uint32_t* pPhysicalDeviceGroupCount,
8579 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
8580{
8581 auto stream = mImpl->stream();
8582 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008583 auto resources = mImpl->resources();
8584 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008585 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008586 VkInstance local_instance;
8587 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008588 countingStream->rewind();
8589 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008590 uint64_t cgen_var_661;
8591 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_661, 1);
8592 countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008593 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008594 uint64_t cgen_var_662 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8595 countingStream->putBe64(cgen_var_662);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008596 if (pPhysicalDeviceGroupCount)
8597 {
8598 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8599 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008600 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008601 uint64_t cgen_var_663 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8602 countingStream->putBe64(cgen_var_663);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008603 if (pPhysicalDeviceGroupProperties)
8604 {
8605 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8606 {
8607 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8608 }
8609 }
8610 }
8611 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8612 countingStream->rewind();
8613 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
8614 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
8615 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008616 uint64_t cgen_var_664;
8617 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_664, 1);
8618 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008619 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008620 uint64_t cgen_var_665 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
8621 stream->putBe64(cgen_var_665);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008622 if (pPhysicalDeviceGroupCount)
8623 {
8624 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8625 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008626 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008627 uint64_t cgen_var_666 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
8628 stream->putBe64(cgen_var_666);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008629 if (pPhysicalDeviceGroupProperties)
8630 {
8631 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8632 {
8633 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8634 }
8635 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008636 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008637 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008638 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008639 if (pPhysicalDeviceGroupCount)
8640 {
8641 if (!(check_pPhysicalDeviceGroupCount))
8642 {
8643 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
8644 }
8645 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
8646 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008647 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008648 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008649 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008650 if (pPhysicalDeviceGroupProperties)
8651 {
8652 if (!(check_pPhysicalDeviceGroupProperties))
8653 {
8654 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
8655 }
8656 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
8657 {
8658 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
8659 }
8660 }
8661 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
8662 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008663 countingStream->clearPool();
8664 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008665 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008666 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
8667}
8668
8669void VkEncoder::vkGetImageMemoryRequirements2(
8670 VkDevice device,
8671 const VkImageMemoryRequirementsInfo2* pInfo,
8672 VkMemoryRequirements2* pMemoryRequirements)
8673{
8674 auto stream = mImpl->stream();
8675 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008676 auto resources = mImpl->resources();
8677 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008678 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008679 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008680 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008681 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008682 local_pInfo = nullptr;
8683 if (pInfo)
8684 {
8685 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
8686 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
8687 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008688 countingStream->rewind();
8689 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008690 uint64_t cgen_var_669;
8691 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_669, 1);
8692 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008693 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008694 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8695 }
8696 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8697 countingStream->rewind();
8698 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
8699 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
8700 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008701 uint64_t cgen_var_670;
8702 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_670, 1);
8703 stream->write((uint64_t*)&cgen_var_670, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008704 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008705 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8706 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8707}
8708
8709void VkEncoder::vkGetBufferMemoryRequirements2(
8710 VkDevice device,
8711 const VkBufferMemoryRequirementsInfo2* pInfo,
8712 VkMemoryRequirements2* pMemoryRequirements)
8713{
8714 auto stream = mImpl->stream();
8715 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008716 auto resources = mImpl->resources();
8717 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008718 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008719 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008720 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008721 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008722 local_pInfo = nullptr;
8723 if (pInfo)
8724 {
8725 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
8726 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
8727 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008728 countingStream->rewind();
8729 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008730 uint64_t cgen_var_671;
8731 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_671, 1);
8732 countingStream->write((uint64_t*)&cgen_var_671, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008733 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008734 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
8735 }
8736 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8737 countingStream->rewind();
8738 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
8739 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
8740 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008741 uint64_t cgen_var_672;
8742 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_672, 1);
8743 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008744 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008745 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8746 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
8747}
8748
8749void VkEncoder::vkGetImageSparseMemoryRequirements2(
8750 VkDevice device,
8751 const VkImageSparseMemoryRequirementsInfo2* pInfo,
8752 uint32_t* pSparseMemoryRequirementCount,
8753 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
8754{
8755 auto stream = mImpl->stream();
8756 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008757 auto resources = mImpl->resources();
8758 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008759 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008760 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008761 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008762 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008763 local_pInfo = nullptr;
8764 if (pInfo)
8765 {
8766 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
8767 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
8768 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008769 countingStream->rewind();
8770 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008771 uint64_t cgen_var_673;
8772 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_673, 1);
8773 countingStream->write((uint64_t*)&cgen_var_673, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008774 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008775 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008776 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8777 countingStream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008778 if (pSparseMemoryRequirementCount)
8779 {
8780 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8781 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008782 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008783 uint64_t cgen_var_675 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8784 countingStream->putBe64(cgen_var_675);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008785 if (pSparseMemoryRequirements)
8786 {
8787 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8788 {
8789 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8790 }
8791 }
8792 }
8793 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8794 countingStream->rewind();
8795 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
8796 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
8797 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008798 uint64_t cgen_var_676;
8799 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_676, 1);
8800 stream->write((uint64_t*)&cgen_var_676, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008801 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008802 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008803 uint64_t cgen_var_677 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
8804 stream->putBe64(cgen_var_677);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008805 if (pSparseMemoryRequirementCount)
8806 {
8807 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8808 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008809 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008810 uint64_t cgen_var_678 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
8811 stream->putBe64(cgen_var_678);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008812 if (pSparseMemoryRequirements)
8813 {
8814 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8815 {
8816 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8817 }
8818 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008819 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008820 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008821 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008822 if (pSparseMemoryRequirementCount)
8823 {
8824 if (!(check_pSparseMemoryRequirementCount))
8825 {
8826 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
8827 }
8828 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
8829 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008830 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008831 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008832 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008833 if (pSparseMemoryRequirements)
8834 {
8835 if (!(check_pSparseMemoryRequirements))
8836 {
8837 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
8838 }
8839 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
8840 {
8841 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
8842 }
8843 }
8844}
8845
8846void VkEncoder::vkGetPhysicalDeviceFeatures2(
8847 VkPhysicalDevice physicalDevice,
8848 VkPhysicalDeviceFeatures2* pFeatures)
8849{
8850 auto stream = mImpl->stream();
8851 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008852 auto resources = mImpl->resources();
8853 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008854 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008855 VkPhysicalDevice local_physicalDevice;
8856 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008857 countingStream->rewind();
8858 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008859 uint64_t cgen_var_681;
8860 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_681, 1);
8861 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008862 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8863 }
8864 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8865 countingStream->rewind();
8866 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
8867 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
8868 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008869 uint64_t cgen_var_682;
8870 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_682, 1);
8871 stream->write((uint64_t*)&cgen_var_682, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008872 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8873 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
8874}
8875
8876void VkEncoder::vkGetPhysicalDeviceProperties2(
8877 VkPhysicalDevice physicalDevice,
8878 VkPhysicalDeviceProperties2* pProperties)
8879{
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08008880 goldfish_vkGetPhysicalDeviceProperties2(this, physicalDevice, pProperties);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008881}
8882
8883void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
8884 VkPhysicalDevice physicalDevice,
8885 VkFormat format,
8886 VkFormatProperties2* pFormatProperties)
8887{
8888 auto stream = mImpl->stream();
8889 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008890 auto resources = mImpl->resources();
8891 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008892 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008893 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008894 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008895 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008896 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008897 countingStream->rewind();
8898 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008899 uint64_t cgen_var_683;
8900 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_683, 1);
8901 countingStream->write((uint64_t*)&cgen_var_683, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008902 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008903 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
8904 }
8905 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8906 countingStream->rewind();
8907 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
8908 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
8909 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008910 uint64_t cgen_var_684;
8911 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_684, 1);
8912 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008913 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008914 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8915 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
8916}
8917
8918VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
8919 VkPhysicalDevice physicalDevice,
8920 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
8921 VkImageFormatProperties2* pImageFormatProperties)
8922{
8923 auto stream = mImpl->stream();
8924 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008925 auto resources = mImpl->resources();
8926 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008927 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008928 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008929 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008930 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008931 local_pImageFormatInfo = nullptr;
8932 if (pImageFormatInfo)
8933 {
8934 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
8935 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
8936 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008937 countingStream->rewind();
8938 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008939 uint64_t cgen_var_685;
8940 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_685, 1);
8941 countingStream->write((uint64_t*)&cgen_var_685, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008942 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008943 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
8944 }
8945 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8946 countingStream->rewind();
8947 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
8948 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
8949 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008950 uint64_t cgen_var_686;
8951 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_686, 1);
8952 stream->write((uint64_t*)&cgen_var_686, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008953 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008954 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8955 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
8956 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
8957 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008958 countingStream->clearPool();
8959 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008960 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008961 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
8962}
8963
8964void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
8965 VkPhysicalDevice physicalDevice,
8966 uint32_t* pQueueFamilyPropertyCount,
8967 VkQueueFamilyProperties2* pQueueFamilyProperties)
8968{
8969 auto stream = mImpl->stream();
8970 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008971 auto resources = mImpl->resources();
8972 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008973 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008974 VkPhysicalDevice local_physicalDevice;
8975 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008976 countingStream->rewind();
8977 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008978 uint64_t cgen_var_687;
8979 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_687, 1);
8980 countingStream->write((uint64_t*)&cgen_var_687, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008981 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008982 uint64_t cgen_var_688 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
8983 countingStream->putBe64(cgen_var_688);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008984 if (pQueueFamilyPropertyCount)
8985 {
8986 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
8987 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08008988 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08008989 uint64_t cgen_var_689 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
8990 countingStream->putBe64(cgen_var_689);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008991 if (pQueueFamilyProperties)
8992 {
8993 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
8994 {
8995 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
8996 }
8997 }
8998 }
8999 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9000 countingStream->rewind();
9001 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
9002 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
9003 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009004 uint64_t cgen_var_690;
9005 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
9006 stream->write((uint64_t*)&cgen_var_690, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009007 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009008 uint64_t cgen_var_691 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
9009 stream->putBe64(cgen_var_691);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009010 if (pQueueFamilyPropertyCount)
9011 {
9012 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9013 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009014 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009015 uint64_t cgen_var_692 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
9016 stream->putBe64(cgen_var_692);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009017 if (pQueueFamilyProperties)
9018 {
9019 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9020 {
9021 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9022 }
9023 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009024 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009025 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009026 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009027 if (pQueueFamilyPropertyCount)
9028 {
9029 if (!(check_pQueueFamilyPropertyCount))
9030 {
9031 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
9032 }
9033 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
9034 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009035 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009036 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009037 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009038 if (pQueueFamilyProperties)
9039 {
9040 if (!(check_pQueueFamilyProperties))
9041 {
9042 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
9043 }
9044 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
9045 {
9046 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
9047 }
9048 }
9049}
9050
9051void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
9052 VkPhysicalDevice physicalDevice,
9053 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
9054{
9055 auto stream = mImpl->stream();
9056 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009057 auto resources = mImpl->resources();
9058 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009059 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009060 VkPhysicalDevice local_physicalDevice;
9061 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009062 countingStream->rewind();
9063 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009064 uint64_t cgen_var_695;
9065 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
9066 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009067 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9068 }
9069 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9070 countingStream->rewind();
9071 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
9072 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
9073 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009074 uint64_t cgen_var_696;
9075 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
9076 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009077 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9078 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
9079}
9080
9081void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
9082 VkPhysicalDevice physicalDevice,
9083 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
9084 uint32_t* pPropertyCount,
9085 VkSparseImageFormatProperties2* pProperties)
9086{
9087 auto stream = mImpl->stream();
9088 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009089 auto resources = mImpl->resources();
9090 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009091 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009092 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009093 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009094 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009095 local_pFormatInfo = nullptr;
9096 if (pFormatInfo)
9097 {
9098 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
9099 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
9100 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009101 countingStream->rewind();
9102 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009103 uint64_t cgen_var_697;
9104 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
9105 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009106 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009107 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009108 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pPropertyCount;
9109 countingStream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009110 if (pPropertyCount)
9111 {
9112 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9113 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009114 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009115 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pProperties;
9116 countingStream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009117 if (pProperties)
9118 {
9119 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9120 {
9121 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
9122 }
9123 }
9124 }
9125 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9126 countingStream->rewind();
9127 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
9128 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
9129 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009130 uint64_t cgen_var_700;
9131 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
9132 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009133 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009134 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009135 uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pPropertyCount;
9136 stream->putBe64(cgen_var_701);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009137 if (pPropertyCount)
9138 {
9139 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
9140 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009141 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009142 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pProperties;
9143 stream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009144 if (pProperties)
9145 {
9146 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9147 {
9148 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9149 }
9150 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009151 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009152 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009153 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009154 if (pPropertyCount)
9155 {
9156 if (!(check_pPropertyCount))
9157 {
9158 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
9159 }
9160 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
9161 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009162 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009163 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009164 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009165 if (pProperties)
9166 {
9167 if (!(check_pProperties))
9168 {
9169 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
9170 }
9171 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
9172 {
9173 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
9174 }
9175 }
9176}
9177
9178void VkEncoder::vkTrimCommandPool(
9179 VkDevice device,
9180 VkCommandPool commandPool,
9181 VkCommandPoolTrimFlags flags)
9182{
9183 auto stream = mImpl->stream();
9184 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009185 auto resources = mImpl->resources();
9186 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009187 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009188 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009189 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009190 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009191 local_device = device;
9192 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009193 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009194 countingStream->rewind();
9195 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009196 uint64_t cgen_var_705;
9197 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_705, 1);
9198 countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
9199 uint64_t cgen_var_706;
9200 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_706, 1);
9201 countingStream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009202 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009203 }
9204 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9205 countingStream->rewind();
9206 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
9207 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
9208 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009209 uint64_t cgen_var_707;
9210 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_707, 1);
9211 stream->write((uint64_t*)&cgen_var_707, 1 * 8);
9212 uint64_t cgen_var_708;
9213 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_708, 1);
9214 stream->write((uint64_t*)&cgen_var_708, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009215 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009216}
9217
9218void VkEncoder::vkGetDeviceQueue2(
9219 VkDevice device,
9220 const VkDeviceQueueInfo2* pQueueInfo,
9221 VkQueue* pQueue)
9222{
9223 auto stream = mImpl->stream();
9224 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009225 auto resources = mImpl->resources();
9226 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009227 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009228 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009229 VkDeviceQueueInfo2* local_pQueueInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009230 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009231 local_pQueueInfo = nullptr;
9232 if (pQueueInfo)
9233 {
9234 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
9235 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
9236 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009237 countingStream->rewind();
9238 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009239 uint64_t cgen_var_709;
9240 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_709, 1);
9241 countingStream->write((uint64_t*)&cgen_var_709, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009242 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009243 uint64_t cgen_var_710;
9244 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_710, 1);
9245 countingStream->write((uint64_t*)&cgen_var_710, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009246 }
9247 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9248 countingStream->rewind();
9249 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
9250 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
9251 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009252 uint64_t cgen_var_711;
9253 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_711, 1);
9254 stream->write((uint64_t*)&cgen_var_711, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009255 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08009256 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009257 uint64_t cgen_var_712;
9258 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_712, 1);
9259 stream->write((uint64_t*)&cgen_var_712, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009260 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009261 uint64_t cgen_var_713;
9262 stream->read((uint64_t*)&cgen_var_713, 8);
9263 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_713, (VkQueue*)pQueue, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009264}
9265
9266VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
9267 VkDevice device,
9268 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
9269 const VkAllocationCallbacks* pAllocator,
9270 VkSamplerYcbcrConversion* pYcbcrConversion)
9271{
9272 auto stream = mImpl->stream();
9273 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009274 auto resources = mImpl->resources();
9275 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009276 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009277 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009278 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009279 VkAllocationCallbacks* local_pAllocator;
9280 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009281 local_pCreateInfo = nullptr;
9282 if (pCreateInfo)
9283 {
9284 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
9285 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
9286 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009287 local_pAllocator = nullptr;
9288 if (pAllocator)
9289 {
9290 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9291 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9292 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009293 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009294 countingStream->rewind();
9295 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009296 uint64_t cgen_var_714;
9297 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_714, 1);
9298 countingStream->write((uint64_t*)&cgen_var_714, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009299 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009300 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009301 uint64_t cgen_var_715 = (uint64_t)(uintptr_t)local_pAllocator;
9302 countingStream->putBe64(cgen_var_715);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009303 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009304 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009305 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009306 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009307 uint64_t cgen_var_716;
9308 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_716, 1);
9309 countingStream->write((uint64_t*)&cgen_var_716, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009310 }
9311 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9312 countingStream->rewind();
9313 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
9314 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
9315 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009316 uint64_t cgen_var_717;
9317 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
9318 stream->write((uint64_t*)&cgen_var_717, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009319 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009320 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009321 uint64_t cgen_var_718 = (uint64_t)(uintptr_t)local_pAllocator;
9322 stream->putBe64(cgen_var_718);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009323 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009324 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009325 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009326 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009327 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009328 uint64_t cgen_var_719;
9329 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_719, 1);
9330 stream->write((uint64_t*)&cgen_var_719, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009331 stream->setHandleMapping(resources->unwrapMapping());
9332 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009333 uint64_t cgen_var_720;
9334 stream->read((uint64_t*)&cgen_var_720, 8);
9335 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_720, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009336 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009337 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
9338 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009339 countingStream->clearPool();
9340 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009341 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009342 return vkCreateSamplerYcbcrConversion_VkResult_return;
9343}
9344
9345void VkEncoder::vkDestroySamplerYcbcrConversion(
9346 VkDevice device,
9347 VkSamplerYcbcrConversion ycbcrConversion,
9348 const VkAllocationCallbacks* pAllocator)
9349{
9350 auto stream = mImpl->stream();
9351 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009352 auto resources = mImpl->resources();
9353 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009354 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009355 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009356 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009357 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009358 local_device = device;
9359 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009360 local_pAllocator = nullptr;
9361 if (pAllocator)
9362 {
9363 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9364 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9365 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009366 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009367 countingStream->rewind();
9368 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009369 uint64_t cgen_var_721;
9370 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
9371 countingStream->write((uint64_t*)&cgen_var_721, 1 * 8);
9372 uint64_t cgen_var_722;
9373 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_722, 1);
9374 countingStream->write((uint64_t*)&cgen_var_722, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009375 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009376 uint64_t cgen_var_723 = (uint64_t)(uintptr_t)local_pAllocator;
9377 countingStream->putBe64(cgen_var_723);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009378 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009379 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009380 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009381 }
9382 }
9383 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9384 countingStream->rewind();
9385 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
9386 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
9387 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009388 uint64_t cgen_var_724;
9389 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
9390 stream->write((uint64_t*)&cgen_var_724, 1 * 8);
9391 uint64_t cgen_var_725;
9392 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_725, 1);
9393 stream->write((uint64_t*)&cgen_var_725, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009394 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009395 uint64_t cgen_var_726 = (uint64_t)(uintptr_t)local_pAllocator;
9396 stream->putBe64(cgen_var_726);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009397 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009398 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009399 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009400 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009401 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009402}
9403
9404VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
9405 VkDevice device,
9406 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
9407 const VkAllocationCallbacks* pAllocator,
9408 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
9409{
9410 auto stream = mImpl->stream();
9411 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009412 auto resources = mImpl->resources();
9413 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009414 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009415 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009416 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009417 VkAllocationCallbacks* local_pAllocator;
9418 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009419 local_pCreateInfo = nullptr;
9420 if (pCreateInfo)
9421 {
9422 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
9423 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
9424 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009425 local_pAllocator = nullptr;
9426 if (pAllocator)
9427 {
9428 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9429 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9430 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009431 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009432 countingStream->rewind();
9433 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009434 uint64_t cgen_var_727;
9435 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
9436 countingStream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009437 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009438 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009439 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
9440 countingStream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009441 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009442 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009443 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009444 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009445 uint64_t cgen_var_729;
9446 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_729, 1);
9447 countingStream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009448 }
9449 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9450 countingStream->rewind();
9451 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
9452 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
9453 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009454 uint64_t cgen_var_730;
9455 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_730, 1);
9456 stream->write((uint64_t*)&cgen_var_730, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009457 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009458 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009459 uint64_t cgen_var_731 = (uint64_t)(uintptr_t)local_pAllocator;
9460 stream->putBe64(cgen_var_731);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009461 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009462 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009463 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009464 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08009465 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009466 uint64_t cgen_var_732;
9467 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_732, 1);
9468 stream->write((uint64_t*)&cgen_var_732, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009469 stream->setHandleMapping(resources->unwrapMapping());
9470 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009471 uint64_t cgen_var_733;
9472 stream->read((uint64_t*)&cgen_var_733, 8);
9473 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_733, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08009474 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009475 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
9476 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009477 countingStream->clearPool();
9478 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009479 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009480 return vkCreateDescriptorUpdateTemplate_VkResult_return;
9481}
9482
9483void VkEncoder::vkDestroyDescriptorUpdateTemplate(
9484 VkDevice device,
9485 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9486 const VkAllocationCallbacks* pAllocator)
9487{
9488 auto stream = mImpl->stream();
9489 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009490 auto resources = mImpl->resources();
9491 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009492 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009493 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009494 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009495 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009496 local_device = device;
9497 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009498 local_pAllocator = nullptr;
9499 if (pAllocator)
9500 {
9501 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9502 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9503 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009504 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009505 countingStream->rewind();
9506 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009507 uint64_t cgen_var_734;
9508 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
9509 countingStream->write((uint64_t*)&cgen_var_734, 1 * 8);
9510 uint64_t cgen_var_735;
9511 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_735, 1);
9512 countingStream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009513 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009514 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
9515 countingStream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009516 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009517 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009518 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009519 }
9520 }
9521 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9522 countingStream->rewind();
9523 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
9524 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
9525 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009526 uint64_t cgen_var_737;
9527 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
9528 stream->write((uint64_t*)&cgen_var_737, 1 * 8);
9529 uint64_t cgen_var_738;
9530 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_738, 1);
9531 stream->write((uint64_t*)&cgen_var_738, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009532 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009533 uint64_t cgen_var_739 = (uint64_t)(uintptr_t)local_pAllocator;
9534 stream->putBe64(cgen_var_739);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009535 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009536 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009537 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009538 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009539 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009540}
9541
9542void VkEncoder::vkUpdateDescriptorSetWithTemplate(
9543 VkDevice device,
9544 VkDescriptorSet descriptorSet,
9545 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
9546 const void* pData)
9547{
9548 auto stream = mImpl->stream();
9549 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009550 auto resources = mImpl->resources();
9551 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009552 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009553 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009554 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009555 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009556 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009557 local_device = device;
9558 local_descriptorSet = descriptorSet;
9559 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009560 local_pData = nullptr;
9561 if (pData)
9562 {
9563 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
9564 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009565 countingStream->rewind();
9566 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009567 uint64_t cgen_var_740;
9568 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
9569 countingStream->write((uint64_t*)&cgen_var_740, 1 * 8);
9570 uint64_t cgen_var_741;
9571 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_741, 1);
9572 countingStream->write((uint64_t*)&cgen_var_741, 1 * 8);
9573 uint64_t cgen_var_742;
9574 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_742, 1);
9575 countingStream->write((uint64_t*)&cgen_var_742, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009576 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009577 uint64_t cgen_var_743 = (uint64_t)(uintptr_t)local_pData;
9578 countingStream->putBe64(cgen_var_743);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009579 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009580 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009581 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009582 }
9583 }
9584 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9585 countingStream->rewind();
9586 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
9587 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
9588 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009589 uint64_t cgen_var_744;
9590 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
9591 stream->write((uint64_t*)&cgen_var_744, 1 * 8);
9592 uint64_t cgen_var_745;
9593 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_745, 1);
9594 stream->write((uint64_t*)&cgen_var_745, 1 * 8);
9595 uint64_t cgen_var_746;
9596 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_746, 1);
9597 stream->write((uint64_t*)&cgen_var_746, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009598 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009599 uint64_t cgen_var_747 = (uint64_t)(uintptr_t)local_pData;
9600 stream->putBe64(cgen_var_747);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009601 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009602 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009603 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009604 }
9605}
9606
9607void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
9608 VkPhysicalDevice physicalDevice,
9609 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
9610 VkExternalBufferProperties* pExternalBufferProperties)
9611{
9612 auto stream = mImpl->stream();
9613 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009614 auto resources = mImpl->resources();
9615 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009616 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009617 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009618 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009619 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009620 local_pExternalBufferInfo = nullptr;
9621 if (pExternalBufferInfo)
9622 {
9623 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
9624 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
9625 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009626 countingStream->rewind();
9627 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009628 uint64_t cgen_var_748;
9629 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_748, 1);
9630 countingStream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009631 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009632 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9633 }
9634 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9635 countingStream->rewind();
9636 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
9637 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
9638 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009639 uint64_t cgen_var_749;
9640 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_749, 1);
9641 stream->write((uint64_t*)&cgen_var_749, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009642 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009643 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9644 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
9645}
9646
9647void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
9648 VkPhysicalDevice physicalDevice,
9649 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
9650 VkExternalFenceProperties* pExternalFenceProperties)
9651{
9652 auto stream = mImpl->stream();
9653 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009654 auto resources = mImpl->resources();
9655 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009656 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009657 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009658 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009659 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009660 local_pExternalFenceInfo = nullptr;
9661 if (pExternalFenceInfo)
9662 {
9663 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
9664 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
9665 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009666 countingStream->rewind();
9667 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009668 uint64_t cgen_var_750;
9669 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_750, 1);
9670 countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009671 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009672 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9673 }
9674 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9675 countingStream->rewind();
9676 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
9677 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
9678 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009679 uint64_t cgen_var_751;
9680 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_751, 1);
9681 stream->write((uint64_t*)&cgen_var_751, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009682 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009683 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9684 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
9685}
9686
9687void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
9688 VkPhysicalDevice physicalDevice,
9689 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
9690 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
9691{
9692 auto stream = mImpl->stream();
9693 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009694 auto resources = mImpl->resources();
9695 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009696 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009697 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009698 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009699 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009700 local_pExternalSemaphoreInfo = nullptr;
9701 if (pExternalSemaphoreInfo)
9702 {
9703 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
9704 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
9705 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009706 countingStream->rewind();
9707 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009708 uint64_t cgen_var_752;
9709 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_752, 1);
9710 countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009711 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009712 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9713 }
9714 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9715 countingStream->rewind();
9716 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
9717 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
9718 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009719 uint64_t cgen_var_753;
9720 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_753, 1);
9721 stream->write((uint64_t*)&cgen_var_753, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009722 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009723 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9724 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
9725}
9726
9727void VkEncoder::vkGetDescriptorSetLayoutSupport(
9728 VkDevice device,
9729 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
9730 VkDescriptorSetLayoutSupport* pSupport)
9731{
9732 auto stream = mImpl->stream();
9733 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009734 auto resources = mImpl->resources();
9735 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009736 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009737 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009738 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009739 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009740 local_pCreateInfo = nullptr;
9741 if (pCreateInfo)
9742 {
9743 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
9744 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
9745 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009746 countingStream->rewind();
9747 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009748 uint64_t cgen_var_754;
9749 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
9750 countingStream->write((uint64_t*)&cgen_var_754, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009751 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009752 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
9753 }
9754 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9755 countingStream->rewind();
9756 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
9757 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
9758 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009759 uint64_t cgen_var_755;
9760 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_755, 1);
9761 stream->write((uint64_t*)&cgen_var_755, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009762 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009763 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9764 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
9765}
9766
9767#endif
9768#ifdef VK_KHR_surface
9769void VkEncoder::vkDestroySurfaceKHR(
9770 VkInstance instance,
9771 VkSurfaceKHR surface,
9772 const VkAllocationCallbacks* pAllocator)
9773{
9774 auto stream = mImpl->stream();
9775 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009776 auto resources = mImpl->resources();
9777 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009778 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009779 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009780 VkSurfaceKHR local_surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009781 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009782 local_instance = instance;
9783 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009784 local_pAllocator = nullptr;
9785 if (pAllocator)
9786 {
9787 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
9788 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
9789 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08009790 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009791 countingStream->rewind();
9792 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009793 uint64_t cgen_var_756;
9794 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_756, 1);
9795 countingStream->write((uint64_t*)&cgen_var_756, 1 * 8);
9796 uint64_t cgen_var_757;
9797 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_757, 1);
9798 countingStream->write((uint64_t*)&cgen_var_757, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009799 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009800 uint64_t cgen_var_758 = (uint64_t)(uintptr_t)local_pAllocator;
9801 countingStream->putBe64(cgen_var_758);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009802 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009803 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009804 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009805 }
9806 }
9807 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9808 countingStream->rewind();
9809 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
9810 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
9811 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009812 uint64_t cgen_var_759;
9813 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_759, 1);
9814 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
9815 uint64_t cgen_var_760;
9816 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_760, 1);
9817 stream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009818 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009819 uint64_t cgen_var_761 = (uint64_t)(uintptr_t)local_pAllocator;
9820 stream->putBe64(cgen_var_761);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009821 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009822 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009823 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009824 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009825 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009826}
9827
9828VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
9829 VkPhysicalDevice physicalDevice,
9830 uint32_t queueFamilyIndex,
9831 VkSurfaceKHR surface,
9832 VkBool32* pSupported)
9833{
9834 auto stream = mImpl->stream();
9835 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009836 auto resources = mImpl->resources();
9837 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009838 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009839 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009840 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009841 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009842 local_physicalDevice = physicalDevice;
9843 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009844 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009845 countingStream->rewind();
9846 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009847 uint64_t cgen_var_762;
9848 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
9849 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009850 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009851 uint64_t cgen_var_763;
9852 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_763, 1);
9853 countingStream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009854 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
9855 }
9856 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9857 countingStream->rewind();
9858 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
9859 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
9860 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009861 uint64_t cgen_var_764;
9862 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_764, 1);
9863 stream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009864 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009865 uint64_t cgen_var_765;
9866 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_765, 1);
9867 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009868 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
9869 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
9870 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
9871 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009872 countingStream->clearPool();
9873 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009874 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009875 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
9876}
9877
9878VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
9879 VkPhysicalDevice physicalDevice,
9880 VkSurfaceKHR surface,
9881 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
9882{
9883 auto stream = mImpl->stream();
9884 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009885 auto resources = mImpl->resources();
9886 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009887 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009888 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009889 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009890 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009891 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009892 countingStream->rewind();
9893 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009894 uint64_t cgen_var_766;
9895 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_766, 1);
9896 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
9897 uint64_t cgen_var_767;
9898 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
9899 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009900 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9901 }
9902 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9903 countingStream->rewind();
9904 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
9905 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
9906 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009907 uint64_t cgen_var_768;
9908 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_768, 1);
9909 stream->write((uint64_t*)&cgen_var_768, 1 * 8);
9910 uint64_t cgen_var_769;
9911 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_769, 1);
9912 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009913 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9914 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
9915 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
9916 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009917 countingStream->clearPool();
9918 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009919 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009920 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
9921}
9922
9923VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
9924 VkPhysicalDevice physicalDevice,
9925 VkSurfaceKHR surface,
9926 uint32_t* pSurfaceFormatCount,
9927 VkSurfaceFormatKHR* pSurfaceFormats)
9928{
9929 auto stream = mImpl->stream();
9930 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009931 auto resources = mImpl->resources();
9932 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009933 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009934 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009935 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009936 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009937 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009938 countingStream->rewind();
9939 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009940 uint64_t cgen_var_770;
9941 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_770, 1);
9942 countingStream->write((uint64_t*)&cgen_var_770, 1 * 8);
9943 uint64_t cgen_var_771;
9944 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_771, 1);
9945 countingStream->write((uint64_t*)&cgen_var_771, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009946 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009947 uint64_t cgen_var_772 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9948 countingStream->putBe64(cgen_var_772);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009949 if (pSurfaceFormatCount)
9950 {
9951 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9952 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009953 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009954 uint64_t cgen_var_773 = (uint64_t)(uintptr_t)pSurfaceFormats;
9955 countingStream->putBe64(cgen_var_773);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009956 if (pSurfaceFormats)
9957 {
9958 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9959 {
9960 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9961 }
9962 }
9963 }
9964 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9965 countingStream->rewind();
9966 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
9967 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
9968 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009969 uint64_t cgen_var_774;
9970 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
9971 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
9972 uint64_t cgen_var_775;
9973 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
9974 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009975 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009976 uint64_t cgen_var_776 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
9977 stream->putBe64(cgen_var_776);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009978 if (pSurfaceFormatCount)
9979 {
9980 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
9981 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009982 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08009983 uint64_t cgen_var_777 = (uint64_t)(uintptr_t)pSurfaceFormats;
9984 stream->putBe64(cgen_var_777);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009985 if (pSurfaceFormats)
9986 {
9987 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
9988 {
9989 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
9990 }
9991 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009992 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009993 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08009994 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009995 if (pSurfaceFormatCount)
9996 {
9997 if (!(check_pSurfaceFormatCount))
9998 {
9999 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
10000 }
10001 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
10002 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010003 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010004 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010005 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010006 if (pSurfaceFormats)
10007 {
10008 if (!(check_pSurfaceFormats))
10009 {
10010 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
10011 }
10012 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
10013 {
10014 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
10015 }
10016 }
10017 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
10018 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010019 countingStream->clearPool();
10020 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010021 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010022 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
10023}
10024
10025VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
10026 VkPhysicalDevice physicalDevice,
10027 VkSurfaceKHR surface,
10028 uint32_t* pPresentModeCount,
10029 VkPresentModeKHR* pPresentModes)
10030{
10031 auto stream = mImpl->stream();
10032 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010033 auto resources = mImpl->resources();
10034 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010035 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010036 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010037 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010038 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010039 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010040 countingStream->rewind();
10041 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010042 uint64_t cgen_var_780;
10043 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
10044 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
10045 uint64_t cgen_var_781;
10046 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
10047 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010048 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010049 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pPresentModeCount;
10050 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010051 if (pPresentModeCount)
10052 {
10053 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10054 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010055 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010056 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pPresentModes;
10057 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010058 if (pPresentModes)
10059 {
10060 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10061 }
10062 }
10063 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10064 countingStream->rewind();
10065 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
10066 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
10067 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010068 uint64_t cgen_var_784;
10069 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
10070 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
10071 uint64_t cgen_var_785;
10072 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
10073 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010074 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010075 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pPresentModeCount;
10076 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010077 if (pPresentModeCount)
10078 {
10079 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10080 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010081 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010082 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pPresentModes;
10083 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010084 if (pPresentModes)
10085 {
10086 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10087 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010088 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010089 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010090 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010091 if (pPresentModeCount)
10092 {
10093 if (!(check_pPresentModeCount))
10094 {
10095 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
10096 }
10097 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
10098 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010099 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010100 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010101 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010102 if (pPresentModes)
10103 {
10104 if (!(check_pPresentModes))
10105 {
10106 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
10107 }
10108 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
10109 }
10110 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10111 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010112 countingStream->clearPool();
10113 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010114 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010115 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
10116}
10117
10118#endif
10119#ifdef VK_KHR_swapchain
10120VkResult VkEncoder::vkCreateSwapchainKHR(
10121 VkDevice device,
10122 const VkSwapchainCreateInfoKHR* pCreateInfo,
10123 const VkAllocationCallbacks* pAllocator,
10124 VkSwapchainKHR* pSwapchain)
10125{
10126 auto stream = mImpl->stream();
10127 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010128 auto resources = mImpl->resources();
10129 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010130 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010131 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010132 VkSwapchainCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010133 VkAllocationCallbacks* local_pAllocator;
10134 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010135 local_pCreateInfo = nullptr;
10136 if (pCreateInfo)
10137 {
10138 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
10139 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
10140 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010141 local_pAllocator = nullptr;
10142 if (pAllocator)
10143 {
10144 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10145 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10146 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010147 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010148 countingStream->rewind();
10149 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010150 uint64_t cgen_var_790;
10151 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_790, 1);
10152 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010153 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010154 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010155 uint64_t cgen_var_791 = (uint64_t)(uintptr_t)local_pAllocator;
10156 countingStream->putBe64(cgen_var_791);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010157 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010158 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010159 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010160 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010161 uint64_t cgen_var_792;
10162 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_792, 1);
10163 countingStream->write((uint64_t*)&cgen_var_792, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010164 }
10165 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10166 countingStream->rewind();
10167 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
10168 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
10169 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010170 uint64_t cgen_var_793;
10171 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_793, 1);
10172 stream->write((uint64_t*)&cgen_var_793, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010173 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010174 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010175 uint64_t cgen_var_794 = (uint64_t)(uintptr_t)local_pAllocator;
10176 stream->putBe64(cgen_var_794);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010177 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010178 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010179 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010180 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010181 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010182 uint64_t cgen_var_795;
10183 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_795, 1);
10184 stream->write((uint64_t*)&cgen_var_795, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010185 stream->setHandleMapping(resources->unwrapMapping());
10186 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010187 uint64_t cgen_var_796;
10188 stream->read((uint64_t*)&cgen_var_796, 8);
10189 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_796, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010190 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010191 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
10192 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010193 countingStream->clearPool();
10194 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010195 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010196 return vkCreateSwapchainKHR_VkResult_return;
10197}
10198
10199void VkEncoder::vkDestroySwapchainKHR(
10200 VkDevice device,
10201 VkSwapchainKHR swapchain,
10202 const VkAllocationCallbacks* pAllocator)
10203{
10204 auto stream = mImpl->stream();
10205 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010206 auto resources = mImpl->resources();
10207 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010208 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010209 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010210 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010211 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010212 local_device = device;
10213 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010214 local_pAllocator = nullptr;
10215 if (pAllocator)
10216 {
10217 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10218 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10219 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010220 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010221 countingStream->rewind();
10222 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010223 uint64_t cgen_var_797;
10224 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_797, 1);
10225 countingStream->write((uint64_t*)&cgen_var_797, 1 * 8);
10226 uint64_t cgen_var_798;
10227 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_798, 1);
10228 countingStream->write((uint64_t*)&cgen_var_798, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010229 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010230 uint64_t cgen_var_799 = (uint64_t)(uintptr_t)local_pAllocator;
10231 countingStream->putBe64(cgen_var_799);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010232 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010233 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010234 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010235 }
10236 }
10237 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10238 countingStream->rewind();
10239 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
10240 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
10241 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010242 uint64_t cgen_var_800;
10243 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
10244 stream->write((uint64_t*)&cgen_var_800, 1 * 8);
10245 uint64_t cgen_var_801;
10246 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_801, 1);
10247 stream->write((uint64_t*)&cgen_var_801, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010248 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010249 uint64_t cgen_var_802 = (uint64_t)(uintptr_t)local_pAllocator;
10250 stream->putBe64(cgen_var_802);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010251 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010252 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010253 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010254 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010255 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010256}
10257
10258VkResult VkEncoder::vkGetSwapchainImagesKHR(
10259 VkDevice device,
10260 VkSwapchainKHR swapchain,
10261 uint32_t* pSwapchainImageCount,
10262 VkImage* pSwapchainImages)
10263{
10264 auto stream = mImpl->stream();
10265 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010266 auto resources = mImpl->resources();
10267 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010268 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010269 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010270 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010271 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010272 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010273 countingStream->rewind();
10274 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010275 uint64_t cgen_var_803;
10276 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
10277 countingStream->write((uint64_t*)&cgen_var_803, 1 * 8);
10278 uint64_t cgen_var_804;
10279 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_804, 1);
10280 countingStream->write((uint64_t*)&cgen_var_804, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010281 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010282 uint64_t cgen_var_805 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10283 countingStream->putBe64(cgen_var_805);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010284 if (pSwapchainImageCount)
10285 {
10286 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10287 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010288 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010289 uint64_t cgen_var_806 = (uint64_t)(uintptr_t)pSwapchainImages;
10290 countingStream->putBe64(cgen_var_806);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010291 if (pSwapchainImages)
10292 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010293 if ((*(pSwapchainImageCount)))
10294 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010295 uint64_t* cgen_var_807;
10296 countingStream->alloc((void**)&cgen_var_807, (*(pSwapchainImageCount)) * 8);
10297 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_807, (*(pSwapchainImageCount)));
10298 countingStream->write((uint64_t*)cgen_var_807, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010299 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010300 }
10301 }
10302 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10303 countingStream->rewind();
10304 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
10305 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
10306 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010307 uint64_t cgen_var_808;
10308 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_808, 1);
10309 stream->write((uint64_t*)&cgen_var_808, 1 * 8);
10310 uint64_t cgen_var_809;
10311 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_809, 1);
10312 stream->write((uint64_t*)&cgen_var_809, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010313 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010314 uint64_t cgen_var_810 = (uint64_t)(uintptr_t)pSwapchainImageCount;
10315 stream->putBe64(cgen_var_810);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010316 if (pSwapchainImageCount)
10317 {
10318 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10319 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010320 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010321 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010322 uint64_t cgen_var_811 = (uint64_t)(uintptr_t)pSwapchainImages;
10323 stream->putBe64(cgen_var_811);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010324 if (pSwapchainImages)
10325 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010326 if ((*(pSwapchainImageCount)))
10327 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010328 uint64_t* cgen_var_812;
10329 stream->alloc((void**)&cgen_var_812, (*(pSwapchainImageCount)) * 8);
10330 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_812, (*(pSwapchainImageCount)));
10331 stream->write((uint64_t*)cgen_var_812, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010332 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010333 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010334 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010335 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010336 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010337 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010338 if (pSwapchainImageCount)
10339 {
10340 if (!(check_pSwapchainImageCount))
10341 {
10342 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
10343 }
10344 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
10345 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010346 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010347 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010348 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010349 if (pSwapchainImages)
10350 {
10351 if (!(check_pSwapchainImages))
10352 {
10353 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
10354 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080010355 if ((*(pSwapchainImageCount)))
10356 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010357 uint64_t* cgen_var_815;
10358 stream->alloc((void**)&cgen_var_815, (*(pSwapchainImageCount)) * 8);
10359 stream->read((uint64_t*)cgen_var_815, (*(pSwapchainImageCount)) * 8);
10360 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_815, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010361 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010362 }
10363 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
10364 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010365 countingStream->clearPool();
10366 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010367 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010368 return vkGetSwapchainImagesKHR_VkResult_return;
10369}
10370
10371VkResult VkEncoder::vkAcquireNextImageKHR(
10372 VkDevice device,
10373 VkSwapchainKHR swapchain,
10374 uint64_t timeout,
10375 VkSemaphore semaphore,
10376 VkFence fence,
10377 uint32_t* pImageIndex)
10378{
10379 auto stream = mImpl->stream();
10380 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010381 auto resources = mImpl->resources();
10382 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010383 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010384 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010385 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010386 uint64_t local_timeout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010387 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010388 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010389 local_device = device;
10390 local_swapchain = swapchain;
10391 local_timeout = timeout;
10392 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010393 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010394 countingStream->rewind();
10395 {
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010396 uint64_t cgen_var_816;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010397 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_816, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010398 countingStream->write((uint64_t*)&cgen_var_816, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010399 uint64_t cgen_var_817;
10400 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_817, 1);
10401 countingStream->write((uint64_t*)&cgen_var_817, 1 * 8);
10402 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10403 uint64_t cgen_var_818;
10404 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_818, 1);
10405 countingStream->write((uint64_t*)&cgen_var_818, 1 * 8);
10406 uint64_t cgen_var_819;
10407 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_819, 1);
10408 countingStream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010409 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10410 }
10411 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10412 countingStream->rewind();
10413 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
10414 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
10415 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010416 uint64_t cgen_var_820;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010417 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_820, 1);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080010418 stream->write((uint64_t*)&cgen_var_820, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010419 uint64_t cgen_var_821;
10420 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_821, 1);
10421 stream->write((uint64_t*)&cgen_var_821, 1 * 8);
10422 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
10423 uint64_t cgen_var_822;
10424 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_822, 1);
10425 stream->write((uint64_t*)&cgen_var_822, 1 * 8);
10426 uint64_t cgen_var_823;
10427 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_823, 1);
10428 stream->write((uint64_t*)&cgen_var_823, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010429 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10430 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10431 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
10432 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010433 countingStream->clearPool();
10434 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010435 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010436 return vkAcquireNextImageKHR_VkResult_return;
10437}
10438
10439VkResult VkEncoder::vkQueuePresentKHR(
10440 VkQueue queue,
10441 const VkPresentInfoKHR* pPresentInfo)
10442{
10443 auto stream = mImpl->stream();
10444 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010445 auto resources = mImpl->resources();
10446 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010447 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010448 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010449 VkPresentInfoKHR* local_pPresentInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010450 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010451 local_pPresentInfo = nullptr;
10452 if (pPresentInfo)
10453 {
10454 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
10455 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
10456 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010457 countingStream->rewind();
10458 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010459 uint64_t cgen_var_824;
10460 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_824, 1);
10461 countingStream->write((uint64_t*)&cgen_var_824, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010462 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010463 }
10464 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10465 countingStream->rewind();
10466 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
10467 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
10468 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010469 uint64_t cgen_var_825;
10470 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_825, 1);
10471 stream->write((uint64_t*)&cgen_var_825, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010472 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010473 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
10474 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010475 countingStream->clearPool();
10476 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010477 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010478 return vkQueuePresentKHR_VkResult_return;
10479}
10480
10481VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
10482 VkDevice device,
10483 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
10484{
10485 auto stream = mImpl->stream();
10486 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010487 auto resources = mImpl->resources();
10488 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010489 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010490 VkDevice local_device;
10491 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010492 countingStream->rewind();
10493 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010494 uint64_t cgen_var_826;
10495 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
10496 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010497 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10498 }
10499 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10500 countingStream->rewind();
10501 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
10502 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
10503 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010504 uint64_t cgen_var_827;
10505 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_827, 1);
10506 stream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010507 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10508 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
10509 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
10510 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010511 countingStream->clearPool();
10512 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010513 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010514 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
10515}
10516
10517VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
10518 VkDevice device,
10519 VkSurfaceKHR surface,
10520 VkDeviceGroupPresentModeFlagsKHR* pModes)
10521{
10522 auto stream = mImpl->stream();
10523 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010524 auto resources = mImpl->resources();
10525 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010526 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010527 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010528 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010529 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010530 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010531 countingStream->rewind();
10532 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010533 uint64_t cgen_var_828;
10534 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_828, 1);
10535 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
10536 uint64_t cgen_var_829;
10537 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_829, 1);
10538 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010539 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010540 uint64_t cgen_var_830 = (uint64_t)(uintptr_t)pModes;
10541 countingStream->putBe64(cgen_var_830);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010542 if (pModes)
10543 {
10544 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10545 }
10546 }
10547 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10548 countingStream->rewind();
10549 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
10550 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
10551 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010552 uint64_t cgen_var_831;
10553 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_831, 1);
10554 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
10555 uint64_t cgen_var_832;
10556 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_832, 1);
10557 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010558 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010559 uint64_t cgen_var_833 = (uint64_t)(uintptr_t)pModes;
10560 stream->putBe64(cgen_var_833);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010561 if (pModes)
10562 {
10563 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10564 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010565 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010566 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010567 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010568 if (pModes)
10569 {
10570 if (!(check_pModes))
10571 {
10572 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
10573 }
10574 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
10575 }
10576 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
10577 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010578 countingStream->clearPool();
10579 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010580 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010581 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
10582}
10583
10584VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
10585 VkPhysicalDevice physicalDevice,
10586 VkSurfaceKHR surface,
10587 uint32_t* pRectCount,
10588 VkRect2D* pRects)
10589{
10590 auto stream = mImpl->stream();
10591 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010592 auto resources = mImpl->resources();
10593 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010594 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010595 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010596 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010597 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010598 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010599 countingStream->rewind();
10600 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010601 uint64_t cgen_var_835;
10602 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_835, 1);
10603 countingStream->write((uint64_t*)&cgen_var_835, 1 * 8);
10604 uint64_t cgen_var_836;
10605 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_836, 1);
10606 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010607 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010608 uint64_t cgen_var_837 = (uint64_t)(uintptr_t)pRectCount;
10609 countingStream->putBe64(cgen_var_837);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010610 if (pRectCount)
10611 {
10612 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10613 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010614 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010615 uint64_t cgen_var_838 = (uint64_t)(uintptr_t)pRects;
10616 countingStream->putBe64(cgen_var_838);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010617 if (pRects)
10618 {
10619 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10620 {
10621 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
10622 }
10623 }
10624 }
10625 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10626 countingStream->rewind();
10627 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
10628 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
10629 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010630 uint64_t cgen_var_839;
10631 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_839, 1);
10632 stream->write((uint64_t*)&cgen_var_839, 1 * 8);
10633 uint64_t cgen_var_840;
10634 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_840, 1);
10635 stream->write((uint64_t*)&cgen_var_840, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010636 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010637 uint64_t cgen_var_841 = (uint64_t)(uintptr_t)pRectCount;
10638 stream->putBe64(cgen_var_841);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010639 if (pRectCount)
10640 {
10641 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
10642 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010643 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010644 uint64_t cgen_var_842 = (uint64_t)(uintptr_t)pRects;
10645 stream->putBe64(cgen_var_842);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010646 if (pRects)
10647 {
10648 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10649 {
10650 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10651 }
10652 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010653 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010654 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010655 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010656 if (pRectCount)
10657 {
10658 if (!(check_pRectCount))
10659 {
10660 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
10661 }
10662 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
10663 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010664 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010665 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010666 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010667 if (pRects)
10668 {
10669 if (!(check_pRects))
10670 {
10671 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
10672 }
10673 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
10674 {
10675 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
10676 }
10677 }
10678 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
10679 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010680 countingStream->clearPool();
10681 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010682 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010683 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
10684}
10685
10686VkResult VkEncoder::vkAcquireNextImage2KHR(
10687 VkDevice device,
10688 const VkAcquireNextImageInfoKHR* pAcquireInfo,
10689 uint32_t* pImageIndex)
10690{
10691 auto stream = mImpl->stream();
10692 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010693 auto resources = mImpl->resources();
10694 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010695 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010696 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010697 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010698 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010699 local_pAcquireInfo = nullptr;
10700 if (pAcquireInfo)
10701 {
10702 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
10703 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
10704 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010705 countingStream->rewind();
10706 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010707 uint64_t cgen_var_845;
10708 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_845, 1);
10709 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010710 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010711 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10712 }
10713 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10714 countingStream->rewind();
10715 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
10716 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
10717 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010718 uint64_t cgen_var_846;
10719 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_846, 1);
10720 stream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010721 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010722 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
10723 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
10724 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
10725 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010726 countingStream->clearPool();
10727 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010728 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010729 return vkAcquireNextImage2KHR_VkResult_return;
10730}
10731
10732#endif
10733#ifdef VK_KHR_display
10734VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
10735 VkPhysicalDevice physicalDevice,
10736 uint32_t* pPropertyCount,
10737 VkDisplayPropertiesKHR* pProperties)
10738{
10739 auto stream = mImpl->stream();
10740 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010741 auto resources = mImpl->resources();
10742 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010743 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010744 VkPhysicalDevice local_physicalDevice;
10745 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010746 countingStream->rewind();
10747 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010748 uint64_t cgen_var_847;
10749 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_847, 1);
10750 countingStream->write((uint64_t*)&cgen_var_847, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010751 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010752 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pPropertyCount;
10753 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010754 if (pPropertyCount)
10755 {
10756 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10757 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010758 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010759 uint64_t cgen_var_849 = (uint64_t)(uintptr_t)pProperties;
10760 countingStream->putBe64(cgen_var_849);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010761 if (pProperties)
10762 {
10763 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10764 {
10765 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
10766 }
10767 }
10768 }
10769 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10770 countingStream->rewind();
10771 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
10772 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
10773 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010774 uint64_t cgen_var_850;
10775 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_850, 1);
10776 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010777 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010778 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pPropertyCount;
10779 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010780 if (pPropertyCount)
10781 {
10782 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10783 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010784 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010785 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pProperties;
10786 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010787 if (pProperties)
10788 {
10789 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10790 {
10791 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10792 }
10793 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010794 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010795 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010796 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010797 if (pPropertyCount)
10798 {
10799 if (!(check_pPropertyCount))
10800 {
10801 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10802 }
10803 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10804 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010805 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010806 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010807 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010808 if (pProperties)
10809 {
10810 if (!(check_pProperties))
10811 {
10812 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10813 }
10814 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10815 {
10816 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
10817 }
10818 }
10819 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
10820 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010821 countingStream->clearPool();
10822 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010823 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010824 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
10825}
10826
10827VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
10828 VkPhysicalDevice physicalDevice,
10829 uint32_t* pPropertyCount,
10830 VkDisplayPlanePropertiesKHR* pProperties)
10831{
10832 auto stream = mImpl->stream();
10833 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010834 auto resources = mImpl->resources();
10835 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010836 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010837 VkPhysicalDevice local_physicalDevice;
10838 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010839 countingStream->rewind();
10840 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010841 uint64_t cgen_var_855;
10842 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_855, 1);
10843 countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010844 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010845 uint64_t cgen_var_856 = (uint64_t)(uintptr_t)pPropertyCount;
10846 countingStream->putBe64(cgen_var_856);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010847 if (pPropertyCount)
10848 {
10849 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10850 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010851 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010852 uint64_t cgen_var_857 = (uint64_t)(uintptr_t)pProperties;
10853 countingStream->putBe64(cgen_var_857);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010854 if (pProperties)
10855 {
10856 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10857 {
10858 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10859 }
10860 }
10861 }
10862 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10863 countingStream->rewind();
10864 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
10865 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
10866 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010867 uint64_t cgen_var_858;
10868 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_858, 1);
10869 stream->write((uint64_t*)&cgen_var_858, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010870 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010871 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pPropertyCount;
10872 stream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010873 if (pPropertyCount)
10874 {
10875 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10876 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010877 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010878 uint64_t cgen_var_860 = (uint64_t)(uintptr_t)pProperties;
10879 stream->putBe64(cgen_var_860);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010880 if (pProperties)
10881 {
10882 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10883 {
10884 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10885 }
10886 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010887 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010888 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010889 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010890 if (pPropertyCount)
10891 {
10892 if (!(check_pPropertyCount))
10893 {
10894 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10895 }
10896 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10897 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010898 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010899 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010900 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010901 if (pProperties)
10902 {
10903 if (!(check_pProperties))
10904 {
10905 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10906 }
10907 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10908 {
10909 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
10910 }
10911 }
10912 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
10913 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010914 countingStream->clearPool();
10915 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010916 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010917 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
10918}
10919
10920VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
10921 VkPhysicalDevice physicalDevice,
10922 uint32_t planeIndex,
10923 uint32_t* pDisplayCount,
10924 VkDisplayKHR* pDisplays)
10925{
10926 auto stream = mImpl->stream();
10927 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010928 auto resources = mImpl->resources();
10929 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010930 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010931 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010932 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010933 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010934 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010935 countingStream->rewind();
10936 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010937 uint64_t cgen_var_863;
10938 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_863, 1);
10939 countingStream->write((uint64_t*)&cgen_var_863, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010940 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010941 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010942 uint64_t cgen_var_864 = (uint64_t)(uintptr_t)pDisplayCount;
10943 countingStream->putBe64(cgen_var_864);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010944 if (pDisplayCount)
10945 {
10946 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10947 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010948 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010949 uint64_t cgen_var_865 = (uint64_t)(uintptr_t)pDisplays;
10950 countingStream->putBe64(cgen_var_865);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010951 if (pDisplays)
10952 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010953 if ((*(pDisplayCount)))
10954 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010955 uint64_t* cgen_var_866;
10956 countingStream->alloc((void**)&cgen_var_866, (*(pDisplayCount)) * 8);
10957 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_866, (*(pDisplayCount)));
10958 countingStream->write((uint64_t*)cgen_var_866, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010959 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010960 }
10961 }
10962 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10963 countingStream->rewind();
10964 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
10965 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
10966 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010967 uint64_t cgen_var_867;
10968 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_867, 1);
10969 stream->write((uint64_t*)&cgen_var_867, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010970 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010971 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010972 uint64_t cgen_var_868 = (uint64_t)(uintptr_t)pDisplayCount;
10973 stream->putBe64(cgen_var_868);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010974 if (pDisplayCount)
10975 {
10976 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
10977 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010978 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010979 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010980 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pDisplays;
10981 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010982 if (pDisplays)
10983 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080010984 if ((*(pDisplayCount)))
10985 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080010986 uint64_t* cgen_var_870;
10987 stream->alloc((void**)&cgen_var_870, (*(pDisplayCount)) * 8);
10988 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_870, (*(pDisplayCount)));
10989 stream->write((uint64_t*)cgen_var_870, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080010990 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010991 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010992 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010993 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010994 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010995 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010996 if (pDisplayCount)
10997 {
10998 if (!(check_pDisplayCount))
10999 {
11000 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
11001 }
11002 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
11003 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011004 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011005 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011006 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011007 if (pDisplays)
11008 {
11009 if (!(check_pDisplays))
11010 {
11011 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
11012 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011013 if ((*(pDisplayCount)))
11014 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011015 uint64_t* cgen_var_873;
11016 stream->alloc((void**)&cgen_var_873, (*(pDisplayCount)) * 8);
11017 stream->read((uint64_t*)cgen_var_873, (*(pDisplayCount)) * 8);
11018 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_873, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011019 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011020 }
11021 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
11022 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011023 countingStream->clearPool();
11024 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011025 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011026 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
11027}
11028
11029VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
11030 VkPhysicalDevice physicalDevice,
11031 VkDisplayKHR display,
11032 uint32_t* pPropertyCount,
11033 VkDisplayModePropertiesKHR* pProperties)
11034{
11035 auto stream = mImpl->stream();
11036 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011037 auto resources = mImpl->resources();
11038 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011039 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011040 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011041 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011042 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011043 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011044 countingStream->rewind();
11045 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011046 uint64_t cgen_var_874;
11047 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_874, 1);
11048 countingStream->write((uint64_t*)&cgen_var_874, 1 * 8);
11049 uint64_t cgen_var_875;
11050 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_875, 1);
11051 countingStream->write((uint64_t*)&cgen_var_875, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011052 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011053 uint64_t cgen_var_876 = (uint64_t)(uintptr_t)pPropertyCount;
11054 countingStream->putBe64(cgen_var_876);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011055 if (pPropertyCount)
11056 {
11057 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11058 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011059 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011060 uint64_t cgen_var_877 = (uint64_t)(uintptr_t)pProperties;
11061 countingStream->putBe64(cgen_var_877);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011062 if (pProperties)
11063 {
11064 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11065 {
11066 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11067 }
11068 }
11069 }
11070 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11071 countingStream->rewind();
11072 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
11073 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
11074 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011075 uint64_t cgen_var_878;
11076 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_878, 1);
11077 stream->write((uint64_t*)&cgen_var_878, 1 * 8);
11078 uint64_t cgen_var_879;
11079 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_879, 1);
11080 stream->write((uint64_t*)&cgen_var_879, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011081 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011082 uint64_t cgen_var_880 = (uint64_t)(uintptr_t)pPropertyCount;
11083 stream->putBe64(cgen_var_880);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011084 if (pPropertyCount)
11085 {
11086 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
11087 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011088 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011089 uint64_t cgen_var_881 = (uint64_t)(uintptr_t)pProperties;
11090 stream->putBe64(cgen_var_881);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011091 if (pProperties)
11092 {
11093 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11094 {
11095 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11096 }
11097 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011098 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011099 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011100 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011101 if (pPropertyCount)
11102 {
11103 if (!(check_pPropertyCount))
11104 {
11105 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
11106 }
11107 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
11108 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011109 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011110 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011111 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011112 if (pProperties)
11113 {
11114 if (!(check_pProperties))
11115 {
11116 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
11117 }
11118 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
11119 {
11120 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
11121 }
11122 }
11123 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
11124 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011125 countingStream->clearPool();
11126 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011127 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011128 return vkGetDisplayModePropertiesKHR_VkResult_return;
11129}
11130
11131VkResult VkEncoder::vkCreateDisplayModeKHR(
11132 VkPhysicalDevice physicalDevice,
11133 VkDisplayKHR display,
11134 const VkDisplayModeCreateInfoKHR* pCreateInfo,
11135 const VkAllocationCallbacks* pAllocator,
11136 VkDisplayModeKHR* pMode)
11137{
11138 auto stream = mImpl->stream();
11139 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011140 auto resources = mImpl->resources();
11141 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011142 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011143 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011144 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011145 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011146 VkAllocationCallbacks* local_pAllocator;
11147 local_physicalDevice = physicalDevice;
11148 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011149 local_pCreateInfo = nullptr;
11150 if (pCreateInfo)
11151 {
11152 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
11153 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
11154 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011155 local_pAllocator = nullptr;
11156 if (pAllocator)
11157 {
11158 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11159 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11160 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011161 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011162 countingStream->rewind();
11163 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011164 uint64_t cgen_var_884;
11165 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
11166 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
11167 uint64_t cgen_var_885;
11168 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
11169 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011170 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011171 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011172 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)local_pAllocator;
11173 countingStream->putBe64(cgen_var_886);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011174 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011175 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011176 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011177 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011178 uint64_t cgen_var_887;
11179 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_887, 1);
11180 countingStream->write((uint64_t*)&cgen_var_887, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011181 }
11182 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11183 countingStream->rewind();
11184 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
11185 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
11186 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011187 uint64_t cgen_var_888;
11188 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
11189 stream->write((uint64_t*)&cgen_var_888, 1 * 8);
11190 uint64_t cgen_var_889;
11191 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
11192 stream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011193 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011194 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011195 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)local_pAllocator;
11196 stream->putBe64(cgen_var_890);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011197 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011198 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011199 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011200 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011201 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011202 uint64_t cgen_var_891;
11203 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_891, 1);
11204 stream->write((uint64_t*)&cgen_var_891, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011205 stream->setHandleMapping(resources->unwrapMapping());
11206 stream->setHandleMapping(resources->createMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011207 uint64_t cgen_var_892;
11208 stream->read((uint64_t*)&cgen_var_892, 8);
11209 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_892, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011210 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011211 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
11212 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011213 countingStream->clearPool();
11214 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011215 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011216 return vkCreateDisplayModeKHR_VkResult_return;
11217}
11218
11219VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
11220 VkPhysicalDevice physicalDevice,
11221 VkDisplayModeKHR mode,
11222 uint32_t planeIndex,
11223 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
11224{
11225 auto stream = mImpl->stream();
11226 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011227 auto resources = mImpl->resources();
11228 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011229 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011230 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011231 VkDisplayModeKHR local_mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011232 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011233 local_physicalDevice = physicalDevice;
11234 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011235 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011236 countingStream->rewind();
11237 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011238 uint64_t cgen_var_893;
11239 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_893, 1);
11240 countingStream->write((uint64_t*)&cgen_var_893, 1 * 8);
11241 uint64_t cgen_var_894;
11242 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_894, 1);
11243 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011244 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011245 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11246 }
11247 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11248 countingStream->rewind();
11249 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
11250 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
11251 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011252 uint64_t cgen_var_895;
11253 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_895, 1);
11254 stream->write((uint64_t*)&cgen_var_895, 1 * 8);
11255 uint64_t cgen_var_896;
11256 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_896, 1);
11257 stream->write((uint64_t*)&cgen_var_896, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011258 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011259 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11260 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
11261 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
11262 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011263 countingStream->clearPool();
11264 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011265 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011266 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
11267}
11268
11269VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
11270 VkInstance instance,
11271 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
11272 const VkAllocationCallbacks* pAllocator,
11273 VkSurfaceKHR* pSurface)
11274{
11275 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 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011281 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011282 VkAllocationCallbacks* local_pAllocator;
11283 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011284 local_pCreateInfo = nullptr;
11285 if (pCreateInfo)
11286 {
11287 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
11288 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
11289 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011290 local_pAllocator = nullptr;
11291 if (pAllocator)
11292 {
11293 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11294 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11295 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011296 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011297 countingStream->rewind();
11298 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011299 uint64_t cgen_var_897;
11300 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_897, 1);
11301 countingStream->write((uint64_t*)&cgen_var_897, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011302 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011303 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011304 uint64_t cgen_var_898 = (uint64_t)(uintptr_t)local_pAllocator;
11305 countingStream->putBe64(cgen_var_898);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011306 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011307 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011308 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011309 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011310 uint64_t cgen_var_899;
11311 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_899, 1);
11312 countingStream->write((uint64_t*)&cgen_var_899, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011313 }
11314 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11315 countingStream->rewind();
11316 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
11317 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
11318 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011319 uint64_t cgen_var_900;
11320 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_900, 1);
11321 stream->write((uint64_t*)&cgen_var_900, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011322 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011323 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011324 uint64_t cgen_var_901 = (uint64_t)(uintptr_t)local_pAllocator;
11325 stream->putBe64(cgen_var_901);
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 Yange4008a02018-11-18 12:22:48 -080011330 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011331 uint64_t cgen_var_902;
11332 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_902, 1);
11333 stream->write((uint64_t*)&cgen_var_902, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011334 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011335 uint64_t cgen_var_903;
11336 stream->read((uint64_t*)&cgen_var_903, 8);
11337 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_903, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011338 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
11339 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011340 countingStream->clearPool();
11341 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011342 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011343 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
11344}
11345
11346#endif
11347#ifdef VK_KHR_display_swapchain
11348VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
11349 VkDevice device,
11350 uint32_t swapchainCount,
11351 const VkSwapchainCreateInfoKHR* pCreateInfos,
11352 const VkAllocationCallbacks* pAllocator,
11353 VkSwapchainKHR* pSwapchains)
11354{
11355 auto stream = mImpl->stream();
11356 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011357 auto resources = mImpl->resources();
11358 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011359 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011360 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011361 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011362 VkSwapchainCreateInfoKHR* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011363 VkAllocationCallbacks* local_pAllocator;
11364 local_device = device;
11365 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011366 local_pCreateInfos = nullptr;
11367 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011368 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011369 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011370 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11371 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011372 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011373 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011374 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011375 local_pAllocator = nullptr;
11376 if (pAllocator)
11377 {
11378 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11379 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11380 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011381 local_pAllocator = nullptr;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011382 countingStream->rewind();
11383 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011384 uint64_t cgen_var_904;
11385 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_904, 1);
11386 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011387 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
11388 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11389 {
11390 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
11391 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011392 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011393 uint64_t cgen_var_905 = (uint64_t)(uintptr_t)local_pAllocator;
11394 countingStream->putBe64(cgen_var_905);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011395 if (local_pAllocator)
11396 {
11397 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011398 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080011399 if (((swapchainCount)))
11400 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011401 uint64_t* cgen_var_906;
11402 countingStream->alloc((void**)&cgen_var_906, ((swapchainCount)) * 8);
11403 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_906, ((swapchainCount)));
11404 countingStream->write((uint64_t*)cgen_var_906, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011405 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011406 }
11407 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11408 countingStream->rewind();
11409 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
11410 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
11411 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011412 uint64_t cgen_var_907;
11413 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_907, 1);
11414 stream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011415 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011416 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
11417 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011418 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011419 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011420 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011421 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
11422 stream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011423 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011424 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011425 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011426 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011427 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080011428 if (((swapchainCount)))
11429 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011430 uint64_t* cgen_var_909;
11431 stream->alloc((void**)&cgen_var_909, ((swapchainCount)) * 8);
11432 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_909, ((swapchainCount)));
11433 stream->write((uint64_t*)cgen_var_909, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080011434 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011435 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -080011436 if (((swapchainCount)))
11437 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011438 uint64_t* cgen_var_910;
11439 stream->alloc((void**)&cgen_var_910, ((swapchainCount)) * 8);
11440 stream->read((uint64_t*)cgen_var_910, ((swapchainCount)) * 8);
11441 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_910, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011442 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011443 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
11444 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011445 countingStream->clearPool();
11446 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011447 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011448 return vkCreateSharedSwapchainsKHR_VkResult_return;
11449}
11450
11451#endif
11452#ifdef VK_KHR_xlib_surface
11453VkResult VkEncoder::vkCreateXlibSurfaceKHR(
11454 VkInstance instance,
11455 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
11456 const VkAllocationCallbacks* pAllocator,
11457 VkSurfaceKHR* pSurface)
11458{
11459 auto stream = mImpl->stream();
11460 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011461 auto resources = mImpl->resources();
11462 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011463 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011464 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011465 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011466 VkAllocationCallbacks* local_pAllocator;
11467 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011468 local_pCreateInfo = nullptr;
11469 if (pCreateInfo)
11470 {
11471 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
11472 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
11473 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011474 local_pAllocator = nullptr;
11475 if (pAllocator)
11476 {
11477 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11478 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11479 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011480 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011481 countingStream->rewind();
11482 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011483 uint64_t cgen_var_911;
11484 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_911, 1);
11485 countingStream->write((uint64_t*)&cgen_var_911, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011486 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011487 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011488 uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator;
11489 countingStream->putBe64(cgen_var_912);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011490 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011491 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011492 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011493 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011494 uint64_t cgen_var_913;
11495 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_913, 1);
11496 countingStream->write((uint64_t*)&cgen_var_913, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011497 }
11498 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11499 countingStream->rewind();
11500 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
11501 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
11502 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011503 uint64_t cgen_var_914;
11504 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_914, 1);
11505 stream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011506 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011507 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011508 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
11509 stream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011510 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011511 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011512 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011513 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011514 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011515 uint64_t cgen_var_916;
11516 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_916, 1);
11517 stream->write((uint64_t*)&cgen_var_916, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011518 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011519 uint64_t cgen_var_917;
11520 stream->read((uint64_t*)&cgen_var_917, 8);
11521 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_917, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011522 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
11523 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011524 countingStream->clearPool();
11525 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011526 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011527 return vkCreateXlibSurfaceKHR_VkResult_return;
11528}
11529
11530VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
11531 VkPhysicalDevice physicalDevice,
11532 uint32_t queueFamilyIndex,
11533 Display* dpy,
11534 VisualID visualID)
11535{
11536 auto stream = mImpl->stream();
11537 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011538 auto resources = mImpl->resources();
11539 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011540 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011541 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011542 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011543 VisualID local_visualID;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011544 local_physicalDevice = physicalDevice;
11545 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011546 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011547 countingStream->rewind();
11548 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011549 uint64_t cgen_var_918;
11550 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_918, 1);
11551 countingStream->write((uint64_t*)&cgen_var_918, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011552 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011553 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011554 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011555 }
11556 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11557 countingStream->rewind();
11558 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
11559 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
11560 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011561 uint64_t cgen_var_919;
11562 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_919, 1);
11563 stream->write((uint64_t*)&cgen_var_919, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011564 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011565 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011566 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011567 stream->read((Display*)dpy, sizeof(Display));
11568 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11569 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011570 countingStream->clearPool();
11571 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011572 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011573 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
11574}
11575
11576#endif
11577#ifdef VK_KHR_xcb_surface
11578VkResult VkEncoder::vkCreateXcbSurfaceKHR(
11579 VkInstance instance,
11580 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
11581 const VkAllocationCallbacks* pAllocator,
11582 VkSurfaceKHR* pSurface)
11583{
11584 auto stream = mImpl->stream();
11585 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011586 auto resources = mImpl->resources();
11587 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011588 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011589 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011590 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011591 VkAllocationCallbacks* local_pAllocator;
11592 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011593 local_pCreateInfo = nullptr;
11594 if (pCreateInfo)
11595 {
11596 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
11597 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
11598 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011599 local_pAllocator = nullptr;
11600 if (pAllocator)
11601 {
11602 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11603 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11604 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011605 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011606 countingStream->rewind();
11607 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011608 uint64_t cgen_var_920;
11609 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_920, 1);
11610 countingStream->write((uint64_t*)&cgen_var_920, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011611 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011612 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011613 uint64_t cgen_var_921 = (uint64_t)(uintptr_t)local_pAllocator;
11614 countingStream->putBe64(cgen_var_921);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011615 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011616 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011617 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011618 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011619 uint64_t cgen_var_922;
11620 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_922, 1);
11621 countingStream->write((uint64_t*)&cgen_var_922, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011622 }
11623 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11624 countingStream->rewind();
11625 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
11626 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
11627 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011628 uint64_t cgen_var_923;
11629 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_923, 1);
11630 stream->write((uint64_t*)&cgen_var_923, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011631 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011632 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011633 uint64_t cgen_var_924 = (uint64_t)(uintptr_t)local_pAllocator;
11634 stream->putBe64(cgen_var_924);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011635 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011636 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011637 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011638 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011639 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011640 uint64_t cgen_var_925;
11641 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_925, 1);
11642 stream->write((uint64_t*)&cgen_var_925, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011643 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011644 uint64_t cgen_var_926;
11645 stream->read((uint64_t*)&cgen_var_926, 8);
11646 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_926, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011647 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
11648 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011649 countingStream->clearPool();
11650 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011651 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011652 return vkCreateXcbSurfaceKHR_VkResult_return;
11653}
11654
11655VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
11656 VkPhysicalDevice physicalDevice,
11657 uint32_t queueFamilyIndex,
11658 xcb_connection_t* connection,
11659 xcb_visualid_t visual_id)
11660{
11661 auto stream = mImpl->stream();
11662 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011663 auto resources = mImpl->resources();
11664 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011665 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011666 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011667 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011668 xcb_visualid_t local_visual_id;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011669 local_physicalDevice = physicalDevice;
11670 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011671 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011672 countingStream->rewind();
11673 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011674 uint64_t cgen_var_927;
11675 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_927, 1);
11676 countingStream->write((uint64_t*)&cgen_var_927, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011677 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011678 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011679 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011680 }
11681 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11682 countingStream->rewind();
11683 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
11684 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
11685 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011686 uint64_t cgen_var_928;
11687 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
11688 stream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011689 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011690 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011691 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011692 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
11693 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11694 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011695 countingStream->clearPool();
11696 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011697 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011698 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
11699}
11700
11701#endif
11702#ifdef VK_KHR_wayland_surface
11703VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
11704 VkInstance instance,
11705 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
11706 const VkAllocationCallbacks* pAllocator,
11707 VkSurfaceKHR* pSurface)
11708{
11709 auto stream = mImpl->stream();
11710 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011711 auto resources = mImpl->resources();
11712 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011713 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011714 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011715 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011716 VkAllocationCallbacks* local_pAllocator;
11717 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011718 local_pCreateInfo = nullptr;
11719 if (pCreateInfo)
11720 {
11721 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
11722 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
11723 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011724 local_pAllocator = nullptr;
11725 if (pAllocator)
11726 {
11727 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11728 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11729 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011730 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011731 countingStream->rewind();
11732 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011733 uint64_t cgen_var_929;
11734 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_929, 1);
11735 countingStream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011736 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011737 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011738 uint64_t cgen_var_930 = (uint64_t)(uintptr_t)local_pAllocator;
11739 countingStream->putBe64(cgen_var_930);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011740 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011741 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011742 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011743 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011744 uint64_t cgen_var_931;
11745 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_931, 1);
11746 countingStream->write((uint64_t*)&cgen_var_931, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011747 }
11748 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11749 countingStream->rewind();
11750 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
11751 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
11752 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011753 uint64_t cgen_var_932;
11754 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_932, 1);
11755 stream->write((uint64_t*)&cgen_var_932, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011756 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011757 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011758 uint64_t cgen_var_933 = (uint64_t)(uintptr_t)local_pAllocator;
11759 stream->putBe64(cgen_var_933);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011760 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011761 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011762 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011763 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011764 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011765 uint64_t cgen_var_934;
11766 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_934, 1);
11767 stream->write((uint64_t*)&cgen_var_934, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011768 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011769 uint64_t cgen_var_935;
11770 stream->read((uint64_t*)&cgen_var_935, 8);
11771 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_935, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011772 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
11773 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011774 countingStream->clearPool();
11775 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011776 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011777 return vkCreateWaylandSurfaceKHR_VkResult_return;
11778}
11779
11780VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
11781 VkPhysicalDevice physicalDevice,
11782 uint32_t queueFamilyIndex,
11783 wl_display* display)
11784{
11785 auto stream = mImpl->stream();
11786 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011787 auto resources = mImpl->resources();
11788 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011789 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011790 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011791 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011792 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011793 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011794 countingStream->rewind();
11795 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011796 uint64_t cgen_var_936;
11797 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_936, 1);
11798 countingStream->write((uint64_t*)&cgen_var_936, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011799 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011800 countingStream->write((wl_display*)display, sizeof(wl_display));
11801 }
11802 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11803 countingStream->rewind();
11804 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
11805 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
11806 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011807 uint64_t cgen_var_937;
11808 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
11809 stream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011810 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011811 stream->write((wl_display*)display, sizeof(wl_display));
11812 stream->read((wl_display*)display, sizeof(wl_display));
11813 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11814 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011815 countingStream->clearPool();
11816 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011817 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011818 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
11819}
11820
11821#endif
11822#ifdef VK_KHR_mir_surface
11823VkResult VkEncoder::vkCreateMirSurfaceKHR(
11824 VkInstance instance,
11825 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
11826 const VkAllocationCallbacks* pAllocator,
11827 VkSurfaceKHR* pSurface)
11828{
11829 auto stream = mImpl->stream();
11830 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011831 auto resources = mImpl->resources();
11832 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011833 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011834 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011835 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011836 VkAllocationCallbacks* local_pAllocator;
11837 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011838 local_pCreateInfo = nullptr;
11839 if (pCreateInfo)
11840 {
11841 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
11842 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
11843 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011844 local_pAllocator = nullptr;
11845 if (pAllocator)
11846 {
11847 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11848 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11849 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011850 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011851 countingStream->rewind();
11852 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011853 uint64_t cgen_var_938;
11854 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_938, 1);
11855 countingStream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011856 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011857 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011858 uint64_t cgen_var_939 = (uint64_t)(uintptr_t)local_pAllocator;
11859 countingStream->putBe64(cgen_var_939);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011860 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011861 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011862 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011863 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011864 uint64_t cgen_var_940;
11865 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_940, 1);
11866 countingStream->write((uint64_t*)&cgen_var_940, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011867 }
11868 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11869 countingStream->rewind();
11870 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
11871 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
11872 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011873 uint64_t cgen_var_941;
11874 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_941, 1);
11875 stream->write((uint64_t*)&cgen_var_941, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011876 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011877 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011878 uint64_t cgen_var_942 = (uint64_t)(uintptr_t)local_pAllocator;
11879 stream->putBe64(cgen_var_942);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011880 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011881 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011882 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011883 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011884 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011885 uint64_t cgen_var_943;
11886 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_943, 1);
11887 stream->write((uint64_t*)&cgen_var_943, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011888 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011889 uint64_t cgen_var_944;
11890 stream->read((uint64_t*)&cgen_var_944, 8);
11891 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_944, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011892 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
11893 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011894 countingStream->clearPool();
11895 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011896 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011897 return vkCreateMirSurfaceKHR_VkResult_return;
11898}
11899
11900VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
11901 VkPhysicalDevice physicalDevice,
11902 uint32_t queueFamilyIndex,
11903 MirConnection* connection)
11904{
11905 auto stream = mImpl->stream();
11906 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011907 auto resources = mImpl->resources();
11908 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011909 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011910 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011911 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011912 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011913 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011914 countingStream->rewind();
11915 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011916 uint64_t cgen_var_945;
11917 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_945, 1);
11918 countingStream->write((uint64_t*)&cgen_var_945, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011919 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011920 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
11921 }
11922 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11923 countingStream->rewind();
11924 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
11925 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
11926 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011927 uint64_t cgen_var_946;
11928 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
11929 stream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011930 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011931 stream->write((MirConnection*)connection, sizeof(MirConnection));
11932 stream->read((MirConnection*)connection, sizeof(MirConnection));
11933 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
11934 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011935 countingStream->clearPool();
11936 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011937 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011938 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
11939}
11940
11941#endif
11942#ifdef VK_KHR_android_surface
11943VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
11944 VkInstance instance,
11945 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
11946 const VkAllocationCallbacks* pAllocator,
11947 VkSurfaceKHR* pSurface)
11948{
11949 auto stream = mImpl->stream();
11950 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011951 auto resources = mImpl->resources();
11952 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011953 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011954 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011955 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011956 VkAllocationCallbacks* local_pAllocator;
11957 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011958 local_pCreateInfo = nullptr;
11959 if (pCreateInfo)
11960 {
11961 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
11962 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
11963 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011964 local_pAllocator = nullptr;
11965 if (pAllocator)
11966 {
11967 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11968 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11969 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011970 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011971 countingStream->rewind();
11972 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011973 uint64_t cgen_var_947;
11974 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_947, 1);
11975 countingStream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011976 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011977 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011978 uint64_t cgen_var_948 = (uint64_t)(uintptr_t)local_pAllocator;
11979 countingStream->putBe64(cgen_var_948);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011980 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011981 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011982 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011983 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011984 uint64_t cgen_var_949;
11985 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_949, 1);
11986 countingStream->write((uint64_t*)&cgen_var_949, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011987 }
11988 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11989 countingStream->rewind();
11990 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
11991 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
11992 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011993 uint64_t cgen_var_950;
11994 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_950, 1);
11995 stream->write((uint64_t*)&cgen_var_950, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011996 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011997 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080011998 uint64_t cgen_var_951 = (uint64_t)(uintptr_t)local_pAllocator;
11999 stream->putBe64(cgen_var_951);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012000 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012001 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012002 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012003 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012004 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012005 uint64_t cgen_var_952;
12006 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_952, 1);
12007 stream->write((uint64_t*)&cgen_var_952, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012008 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012009 uint64_t cgen_var_953;
12010 stream->read((uint64_t*)&cgen_var_953, 8);
12011 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_953, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012012 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
12013 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012014 countingStream->clearPool();
12015 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012016 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012017 return vkCreateAndroidSurfaceKHR_VkResult_return;
12018}
12019
12020#endif
12021#ifdef VK_KHR_win32_surface
12022VkResult VkEncoder::vkCreateWin32SurfaceKHR(
12023 VkInstance instance,
12024 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
12025 const VkAllocationCallbacks* pAllocator,
12026 VkSurfaceKHR* pSurface)
12027{
12028 auto stream = mImpl->stream();
12029 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012030 auto resources = mImpl->resources();
12031 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012032 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012033 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012034 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012035 VkAllocationCallbacks* local_pAllocator;
12036 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012037 local_pCreateInfo = nullptr;
12038 if (pCreateInfo)
12039 {
12040 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
12041 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
12042 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012043 local_pAllocator = nullptr;
12044 if (pAllocator)
12045 {
12046 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12047 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12048 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012049 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012050 countingStream->rewind();
12051 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012052 uint64_t cgen_var_954;
12053 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_954, 1);
12054 countingStream->write((uint64_t*)&cgen_var_954, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012055 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012056 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012057 uint64_t cgen_var_955 = (uint64_t)(uintptr_t)local_pAllocator;
12058 countingStream->putBe64(cgen_var_955);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012059 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012060 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012061 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012062 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012063 uint64_t cgen_var_956;
12064 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_956, 1);
12065 countingStream->write((uint64_t*)&cgen_var_956, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012066 }
12067 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12068 countingStream->rewind();
12069 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
12070 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
12071 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012072 uint64_t cgen_var_957;
12073 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
12074 stream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012075 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012076 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012077 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
12078 stream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012079 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012080 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012081 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012082 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012083 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012084 uint64_t cgen_var_959;
12085 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
12086 stream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080012087 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012088 uint64_t cgen_var_960;
12089 stream->read((uint64_t*)&cgen_var_960, 8);
12090 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_960, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012091 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
12092 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012093 countingStream->clearPool();
12094 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012095 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012096 return vkCreateWin32SurfaceKHR_VkResult_return;
12097}
12098
12099VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
12100 VkPhysicalDevice physicalDevice,
12101 uint32_t queueFamilyIndex)
12102{
12103 auto stream = mImpl->stream();
12104 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012105 auto resources = mImpl->resources();
12106 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012107 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012108 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012109 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012110 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012111 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012112 countingStream->rewind();
12113 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012114 uint64_t cgen_var_961;
12115 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_961, 1);
12116 countingStream->write((uint64_t*)&cgen_var_961, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012117 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012118 }
12119 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12120 countingStream->rewind();
12121 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
12122 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
12123 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012124 uint64_t cgen_var_962;
12125 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_962, 1);
12126 stream->write((uint64_t*)&cgen_var_962, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012127 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012128 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
12129 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012130 countingStream->clearPool();
12131 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012132 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012133 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
12134}
12135
12136#endif
12137#ifdef VK_KHR_sampler_mirror_clamp_to_edge
12138#endif
12139#ifdef VK_KHR_multiview
12140#endif
12141#ifdef VK_KHR_get_physical_device_properties2
12142void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
12143 VkPhysicalDevice physicalDevice,
12144 VkPhysicalDeviceFeatures2* pFeatures)
12145{
12146 auto stream = mImpl->stream();
12147 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012148 auto resources = mImpl->resources();
12149 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012150 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012151 VkPhysicalDevice local_physicalDevice;
12152 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012153 countingStream->rewind();
12154 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012155 uint64_t cgen_var_963;
12156 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_963, 1);
12157 countingStream->write((uint64_t*)&cgen_var_963, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012158 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12159 }
12160 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12161 countingStream->rewind();
12162 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
12163 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
12164 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012165 uint64_t cgen_var_964;
12166 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_964, 1);
12167 stream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012168 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12169 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
12170}
12171
12172void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
12173 VkPhysicalDevice physicalDevice,
12174 VkPhysicalDeviceProperties2* pProperties)
12175{
12176 auto stream = mImpl->stream();
12177 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012178 auto resources = mImpl->resources();
12179 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012180 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012181 VkPhysicalDevice local_physicalDevice;
12182 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012183 countingStream->rewind();
12184 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012185 uint64_t cgen_var_965;
12186 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_965, 1);
12187 countingStream->write((uint64_t*)&cgen_var_965, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012188 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
12189 }
12190 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12191 countingStream->rewind();
12192 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
12193 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
12194 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012195 uint64_t cgen_var_966;
12196 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_966, 1);
12197 stream->write((uint64_t*)&cgen_var_966, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012198 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12199 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
12200}
12201
12202void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
12203 VkPhysicalDevice physicalDevice,
12204 VkFormat format,
12205 VkFormatProperties2* pFormatProperties)
12206{
12207 auto stream = mImpl->stream();
12208 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012209 auto resources = mImpl->resources();
12210 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012211 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012212 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012213 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012214 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012215 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012216 countingStream->rewind();
12217 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012218 uint64_t cgen_var_967;
12219 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_967, 1);
12220 countingStream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012221 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012222 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
12223 }
12224 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12225 countingStream->rewind();
12226 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
12227 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
12228 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012229 uint64_t cgen_var_968;
12230 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_968, 1);
12231 stream->write((uint64_t*)&cgen_var_968, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012232 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012233 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12234 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
12235}
12236
12237VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
12238 VkPhysicalDevice physicalDevice,
12239 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
12240 VkImageFormatProperties2* pImageFormatProperties)
12241{
12242 auto stream = mImpl->stream();
12243 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012244 auto resources = mImpl->resources();
12245 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012246 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012247 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012248 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012249 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012250 local_pImageFormatInfo = nullptr;
12251 if (pImageFormatInfo)
12252 {
12253 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
12254 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
12255 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012256 countingStream->rewind();
12257 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012258 uint64_t cgen_var_969;
12259 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_969, 1);
12260 countingStream->write((uint64_t*)&cgen_var_969, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012261 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012262 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
12263 }
12264 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12265 countingStream->rewind();
12266 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
12267 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
12268 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012269 uint64_t cgen_var_970;
12270 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_970, 1);
12271 stream->write((uint64_t*)&cgen_var_970, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012272 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012273 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12274 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
12275 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
12276 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012277 countingStream->clearPool();
12278 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012279 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012280 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
12281}
12282
12283void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12284 VkPhysicalDevice physicalDevice,
12285 uint32_t* pQueueFamilyPropertyCount,
12286 VkQueueFamilyProperties2* pQueueFamilyProperties)
12287{
12288 auto stream = mImpl->stream();
12289 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012290 auto resources = mImpl->resources();
12291 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012292 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012293 VkPhysicalDevice local_physicalDevice;
12294 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012295 countingStream->rewind();
12296 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012297 uint64_t cgen_var_971;
12298 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
12299 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012300 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012301 uint64_t cgen_var_972 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12302 countingStream->putBe64(cgen_var_972);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012303 if (pQueueFamilyPropertyCount)
12304 {
12305 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12306 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012307 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012308 uint64_t cgen_var_973 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12309 countingStream->putBe64(cgen_var_973);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012310 if (pQueueFamilyProperties)
12311 {
12312 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12313 {
12314 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12315 }
12316 }
12317 }
12318 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12319 countingStream->rewind();
12320 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
12321 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
12322 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012323 uint64_t cgen_var_974;
12324 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
12325 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012326 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012327 uint64_t cgen_var_975 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
12328 stream->putBe64(cgen_var_975);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012329 if (pQueueFamilyPropertyCount)
12330 {
12331 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12332 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012333 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012334 uint64_t cgen_var_976 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
12335 stream->putBe64(cgen_var_976);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012336 if (pQueueFamilyProperties)
12337 {
12338 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12339 {
12340 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12341 }
12342 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012343 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012344 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012345 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012346 if (pQueueFamilyPropertyCount)
12347 {
12348 if (!(check_pQueueFamilyPropertyCount))
12349 {
12350 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
12351 }
12352 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
12353 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012354 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012355 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012356 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012357 if (pQueueFamilyProperties)
12358 {
12359 if (!(check_pQueueFamilyProperties))
12360 {
12361 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
12362 }
12363 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
12364 {
12365 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
12366 }
12367 }
12368}
12369
12370void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
12371 VkPhysicalDevice physicalDevice,
12372 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
12373{
12374 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;
12380 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012381 countingStream->rewind();
12382 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012383 uint64_t cgen_var_979;
12384 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
12385 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012386 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12387 }
12388 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12389 countingStream->rewind();
12390 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
12391 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
12392 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012393 uint64_t cgen_var_980;
12394 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
12395 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012396 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12397 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
12398}
12399
12400void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
12401 VkPhysicalDevice physicalDevice,
12402 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
12403 uint32_t* pPropertyCount,
12404 VkSparseImageFormatProperties2* pProperties)
12405{
12406 auto stream = mImpl->stream();
12407 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012408 auto resources = mImpl->resources();
12409 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012410 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012411 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012412 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012413 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012414 local_pFormatInfo = nullptr;
12415 if (pFormatInfo)
12416 {
12417 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
12418 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
12419 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012420 countingStream->rewind();
12421 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012422 uint64_t cgen_var_981;
12423 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
12424 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012425 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012426 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012427 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pPropertyCount;
12428 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012429 if (pPropertyCount)
12430 {
12431 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12432 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012433 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012434 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pProperties;
12435 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012436 if (pProperties)
12437 {
12438 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12439 {
12440 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
12441 }
12442 }
12443 }
12444 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12445 countingStream->rewind();
12446 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
12447 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
12448 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012449 uint64_t cgen_var_984;
12450 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
12451 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012452 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012453 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012454 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pPropertyCount;
12455 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012456 if (pPropertyCount)
12457 {
12458 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12459 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012460 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012461 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pProperties;
12462 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012463 if (pProperties)
12464 {
12465 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12466 {
12467 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12468 }
12469 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012470 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012471 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012472 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012473 if (pPropertyCount)
12474 {
12475 if (!(check_pPropertyCount))
12476 {
12477 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12478 }
12479 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12480 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012481 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012482 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012483 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012484 if (pProperties)
12485 {
12486 if (!(check_pProperties))
12487 {
12488 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12489 }
12490 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12491 {
12492 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
12493 }
12494 }
12495}
12496
12497#endif
12498#ifdef VK_KHR_device_group
12499void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
12500 VkDevice device,
12501 uint32_t heapIndex,
12502 uint32_t localDeviceIndex,
12503 uint32_t remoteDeviceIndex,
12504 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
12505{
12506 auto stream = mImpl->stream();
12507 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012508 auto resources = mImpl->resources();
12509 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012510 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012511 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012512 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012513 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012514 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012515 local_device = device;
12516 local_heapIndex = heapIndex;
12517 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012518 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012519 countingStream->rewind();
12520 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012521 uint64_t cgen_var_989;
12522 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_989, 1);
12523 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012524 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12525 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12526 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012527 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12528 }
12529 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12530 countingStream->rewind();
12531 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
12532 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
12533 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012534 uint64_t cgen_var_990;
12535 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_990, 1);
12536 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012537 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
12538 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
12539 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012540 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12541 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
12542}
12543
12544void VkEncoder::vkCmdSetDeviceMaskKHR(
12545 VkCommandBuffer commandBuffer,
12546 uint32_t deviceMask)
12547{
12548 auto stream = mImpl->stream();
12549 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012550 auto resources = mImpl->resources();
12551 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012552 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012553 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012554 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012555 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012556 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012557 countingStream->rewind();
12558 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012559 uint64_t cgen_var_991;
12560 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_991, 1);
12561 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012562 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012563 }
12564 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12565 countingStream->rewind();
12566 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
12567 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
12568 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012569 uint64_t cgen_var_992;
12570 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_992, 1);
12571 stream->write((uint64_t*)&cgen_var_992, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012572 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012573}
12574
12575void VkEncoder::vkCmdDispatchBaseKHR(
12576 VkCommandBuffer commandBuffer,
12577 uint32_t baseGroupX,
12578 uint32_t baseGroupY,
12579 uint32_t baseGroupZ,
12580 uint32_t groupCountX,
12581 uint32_t groupCountY,
12582 uint32_t groupCountZ)
12583{
12584 auto stream = mImpl->stream();
12585 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012586 auto resources = mImpl->resources();
12587 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012588 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012589 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012590 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012591 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012592 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012593 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012594 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012595 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012596 local_commandBuffer = commandBuffer;
12597 local_baseGroupX = baseGroupX;
12598 local_baseGroupY = baseGroupY;
12599 local_baseGroupZ = baseGroupZ;
12600 local_groupCountX = groupCountX;
12601 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012602 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012603 countingStream->rewind();
12604 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012605 uint64_t cgen_var_993;
12606 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_993, 1);
12607 countingStream->write((uint64_t*)&cgen_var_993, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012608 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12609 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12610 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12611 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12612 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12613 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012614 }
12615 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12616 countingStream->rewind();
12617 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
12618 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
12619 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012620 uint64_t cgen_var_994;
12621 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_994, 1);
12622 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012623 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
12624 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
12625 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
12626 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
12627 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
12628 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012629}
12630
12631#endif
12632#ifdef VK_KHR_shader_draw_parameters
12633#endif
12634#ifdef VK_KHR_maintenance1
12635void VkEncoder::vkTrimCommandPoolKHR(
12636 VkDevice device,
12637 VkCommandPool commandPool,
12638 VkCommandPoolTrimFlags flags)
12639{
12640 auto stream = mImpl->stream();
12641 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012642 auto resources = mImpl->resources();
12643 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012644 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012645 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012646 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012647 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012648 local_device = device;
12649 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012650 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012651 countingStream->rewind();
12652 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012653 uint64_t cgen_var_995;
12654 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_995, 1);
12655 countingStream->write((uint64_t*)&cgen_var_995, 1 * 8);
12656 uint64_t cgen_var_996;
12657 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_996, 1);
12658 countingStream->write((uint64_t*)&cgen_var_996, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012659 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012660 }
12661 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12662 countingStream->rewind();
12663 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
12664 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
12665 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012666 uint64_t cgen_var_997;
12667 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_997, 1);
12668 stream->write((uint64_t*)&cgen_var_997, 1 * 8);
12669 uint64_t cgen_var_998;
12670 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_998, 1);
12671 stream->write((uint64_t*)&cgen_var_998, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012672 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012673}
12674
12675#endif
12676#ifdef VK_KHR_device_group_creation
12677VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
12678 VkInstance instance,
12679 uint32_t* pPhysicalDeviceGroupCount,
12680 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
12681{
12682 auto stream = mImpl->stream();
12683 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012684 auto resources = mImpl->resources();
12685 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012686 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012687 VkInstance local_instance;
12688 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012689 countingStream->rewind();
12690 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012691 uint64_t cgen_var_999;
12692 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_999, 1);
12693 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012694 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012695 uint64_t cgen_var_1000 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12696 countingStream->putBe64(cgen_var_1000);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012697 if (pPhysicalDeviceGroupCount)
12698 {
12699 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12700 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012701 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012702 uint64_t cgen_var_1001 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12703 countingStream->putBe64(cgen_var_1001);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012704 if (pPhysicalDeviceGroupProperties)
12705 {
12706 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12707 {
12708 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12709 }
12710 }
12711 }
12712 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12713 countingStream->rewind();
12714 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
12715 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
12716 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012717 uint64_t cgen_var_1002;
12718 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1002, 1);
12719 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012720 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012721 uint64_t cgen_var_1003 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
12722 stream->putBe64(cgen_var_1003);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012723 if (pPhysicalDeviceGroupCount)
12724 {
12725 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12726 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012727 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012728 uint64_t cgen_var_1004 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
12729 stream->putBe64(cgen_var_1004);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012730 if (pPhysicalDeviceGroupProperties)
12731 {
12732 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12733 {
12734 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12735 }
12736 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012737 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012738 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012739 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012740 if (pPhysicalDeviceGroupCount)
12741 {
12742 if (!(check_pPhysicalDeviceGroupCount))
12743 {
12744 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
12745 }
12746 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
12747 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012748 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012749 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012750 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012751 if (pPhysicalDeviceGroupProperties)
12752 {
12753 if (!(check_pPhysicalDeviceGroupProperties))
12754 {
12755 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
12756 }
12757 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
12758 {
12759 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
12760 }
12761 }
12762 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
12763 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012764 countingStream->clearPool();
12765 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012766 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012767 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
12768}
12769
12770#endif
12771#ifdef VK_KHR_external_memory_capabilities
12772void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
12773 VkPhysicalDevice physicalDevice,
12774 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
12775 VkExternalBufferProperties* pExternalBufferProperties)
12776{
12777 auto stream = mImpl->stream();
12778 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012779 auto resources = mImpl->resources();
12780 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012781 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012782 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012783 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012784 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012785 local_pExternalBufferInfo = nullptr;
12786 if (pExternalBufferInfo)
12787 {
12788 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
12789 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
12790 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012791 countingStream->rewind();
12792 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012793 uint64_t cgen_var_1007;
12794 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1007, 1);
12795 countingStream->write((uint64_t*)&cgen_var_1007, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012796 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012797 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12798 }
12799 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12800 countingStream->rewind();
12801 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
12802 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
12803 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012804 uint64_t cgen_var_1008;
12805 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1008, 1);
12806 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012807 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012808 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12809 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
12810}
12811
12812#endif
12813#ifdef VK_KHR_external_memory
12814#endif
12815#ifdef VK_KHR_external_memory_win32
12816VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
12817 VkDevice device,
12818 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
12819 HANDLE* pHandle)
12820{
12821 auto stream = mImpl->stream();
12822 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012823 auto resources = mImpl->resources();
12824 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012825 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012826 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012827 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012828 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012829 local_pGetWin32HandleInfo = nullptr;
12830 if (pGetWin32HandleInfo)
12831 {
12832 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
12833 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
12834 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012835 countingStream->rewind();
12836 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012837 uint64_t cgen_var_1009;
12838 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1);
12839 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012840 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012841 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
12842 }
12843 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12844 countingStream->rewind();
12845 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
12846 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
12847 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012848 uint64_t cgen_var_1010;
12849 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1010, 1);
12850 stream->write((uint64_t*)&cgen_var_1010, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012851 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012852 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
12853 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
12854 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
12855 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012856 countingStream->clearPool();
12857 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012858 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012859 return vkGetMemoryWin32HandleKHR_VkResult_return;
12860}
12861
12862VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
12863 VkDevice device,
12864 VkExternalMemoryHandleTypeFlagBits handleType,
12865 HANDLE handle,
12866 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
12867{
12868 auto stream = mImpl->stream();
12869 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012870 auto resources = mImpl->resources();
12871 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012872 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012873 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012874 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012875 HANDLE local_handle;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012876 local_device = device;
12877 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012878 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012879 countingStream->rewind();
12880 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012881 uint64_t cgen_var_1011;
12882 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1);
12883 countingStream->write((uint64_t*)&cgen_var_1011, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012884 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12885 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012886 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12887 }
12888 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12889 countingStream->rewind();
12890 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
12891 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
12892 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012893 uint64_t cgen_var_1012;
12894 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1012, 1);
12895 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012896 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12897 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012898 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12899 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
12900 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
12901 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012902 countingStream->clearPool();
12903 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012904 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012905 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
12906}
12907
12908#endif
12909#ifdef VK_KHR_external_memory_fd
12910VkResult VkEncoder::vkGetMemoryFdKHR(
12911 VkDevice device,
12912 const VkMemoryGetFdInfoKHR* pGetFdInfo,
12913 int* pFd)
12914{
12915 auto stream = mImpl->stream();
12916 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012917 auto resources = mImpl->resources();
12918 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012919 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012920 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012921 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012922 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012923 local_pGetFdInfo = nullptr;
12924 if (pGetFdInfo)
12925 {
12926 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
12927 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
12928 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012929 countingStream->rewind();
12930 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012931 uint64_t cgen_var_1013;
12932 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1013, 1);
12933 countingStream->write((uint64_t*)&cgen_var_1013, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012934 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012935 countingStream->write((int*)pFd, sizeof(int));
12936 }
12937 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12938 countingStream->rewind();
12939 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
12940 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
12941 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012942 uint64_t cgen_var_1014;
12943 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1014, 1);
12944 stream->write((uint64_t*)&cgen_var_1014, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012945 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012946 stream->write((int*)pFd, sizeof(int));
12947 stream->read((int*)pFd, sizeof(int));
12948 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
12949 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012950 countingStream->clearPool();
12951 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012952 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012953 return vkGetMemoryFdKHR_VkResult_return;
12954}
12955
12956VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
12957 VkDevice device,
12958 VkExternalMemoryHandleTypeFlagBits handleType,
12959 int fd,
12960 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
12961{
12962 auto stream = mImpl->stream();
12963 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012964 auto resources = mImpl->resources();
12965 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012966 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012967 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012968 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012969 int local_fd;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012970 local_device = device;
12971 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012972 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012973 countingStream->rewind();
12974 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012975 uint64_t cgen_var_1015;
12976 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1015, 1);
12977 countingStream->write((uint64_t*)&cgen_var_1015, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012978 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12979 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012980 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12981 }
12982 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12983 countingStream->rewind();
12984 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
12985 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
12986 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012987 uint64_t cgen_var_1016;
12988 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1016, 1);
12989 stream->write((uint64_t*)&cgen_var_1016, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012990 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
12991 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012992 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12993 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
12994 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
12995 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012996 countingStream->clearPool();
12997 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012998 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012999 return vkGetMemoryFdPropertiesKHR_VkResult_return;
13000}
13001
13002#endif
13003#ifdef VK_KHR_win32_keyed_mutex
13004#endif
13005#ifdef VK_KHR_external_semaphore_capabilities
13006void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
13007 VkPhysicalDevice physicalDevice,
13008 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
13009 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
13010{
13011 auto stream = mImpl->stream();
13012 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013013 auto resources = mImpl->resources();
13014 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013015 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013016 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013017 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013018 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013019 local_pExternalSemaphoreInfo = nullptr;
13020 if (pExternalSemaphoreInfo)
13021 {
13022 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
13023 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
13024 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013025 countingStream->rewind();
13026 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013027 uint64_t cgen_var_1017;
13028 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
13029 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013030 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013031 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13032 }
13033 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13034 countingStream->rewind();
13035 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
13036 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
13037 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013038 uint64_t cgen_var_1018;
13039 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
13040 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013041 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013042 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13043 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
13044}
13045
13046#endif
13047#ifdef VK_KHR_external_semaphore
13048#endif
13049#ifdef VK_KHR_external_semaphore_win32
13050VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
13051 VkDevice device,
13052 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
13053{
13054 auto stream = mImpl->stream();
13055 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013056 auto resources = mImpl->resources();
13057 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013058 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013059 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013060 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013061 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013062 local_pImportSemaphoreWin32HandleInfo = nullptr;
13063 if (pImportSemaphoreWin32HandleInfo)
13064 {
13065 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
13066 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
13067 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013068 countingStream->rewind();
13069 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013070 uint64_t cgen_var_1019;
13071 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
13072 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013073 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013074 }
13075 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13076 countingStream->rewind();
13077 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
13078 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
13079 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013080 uint64_t cgen_var_1020;
13081 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
13082 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013083 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013084 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13085 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013086 countingStream->clearPool();
13087 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013088 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013089 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
13090}
13091
13092VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
13093 VkDevice device,
13094 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13095 HANDLE* pHandle)
13096{
13097 auto stream = mImpl->stream();
13098 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013099 auto resources = mImpl->resources();
13100 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013101 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013102 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013103 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013104 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013105 local_pGetWin32HandleInfo = nullptr;
13106 if (pGetWin32HandleInfo)
13107 {
13108 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
13109 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13110 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013111 countingStream->rewind();
13112 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013113 uint64_t cgen_var_1021;
13114 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
13115 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013116 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013117 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13118 }
13119 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13120 countingStream->rewind();
13121 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
13122 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
13123 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013124 uint64_t cgen_var_1022;
13125 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
13126 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013127 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013128 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13129 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13130 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
13131 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013132 countingStream->clearPool();
13133 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013134 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013135 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
13136}
13137
13138#endif
13139#ifdef VK_KHR_external_semaphore_fd
13140VkResult VkEncoder::vkImportSemaphoreFdKHR(
13141 VkDevice device,
13142 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
13143{
13144 auto stream = mImpl->stream();
13145 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013146 auto resources = mImpl->resources();
13147 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013148 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013149 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013150 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013151 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013152 local_pImportSemaphoreFdInfo = nullptr;
13153 if (pImportSemaphoreFdInfo)
13154 {
13155 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
13156 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
13157 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013158 countingStream->rewind();
13159 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013160 uint64_t cgen_var_1023;
13161 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
13162 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013163 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013164 }
13165 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13166 countingStream->rewind();
13167 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
13168 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
13169 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013170 uint64_t cgen_var_1024;
13171 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
13172 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013173 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013174 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
13175 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013176 countingStream->clearPool();
13177 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013178 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013179 return vkImportSemaphoreFdKHR_VkResult_return;
13180}
13181
13182VkResult VkEncoder::vkGetSemaphoreFdKHR(
13183 VkDevice device,
13184 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
13185 int* pFd)
13186{
13187 auto stream = mImpl->stream();
13188 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013189 auto resources = mImpl->resources();
13190 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013191 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013192 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013193 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013194 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013195 local_pGetFdInfo = nullptr;
13196 if (pGetFdInfo)
13197 {
13198 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
13199 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
13200 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013201 countingStream->rewind();
13202 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013203 uint64_t cgen_var_1025;
13204 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
13205 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013206 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013207 countingStream->write((int*)pFd, sizeof(int));
13208 }
13209 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13210 countingStream->rewind();
13211 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
13212 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
13213 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013214 uint64_t cgen_var_1026;
13215 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
13216 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013217 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013218 stream->write((int*)pFd, sizeof(int));
13219 stream->read((int*)pFd, sizeof(int));
13220 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
13221 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013222 countingStream->clearPool();
13223 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013224 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013225 return vkGetSemaphoreFdKHR_VkResult_return;
13226}
13227
13228#endif
13229#ifdef VK_KHR_push_descriptor
13230void VkEncoder::vkCmdPushDescriptorSetKHR(
13231 VkCommandBuffer commandBuffer,
13232 VkPipelineBindPoint pipelineBindPoint,
13233 VkPipelineLayout layout,
13234 uint32_t set,
13235 uint32_t descriptorWriteCount,
13236 const VkWriteDescriptorSet* pDescriptorWrites)
13237{
13238 auto stream = mImpl->stream();
13239 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013240 auto resources = mImpl->resources();
13241 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013242 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013243 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013244 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013245 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013246 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013247 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013248 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013249 local_commandBuffer = commandBuffer;
13250 local_pipelineBindPoint = pipelineBindPoint;
13251 local_layout = layout;
13252 local_set = set;
13253 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013254 local_pDescriptorWrites = nullptr;
13255 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013256 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013257 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013258 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13259 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013260 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
13261 }
13262 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013263 countingStream->rewind();
13264 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013265 uint64_t cgen_var_1027;
13266 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1027, 1);
13267 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013268 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013269 uint64_t cgen_var_1028;
13270 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1028, 1);
13271 countingStream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013272 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
13273 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
13274 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13275 {
13276 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013277 }
13278 }
13279 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13280 countingStream->rewind();
13281 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
13282 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
13283 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013284 uint64_t cgen_var_1029;
13285 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1029, 1);
13286 stream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013287 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013288 uint64_t cgen_var_1030;
13289 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1030, 1);
13290 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013291 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
13292 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013293 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
13294 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013295 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013296 }
13297}
13298
13299void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
13300 VkCommandBuffer commandBuffer,
13301 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13302 VkPipelineLayout layout,
13303 uint32_t set,
13304 const void* pData)
13305{
13306 auto stream = mImpl->stream();
13307 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013308 auto resources = mImpl->resources();
13309 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013310 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013311 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013312 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013313 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013314 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013315 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013316 local_commandBuffer = commandBuffer;
13317 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
13318 local_layout = layout;
13319 local_set = set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013320 local_pData = nullptr;
13321 if (pData)
13322 {
13323 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13324 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013325 countingStream->rewind();
13326 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013327 uint64_t cgen_var_1031;
13328 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1031, 1);
13329 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
13330 uint64_t cgen_var_1032;
13331 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1032, 1);
13332 countingStream->write((uint64_t*)&cgen_var_1032, 1 * 8);
13333 uint64_t cgen_var_1033;
13334 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1033, 1);
13335 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013336 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013337 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013338 uint64_t cgen_var_1034 = (uint64_t)(uintptr_t)local_pData;
13339 countingStream->putBe64(cgen_var_1034);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013340 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013341 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013342 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013343 }
13344 }
13345 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13346 countingStream->rewind();
13347 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
13348 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13349 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013350 uint64_t cgen_var_1035;
13351 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1035, 1);
13352 stream->write((uint64_t*)&cgen_var_1035, 1 * 8);
13353 uint64_t cgen_var_1036;
13354 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1036, 1);
13355 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
13356 uint64_t cgen_var_1037;
13357 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1037, 1);
13358 stream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013359 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013360 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013361 uint64_t cgen_var_1038 = (uint64_t)(uintptr_t)local_pData;
13362 stream->putBe64(cgen_var_1038);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013363 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013364 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013365 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013366 }
13367}
13368
13369#endif
13370#ifdef VK_KHR_16bit_storage
13371#endif
13372#ifdef VK_KHR_incremental_present
13373#endif
13374#ifdef VK_KHR_descriptor_update_template
13375VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
13376 VkDevice device,
13377 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
13378 const VkAllocationCallbacks* pAllocator,
13379 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
13380{
13381 auto stream = mImpl->stream();
13382 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013383 auto resources = mImpl->resources();
13384 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013385 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013386 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013387 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013388 VkAllocationCallbacks* local_pAllocator;
13389 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013390 local_pCreateInfo = nullptr;
13391 if (pCreateInfo)
13392 {
13393 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
13394 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
13395 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013396 local_pAllocator = nullptr;
13397 if (pAllocator)
13398 {
13399 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13400 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13401 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013402 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013403 countingStream->rewind();
13404 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013405 uint64_t cgen_var_1039;
13406 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1039, 1);
13407 countingStream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013408 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013409 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013410 uint64_t cgen_var_1040 = (uint64_t)(uintptr_t)local_pAllocator;
13411 countingStream->putBe64(cgen_var_1040);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013412 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013413 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013414 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013415 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013416 uint64_t cgen_var_1041;
13417 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1041, 1);
13418 countingStream->write((uint64_t*)&cgen_var_1041, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013419 }
13420 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13421 countingStream->rewind();
13422 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
13423 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13424 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013425 uint64_t cgen_var_1042;
13426 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1042, 1);
13427 stream->write((uint64_t*)&cgen_var_1042, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013428 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013429 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013430 uint64_t cgen_var_1043 = (uint64_t)(uintptr_t)local_pAllocator;
13431 stream->putBe64(cgen_var_1043);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013432 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013433 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013434 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013435 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013436 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013437 uint64_t cgen_var_1044;
13438 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1044, 1);
13439 stream->write((uint64_t*)&cgen_var_1044, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013440 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013441 uint64_t cgen_var_1045;
13442 stream->read((uint64_t*)&cgen_var_1045, 8);
13443 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1045, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013444 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
13445 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013446 countingStream->clearPool();
13447 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013448 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013449 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
13450}
13451
13452void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
13453 VkDevice device,
13454 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13455 const VkAllocationCallbacks* pAllocator)
13456{
13457 auto stream = mImpl->stream();
13458 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013459 auto resources = mImpl->resources();
13460 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013461 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013462 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013463 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013464 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013465 local_device = device;
13466 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013467 local_pAllocator = nullptr;
13468 if (pAllocator)
13469 {
13470 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13471 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13472 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013473 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013474 countingStream->rewind();
13475 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013476 uint64_t cgen_var_1046;
13477 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1046, 1);
13478 countingStream->write((uint64_t*)&cgen_var_1046, 1 * 8);
13479 uint64_t cgen_var_1047;
13480 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1047, 1);
13481 countingStream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013482 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013483 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pAllocator;
13484 countingStream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013485 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013486 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013487 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013488 }
13489 }
13490 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13491 countingStream->rewind();
13492 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
13493 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
13494 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013495 uint64_t cgen_var_1049;
13496 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
13497 stream->write((uint64_t*)&cgen_var_1049, 1 * 8);
13498 uint64_t cgen_var_1050;
13499 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1050, 1);
13500 stream->write((uint64_t*)&cgen_var_1050, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013501 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013502 uint64_t cgen_var_1051 = (uint64_t)(uintptr_t)local_pAllocator;
13503 stream->putBe64(cgen_var_1051);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013504 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013505 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013506 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013507 }
13508}
13509
13510void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
13511 VkDevice device,
13512 VkDescriptorSet descriptorSet,
13513 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
13514 const void* pData)
13515{
13516 auto stream = mImpl->stream();
13517 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013518 auto resources = mImpl->resources();
13519 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013520 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013521 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013522 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013523 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013524 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013525 local_device = device;
13526 local_descriptorSet = descriptorSet;
13527 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013528 local_pData = nullptr;
13529 if (pData)
13530 {
13531 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
13532 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013533 countingStream->rewind();
13534 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013535 uint64_t cgen_var_1052;
13536 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
13537 countingStream->write((uint64_t*)&cgen_var_1052, 1 * 8);
13538 uint64_t cgen_var_1053;
13539 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1053, 1);
13540 countingStream->write((uint64_t*)&cgen_var_1053, 1 * 8);
13541 uint64_t cgen_var_1054;
13542 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1054, 1);
13543 countingStream->write((uint64_t*)&cgen_var_1054, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013544 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013545 uint64_t cgen_var_1055 = (uint64_t)(uintptr_t)local_pData;
13546 countingStream->putBe64(cgen_var_1055);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013547 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013548 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013549 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013550 }
13551 }
13552 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13553 countingStream->rewind();
13554 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
13555 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
13556 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013557 uint64_t cgen_var_1056;
13558 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
13559 stream->write((uint64_t*)&cgen_var_1056, 1 * 8);
13560 uint64_t cgen_var_1057;
13561 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1057, 1);
13562 stream->write((uint64_t*)&cgen_var_1057, 1 * 8);
13563 uint64_t cgen_var_1058;
13564 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1058, 1);
13565 stream->write((uint64_t*)&cgen_var_1058, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013566 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013567 uint64_t cgen_var_1059 = (uint64_t)(uintptr_t)local_pData;
13568 stream->putBe64(cgen_var_1059);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013569 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013570 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013571 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013572 }
13573}
13574
13575#endif
13576#ifdef VK_KHR_create_renderpass2
13577VkResult VkEncoder::vkCreateRenderPass2KHR(
13578 VkDevice device,
13579 const VkRenderPassCreateInfo2KHR* pCreateInfo,
13580 const VkAllocationCallbacks* pAllocator,
13581 VkRenderPass* pRenderPass)
13582{
13583 auto stream = mImpl->stream();
13584 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013585 auto resources = mImpl->resources();
13586 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013587 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013588 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013589 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013590 VkAllocationCallbacks* local_pAllocator;
13591 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013592 local_pCreateInfo = nullptr;
13593 if (pCreateInfo)
13594 {
13595 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
13596 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
13597 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013598 local_pAllocator = nullptr;
13599 if (pAllocator)
13600 {
13601 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13602 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13603 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013604 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013605 countingStream->rewind();
13606 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013607 uint64_t cgen_var_1060;
13608 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1060, 1);
13609 countingStream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013610 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013611 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013612 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
13613 countingStream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013614 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013615 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013616 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013617 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013618 uint64_t cgen_var_1062;
13619 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1062, 1);
13620 countingStream->write((uint64_t*)&cgen_var_1062, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013621 }
13622 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13623 countingStream->rewind();
13624 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
13625 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
13626 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013627 uint64_t cgen_var_1063;
13628 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1063, 1);
13629 stream->write((uint64_t*)&cgen_var_1063, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013630 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013631 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013632 uint64_t cgen_var_1064 = (uint64_t)(uintptr_t)local_pAllocator;
13633 stream->putBe64(cgen_var_1064);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013634 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013635 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013636 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013637 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013638 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013639 uint64_t cgen_var_1065;
13640 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1065, 1);
13641 stream->write((uint64_t*)&cgen_var_1065, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013642 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013643 uint64_t cgen_var_1066;
13644 stream->read((uint64_t*)&cgen_var_1066, 8);
13645 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1066, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013646 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
13647 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013648 countingStream->clearPool();
13649 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013650 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013651 return vkCreateRenderPass2KHR_VkResult_return;
13652}
13653
13654void VkEncoder::vkCmdBeginRenderPass2KHR(
13655 VkCommandBuffer commandBuffer,
13656 const VkRenderPassBeginInfo* pRenderPassBegin,
13657 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
13658{
13659 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 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013665 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013666 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
13667 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013668 local_pRenderPassBegin = nullptr;
13669 if (pRenderPassBegin)
13670 {
13671 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
13672 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13673 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013674 local_pSubpassBeginInfo = nullptr;
13675 if (pSubpassBeginInfo)
13676 {
13677 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13678 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13679 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013680 countingStream->rewind();
13681 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013682 uint64_t cgen_var_1067;
13683 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1067, 1);
13684 countingStream->write((uint64_t*)&cgen_var_1067, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013685 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13686 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013687 }
13688 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13689 countingStream->rewind();
13690 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
13691 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
13692 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013693 uint64_t cgen_var_1068;
13694 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1068, 1);
13695 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013696 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
13697 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013698}
13699
13700void VkEncoder::vkCmdNextSubpass2KHR(
13701 VkCommandBuffer commandBuffer,
13702 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
13703 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13704{
13705 auto stream = mImpl->stream();
13706 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013707 auto resources = mImpl->resources();
13708 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013709 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013710 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013711 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013712 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
13713 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013714 local_pSubpassBeginInfo = nullptr;
13715 if (pSubpassBeginInfo)
13716 {
13717 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
13718 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13719 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013720 local_pSubpassEndInfo = nullptr;
13721 if (pSubpassEndInfo)
13722 {
13723 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13724 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13725 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013726 countingStream->rewind();
13727 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013728 uint64_t cgen_var_1069;
13729 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1069, 1);
13730 countingStream->write((uint64_t*)&cgen_var_1069, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013731 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13732 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013733 }
13734 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13735 countingStream->rewind();
13736 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
13737 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
13738 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013739 uint64_t cgen_var_1070;
13740 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1070, 1);
13741 stream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013742 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
13743 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013744}
13745
13746void VkEncoder::vkCmdEndRenderPass2KHR(
13747 VkCommandBuffer commandBuffer,
13748 const VkSubpassEndInfoKHR* pSubpassEndInfo)
13749{
13750 auto stream = mImpl->stream();
13751 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013752 auto resources = mImpl->resources();
13753 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013754 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013755 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013756 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013757 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013758 local_pSubpassEndInfo = nullptr;
13759 if (pSubpassEndInfo)
13760 {
13761 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
13762 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
13763 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013764 countingStream->rewind();
13765 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013766 uint64_t cgen_var_1071;
13767 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1071, 1);
13768 countingStream->write((uint64_t*)&cgen_var_1071, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013769 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013770 }
13771 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13772 countingStream->rewind();
13773 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
13774 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
13775 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013776 uint64_t cgen_var_1072;
13777 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1072, 1);
13778 stream->write((uint64_t*)&cgen_var_1072, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013779 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013780}
13781
13782#endif
13783#ifdef VK_KHR_shared_presentable_image
13784VkResult VkEncoder::vkGetSwapchainStatusKHR(
13785 VkDevice device,
13786 VkSwapchainKHR swapchain)
13787{
13788 auto stream = mImpl->stream();
13789 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013790 auto resources = mImpl->resources();
13791 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013792 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013793 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013794 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013795 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013796 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013797 countingStream->rewind();
13798 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013799 uint64_t cgen_var_1073;
13800 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
13801 countingStream->write((uint64_t*)&cgen_var_1073, 1 * 8);
13802 uint64_t cgen_var_1074;
13803 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1074, 1);
13804 countingStream->write((uint64_t*)&cgen_var_1074, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013805 }
13806 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13807 countingStream->rewind();
13808 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
13809 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
13810 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013811 uint64_t cgen_var_1075;
13812 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1075, 1);
13813 stream->write((uint64_t*)&cgen_var_1075, 1 * 8);
13814 uint64_t cgen_var_1076;
13815 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1076, 1);
13816 stream->write((uint64_t*)&cgen_var_1076, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013817 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
13818 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013819 countingStream->clearPool();
13820 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013821 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013822 return vkGetSwapchainStatusKHR_VkResult_return;
13823}
13824
13825#endif
13826#ifdef VK_KHR_external_fence_capabilities
13827void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
13828 VkPhysicalDevice physicalDevice,
13829 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
13830 VkExternalFenceProperties* pExternalFenceProperties)
13831{
13832 auto stream = mImpl->stream();
13833 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013834 auto resources = mImpl->resources();
13835 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013836 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013837 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013838 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013839 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013840 local_pExternalFenceInfo = nullptr;
13841 if (pExternalFenceInfo)
13842 {
13843 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
13844 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
13845 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013846 countingStream->rewind();
13847 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013848 uint64_t cgen_var_1077;
13849 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1077, 1);
13850 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013851 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013852 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13853 }
13854 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13855 countingStream->rewind();
13856 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
13857 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
13858 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013859 uint64_t cgen_var_1078;
13860 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1078, 1);
13861 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013862 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013863 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13864 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
13865}
13866
13867#endif
13868#ifdef VK_KHR_external_fence
13869#endif
13870#ifdef VK_KHR_external_fence_win32
13871VkResult VkEncoder::vkImportFenceWin32HandleKHR(
13872 VkDevice device,
13873 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
13874{
13875 auto stream = mImpl->stream();
13876 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013877 auto resources = mImpl->resources();
13878 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013879 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013880 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013881 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013882 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013883 local_pImportFenceWin32HandleInfo = nullptr;
13884 if (pImportFenceWin32HandleInfo)
13885 {
13886 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
13887 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
13888 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013889 countingStream->rewind();
13890 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013891 uint64_t cgen_var_1079;
13892 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1079, 1);
13893 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013894 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013895 }
13896 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13897 countingStream->rewind();
13898 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
13899 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
13900 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013901 uint64_t cgen_var_1080;
13902 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1080, 1);
13903 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013904 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013905 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13906 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013907 countingStream->clearPool();
13908 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013909 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013910 return vkImportFenceWin32HandleKHR_VkResult_return;
13911}
13912
13913VkResult VkEncoder::vkGetFenceWin32HandleKHR(
13914 VkDevice device,
13915 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
13916 HANDLE* pHandle)
13917{
13918 auto stream = mImpl->stream();
13919 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013920 auto resources = mImpl->resources();
13921 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013922 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013923 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013924 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013925 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013926 local_pGetWin32HandleInfo = nullptr;
13927 if (pGetWin32HandleInfo)
13928 {
13929 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
13930 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
13931 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013932 countingStream->rewind();
13933 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013934 uint64_t cgen_var_1081;
13935 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1081, 1);
13936 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013937 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013938 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
13939 }
13940 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13941 countingStream->rewind();
13942 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
13943 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
13944 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013945 uint64_t cgen_var_1082;
13946 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1082, 1);
13947 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013948 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013949 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
13950 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
13951 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
13952 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013953 countingStream->clearPool();
13954 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013955 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013956 return vkGetFenceWin32HandleKHR_VkResult_return;
13957}
13958
13959#endif
13960#ifdef VK_KHR_external_fence_fd
13961VkResult VkEncoder::vkImportFenceFdKHR(
13962 VkDevice device,
13963 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
13964{
13965 auto stream = mImpl->stream();
13966 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013967 auto resources = mImpl->resources();
13968 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013969 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013970 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013971 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013972 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013973 local_pImportFenceFdInfo = nullptr;
13974 if (pImportFenceFdInfo)
13975 {
13976 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
13977 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
13978 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013979 countingStream->rewind();
13980 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013981 uint64_t cgen_var_1083;
13982 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
13983 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013984 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013985 }
13986 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13987 countingStream->rewind();
13988 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
13989 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
13990 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080013991 uint64_t cgen_var_1084;
13992 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1084, 1);
13993 stream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013994 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013995 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
13996 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013997 countingStream->clearPool();
13998 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013999 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014000 return vkImportFenceFdKHR_VkResult_return;
14001}
14002
14003VkResult VkEncoder::vkGetFenceFdKHR(
14004 VkDevice device,
14005 const VkFenceGetFdInfoKHR* pGetFdInfo,
14006 int* pFd)
14007{
14008 auto stream = mImpl->stream();
14009 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014010 auto resources = mImpl->resources();
14011 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014012 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014013 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014014 VkFenceGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014015 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014016 local_pGetFdInfo = nullptr;
14017 if (pGetFdInfo)
14018 {
14019 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
14020 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
14021 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014022 countingStream->rewind();
14023 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014024 uint64_t cgen_var_1085;
14025 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
14026 countingStream->write((uint64_t*)&cgen_var_1085, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014027 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014028 countingStream->write((int*)pFd, sizeof(int));
14029 }
14030 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14031 countingStream->rewind();
14032 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
14033 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
14034 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014035 uint64_t cgen_var_1086;
14036 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1086, 1);
14037 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014038 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014039 stream->write((int*)pFd, sizeof(int));
14040 stream->read((int*)pFd, sizeof(int));
14041 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
14042 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014043 countingStream->clearPool();
14044 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014045 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014046 return vkGetFenceFdKHR_VkResult_return;
14047}
14048
14049#endif
14050#ifdef VK_KHR_maintenance2
14051#endif
14052#ifdef VK_KHR_get_surface_capabilities2
14053VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
14054 VkPhysicalDevice physicalDevice,
14055 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14056 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
14057{
14058 auto stream = mImpl->stream();
14059 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014060 auto resources = mImpl->resources();
14061 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014062 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014063 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014064 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014065 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014066 local_pSurfaceInfo = nullptr;
14067 if (pSurfaceInfo)
14068 {
14069 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14070 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14071 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014072 countingStream->rewind();
14073 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014074 uint64_t cgen_var_1087;
14075 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
14076 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014077 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014078 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14079 }
14080 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14081 countingStream->rewind();
14082 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
14083 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
14084 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014085 uint64_t cgen_var_1088;
14086 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
14087 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014088 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014089 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14090 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
14091 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
14092 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014093 countingStream->clearPool();
14094 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014095 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014096 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
14097}
14098
14099VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
14100 VkPhysicalDevice physicalDevice,
14101 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
14102 uint32_t* pSurfaceFormatCount,
14103 VkSurfaceFormat2KHR* pSurfaceFormats)
14104{
14105 auto stream = mImpl->stream();
14106 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014107 auto resources = mImpl->resources();
14108 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014109 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014110 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014111 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014112 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014113 local_pSurfaceInfo = nullptr;
14114 if (pSurfaceInfo)
14115 {
14116 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
14117 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
14118 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014119 countingStream->rewind();
14120 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014121 uint64_t cgen_var_1089;
14122 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1089, 1);
14123 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014124 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014125 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014126 uint64_t cgen_var_1090 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14127 countingStream->putBe64(cgen_var_1090);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014128 if (pSurfaceFormatCount)
14129 {
14130 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14131 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014132 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014133 uint64_t cgen_var_1091 = (uint64_t)(uintptr_t)pSurfaceFormats;
14134 countingStream->putBe64(cgen_var_1091);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014135 if (pSurfaceFormats)
14136 {
14137 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14138 {
14139 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14140 }
14141 }
14142 }
14143 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14144 countingStream->rewind();
14145 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
14146 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
14147 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014148 uint64_t cgen_var_1092;
14149 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1092, 1);
14150 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014151 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014152 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014153 uint64_t cgen_var_1093 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
14154 stream->putBe64(cgen_var_1093);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014155 if (pSurfaceFormatCount)
14156 {
14157 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14158 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014159 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014160 uint64_t cgen_var_1094 = (uint64_t)(uintptr_t)pSurfaceFormats;
14161 stream->putBe64(cgen_var_1094);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014162 if (pSurfaceFormats)
14163 {
14164 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14165 {
14166 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14167 }
14168 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014169 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014170 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014171 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014172 if (pSurfaceFormatCount)
14173 {
14174 if (!(check_pSurfaceFormatCount))
14175 {
14176 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
14177 }
14178 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
14179 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014180 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014181 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014182 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014183 if (pSurfaceFormats)
14184 {
14185 if (!(check_pSurfaceFormats))
14186 {
14187 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
14188 }
14189 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
14190 {
14191 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
14192 }
14193 }
14194 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
14195 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014196 countingStream->clearPool();
14197 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014198 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014199 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
14200}
14201
14202#endif
14203#ifdef VK_KHR_variable_pointers
14204#endif
14205#ifdef VK_KHR_get_display_properties2
14206VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
14207 VkPhysicalDevice physicalDevice,
14208 uint32_t* pPropertyCount,
14209 VkDisplayProperties2KHR* pProperties)
14210{
14211 auto stream = mImpl->stream();
14212 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014213 auto resources = mImpl->resources();
14214 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014215 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014216 VkPhysicalDevice local_physicalDevice;
14217 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014218 countingStream->rewind();
14219 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014220 uint64_t cgen_var_1097;
14221 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
14222 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014223 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014224 uint64_t cgen_var_1098 = (uint64_t)(uintptr_t)pPropertyCount;
14225 countingStream->putBe64(cgen_var_1098);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014226 if (pPropertyCount)
14227 {
14228 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14229 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014230 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014231 uint64_t cgen_var_1099 = (uint64_t)(uintptr_t)pProperties;
14232 countingStream->putBe64(cgen_var_1099);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014233 if (pProperties)
14234 {
14235 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14236 {
14237 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
14238 }
14239 }
14240 }
14241 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14242 countingStream->rewind();
14243 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
14244 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
14245 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014246 uint64_t cgen_var_1100;
14247 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1100, 1);
14248 stream->write((uint64_t*)&cgen_var_1100, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014249 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014250 uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pPropertyCount;
14251 stream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014252 if (pPropertyCount)
14253 {
14254 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14255 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014256 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014257 uint64_t cgen_var_1102 = (uint64_t)(uintptr_t)pProperties;
14258 stream->putBe64(cgen_var_1102);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014259 if (pProperties)
14260 {
14261 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14262 {
14263 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14264 }
14265 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014266 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014267 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014268 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014269 if (pPropertyCount)
14270 {
14271 if (!(check_pPropertyCount))
14272 {
14273 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14274 }
14275 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14276 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014277 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014278 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014279 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014280 if (pProperties)
14281 {
14282 if (!(check_pProperties))
14283 {
14284 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14285 }
14286 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14287 {
14288 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
14289 }
14290 }
14291 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
14292 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014293 countingStream->clearPool();
14294 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014295 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014296 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
14297}
14298
14299VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
14300 VkPhysicalDevice physicalDevice,
14301 uint32_t* pPropertyCount,
14302 VkDisplayPlaneProperties2KHR* pProperties)
14303{
14304 auto stream = mImpl->stream();
14305 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014306 auto resources = mImpl->resources();
14307 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014308 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014309 VkPhysicalDevice local_physicalDevice;
14310 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014311 countingStream->rewind();
14312 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014313 uint64_t cgen_var_1105;
14314 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1105, 1);
14315 countingStream->write((uint64_t*)&cgen_var_1105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014316 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014317 uint64_t cgen_var_1106 = (uint64_t)(uintptr_t)pPropertyCount;
14318 countingStream->putBe64(cgen_var_1106);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014319 if (pPropertyCount)
14320 {
14321 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14322 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014323 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014324 uint64_t cgen_var_1107 = (uint64_t)(uintptr_t)pProperties;
14325 countingStream->putBe64(cgen_var_1107);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014326 if (pProperties)
14327 {
14328 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14329 {
14330 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14331 }
14332 }
14333 }
14334 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14335 countingStream->rewind();
14336 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
14337 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
14338 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014339 uint64_t cgen_var_1108;
14340 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1108, 1);
14341 stream->write((uint64_t*)&cgen_var_1108, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014342 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014343 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pPropertyCount;
14344 stream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014345 if (pPropertyCount)
14346 {
14347 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14348 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014349 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014350 uint64_t cgen_var_1110 = (uint64_t)(uintptr_t)pProperties;
14351 stream->putBe64(cgen_var_1110);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014352 if (pProperties)
14353 {
14354 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14355 {
14356 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14357 }
14358 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014359 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014360 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014361 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014362 if (pPropertyCount)
14363 {
14364 if (!(check_pPropertyCount))
14365 {
14366 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14367 }
14368 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14369 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014370 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014371 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014372 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014373 if (pProperties)
14374 {
14375 if (!(check_pProperties))
14376 {
14377 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14378 }
14379 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14380 {
14381 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
14382 }
14383 }
14384 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
14385 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014386 countingStream->clearPool();
14387 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014388 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014389 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
14390}
14391
14392VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
14393 VkPhysicalDevice physicalDevice,
14394 VkDisplayKHR display,
14395 uint32_t* pPropertyCount,
14396 VkDisplayModeProperties2KHR* pProperties)
14397{
14398 auto stream = mImpl->stream();
14399 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014400 auto resources = mImpl->resources();
14401 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014402 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014403 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014404 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014405 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014406 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014407 countingStream->rewind();
14408 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014409 uint64_t cgen_var_1113;
14410 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1113, 1);
14411 countingStream->write((uint64_t*)&cgen_var_1113, 1 * 8);
14412 uint64_t cgen_var_1114;
14413 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1114, 1);
14414 countingStream->write((uint64_t*)&cgen_var_1114, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014415 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014416 uint64_t cgen_var_1115 = (uint64_t)(uintptr_t)pPropertyCount;
14417 countingStream->putBe64(cgen_var_1115);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014418 if (pPropertyCount)
14419 {
14420 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14421 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014422 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014423 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pProperties;
14424 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014425 if (pProperties)
14426 {
14427 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14428 {
14429 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14430 }
14431 }
14432 }
14433 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14434 countingStream->rewind();
14435 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
14436 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
14437 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014438 uint64_t cgen_var_1117;
14439 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1117, 1);
14440 stream->write((uint64_t*)&cgen_var_1117, 1 * 8);
14441 uint64_t cgen_var_1118;
14442 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1118, 1);
14443 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014444 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014445 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
14446 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014447 if (pPropertyCount)
14448 {
14449 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14450 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014451 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014452 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
14453 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014454 if (pProperties)
14455 {
14456 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14457 {
14458 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14459 }
14460 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014461 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014462 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014463 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014464 if (pPropertyCount)
14465 {
14466 if (!(check_pPropertyCount))
14467 {
14468 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14469 }
14470 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14471 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014472 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014473 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014474 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014475 if (pProperties)
14476 {
14477 if (!(check_pProperties))
14478 {
14479 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14480 }
14481 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14482 {
14483 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
14484 }
14485 }
14486 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
14487 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014488 countingStream->clearPool();
14489 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014490 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014491 return vkGetDisplayModeProperties2KHR_VkResult_return;
14492}
14493
14494VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
14495 VkPhysicalDevice physicalDevice,
14496 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
14497 VkDisplayPlaneCapabilities2KHR* pCapabilities)
14498{
14499 auto stream = mImpl->stream();
14500 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014501 auto resources = mImpl->resources();
14502 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014503 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014504 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014505 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014506 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014507 local_pDisplayPlaneInfo = nullptr;
14508 if (pDisplayPlaneInfo)
14509 {
14510 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
14511 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
14512 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014513 countingStream->rewind();
14514 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014515 uint64_t cgen_var_1123;
14516 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
14517 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014518 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014519 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14520 }
14521 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14522 countingStream->rewind();
14523 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
14524 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
14525 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014526 uint64_t cgen_var_1124;
14527 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1124, 1);
14528 stream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014529 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014530 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14531 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
14532 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
14533 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014534 countingStream->clearPool();
14535 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014536 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014537 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
14538}
14539
14540#endif
14541#ifdef VK_KHR_dedicated_allocation
14542#endif
14543#ifdef VK_KHR_storage_buffer_storage_class
14544#endif
14545#ifdef VK_KHR_relaxed_block_layout
14546#endif
14547#ifdef VK_KHR_get_memory_requirements2
14548void VkEncoder::vkGetImageMemoryRequirements2KHR(
14549 VkDevice device,
14550 const VkImageMemoryRequirementsInfo2* pInfo,
14551 VkMemoryRequirements2* pMemoryRequirements)
14552{
14553 auto stream = mImpl->stream();
14554 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014555 auto resources = mImpl->resources();
14556 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014557 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014558 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014559 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014560 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014561 local_pInfo = nullptr;
14562 if (pInfo)
14563 {
14564 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
14565 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
14566 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014567 countingStream->rewind();
14568 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014569 uint64_t cgen_var_1125;
14570 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1125, 1);
14571 countingStream->write((uint64_t*)&cgen_var_1125, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014572 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014573 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14574 }
14575 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14576 countingStream->rewind();
14577 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
14578 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
14579 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014580 uint64_t cgen_var_1126;
14581 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1126, 1);
14582 stream->write((uint64_t*)&cgen_var_1126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014583 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014584 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14585 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14586}
14587
14588void VkEncoder::vkGetBufferMemoryRequirements2KHR(
14589 VkDevice device,
14590 const VkBufferMemoryRequirementsInfo2* pInfo,
14591 VkMemoryRequirements2* pMemoryRequirements)
14592{
14593 auto stream = mImpl->stream();
14594 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014595 auto resources = mImpl->resources();
14596 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014597 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014598 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014599 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014600 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014601 local_pInfo = nullptr;
14602 if (pInfo)
14603 {
14604 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
14605 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
14606 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014607 countingStream->rewind();
14608 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014609 uint64_t cgen_var_1127;
14610 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1127, 1);
14611 countingStream->write((uint64_t*)&cgen_var_1127, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014612 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014613 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
14614 }
14615 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14616 countingStream->rewind();
14617 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
14618 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
14619 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014620 uint64_t cgen_var_1128;
14621 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1128, 1);
14622 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014623 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014624 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14625 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
14626}
14627
14628void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
14629 VkDevice device,
14630 const VkImageSparseMemoryRequirementsInfo2* pInfo,
14631 uint32_t* pSparseMemoryRequirementCount,
14632 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
14633{
14634 auto stream = mImpl->stream();
14635 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014636 auto resources = mImpl->resources();
14637 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014638 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014639 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014640 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014641 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014642 local_pInfo = nullptr;
14643 if (pInfo)
14644 {
14645 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
14646 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
14647 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014648 countingStream->rewind();
14649 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014650 uint64_t cgen_var_1129;
14651 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1129, 1);
14652 countingStream->write((uint64_t*)&cgen_var_1129, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014653 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014654 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014655 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14656 countingStream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014657 if (pSparseMemoryRequirementCount)
14658 {
14659 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14660 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014661 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014662 uint64_t cgen_var_1131 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14663 countingStream->putBe64(cgen_var_1131);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014664 if (pSparseMemoryRequirements)
14665 {
14666 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14667 {
14668 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14669 }
14670 }
14671 }
14672 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14673 countingStream->rewind();
14674 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
14675 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
14676 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014677 uint64_t cgen_var_1132;
14678 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1132, 1);
14679 stream->write((uint64_t*)&cgen_var_1132, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014680 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014681 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014682 uint64_t cgen_var_1133 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
14683 stream->putBe64(cgen_var_1133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014684 if (pSparseMemoryRequirementCount)
14685 {
14686 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14687 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014688 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014689 uint64_t cgen_var_1134 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
14690 stream->putBe64(cgen_var_1134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014691 if (pSparseMemoryRequirements)
14692 {
14693 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14694 {
14695 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14696 }
14697 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014698 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014699 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014700 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014701 if (pSparseMemoryRequirementCount)
14702 {
14703 if (!(check_pSparseMemoryRequirementCount))
14704 {
14705 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
14706 }
14707 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
14708 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014709 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014710 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014711 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014712 if (pSparseMemoryRequirements)
14713 {
14714 if (!(check_pSparseMemoryRequirements))
14715 {
14716 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
14717 }
14718 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
14719 {
14720 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
14721 }
14722 }
14723}
14724
14725#endif
14726#ifdef VK_KHR_image_format_list
14727#endif
14728#ifdef VK_KHR_sampler_ycbcr_conversion
14729VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
14730 VkDevice device,
14731 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
14732 const VkAllocationCallbacks* pAllocator,
14733 VkSamplerYcbcrConversion* pYcbcrConversion)
14734{
14735 auto stream = mImpl->stream();
14736 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014737 auto resources = mImpl->resources();
14738 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014739 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014740 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014741 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014742 VkAllocationCallbacks* local_pAllocator;
14743 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014744 local_pCreateInfo = nullptr;
14745 if (pCreateInfo)
14746 {
14747 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
14748 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
14749 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014750 local_pAllocator = nullptr;
14751 if (pAllocator)
14752 {
14753 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14754 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14755 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014756 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014757 countingStream->rewind();
14758 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014759 uint64_t cgen_var_1137;
14760 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
14761 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014762 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014763 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014764 uint64_t cgen_var_1138 = (uint64_t)(uintptr_t)local_pAllocator;
14765 countingStream->putBe64(cgen_var_1138);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014766 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014767 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014768 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014769 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014770 uint64_t cgen_var_1139;
14771 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1139, 1);
14772 countingStream->write((uint64_t*)&cgen_var_1139, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014773 }
14774 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14775 countingStream->rewind();
14776 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
14777 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
14778 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014779 uint64_t cgen_var_1140;
14780 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1140, 1);
14781 stream->write((uint64_t*)&cgen_var_1140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014782 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014783 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014784 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)local_pAllocator;
14785 stream->putBe64(cgen_var_1141);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014786 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014787 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014788 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014789 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014790 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014791 uint64_t cgen_var_1142;
14792 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1142, 1);
14793 stream->write((uint64_t*)&cgen_var_1142, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014794 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014795 uint64_t cgen_var_1143;
14796 stream->read((uint64_t*)&cgen_var_1143, 8);
14797 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1143, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014798 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
14799 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014800 countingStream->clearPool();
14801 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014802 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014803 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
14804}
14805
14806void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
14807 VkDevice device,
14808 VkSamplerYcbcrConversion ycbcrConversion,
14809 const VkAllocationCallbacks* pAllocator)
14810{
14811 auto stream = mImpl->stream();
14812 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014813 auto resources = mImpl->resources();
14814 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014815 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014816 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014817 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014818 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014819 local_device = device;
14820 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014821 local_pAllocator = nullptr;
14822 if (pAllocator)
14823 {
14824 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14825 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14826 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014827 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014828 countingStream->rewind();
14829 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014830 uint64_t cgen_var_1144;
14831 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1144, 1);
14832 countingStream->write((uint64_t*)&cgen_var_1144, 1 * 8);
14833 uint64_t cgen_var_1145;
14834 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1145, 1);
14835 countingStream->write((uint64_t*)&cgen_var_1145, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014836 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014837 uint64_t cgen_var_1146 = (uint64_t)(uintptr_t)local_pAllocator;
14838 countingStream->putBe64(cgen_var_1146);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014839 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014840 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014841 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014842 }
14843 }
14844 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14845 countingStream->rewind();
14846 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
14847 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
14848 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014849 uint64_t cgen_var_1147;
14850 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
14851 stream->write((uint64_t*)&cgen_var_1147, 1 * 8);
14852 uint64_t cgen_var_1148;
14853 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1148, 1);
14854 stream->write((uint64_t*)&cgen_var_1148, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014855 // WARNING PTR CHECK
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014856 uint64_t cgen_var_1149 = (uint64_t)(uintptr_t)local_pAllocator;
14857 stream->putBe64(cgen_var_1149);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014858 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014859 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014860 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014861 }
14862}
14863
14864#endif
14865#ifdef VK_KHR_bind_memory2
14866VkResult VkEncoder::vkBindBufferMemory2KHR(
14867 VkDevice device,
14868 uint32_t bindInfoCount,
14869 const VkBindBufferMemoryInfo* pBindInfos)
14870{
14871 auto stream = mImpl->stream();
14872 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014873 auto resources = mImpl->resources();
14874 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014875 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014876 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014877 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014878 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014879 local_device = device;
14880 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014881 local_pBindInfos = nullptr;
14882 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014883 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014884 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014885 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14886 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014887 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
14888 }
14889 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014890 countingStream->rewind();
14891 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014892 uint64_t cgen_var_1150;
14893 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
14894 countingStream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014895 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14896 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14897 {
14898 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014899 }
14900 }
14901 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14902 countingStream->rewind();
14903 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
14904 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
14905 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014906 uint64_t cgen_var_1151;
14907 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1151, 1);
14908 stream->write((uint64_t*)&cgen_var_1151, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014909 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014910 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14911 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014912 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014913 }
14914 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
14915 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014916 countingStream->clearPool();
14917 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014918 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014919 return vkBindBufferMemory2KHR_VkResult_return;
14920}
14921
14922VkResult VkEncoder::vkBindImageMemory2KHR(
14923 VkDevice device,
14924 uint32_t bindInfoCount,
14925 const VkBindImageMemoryInfo* pBindInfos)
14926{
14927 auto stream = mImpl->stream();
14928 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014929 auto resources = mImpl->resources();
14930 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014931 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014932 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014933 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014934 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014935 local_device = device;
14936 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014937 local_pBindInfos = nullptr;
14938 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014939 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014940 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014941 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14942 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014943 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
14944 }
14945 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014946 countingStream->rewind();
14947 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014948 uint64_t cgen_var_1152;
14949 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1152, 1);
14950 countingStream->write((uint64_t*)&cgen_var_1152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014951 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
14952 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14953 {
14954 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014955 }
14956 }
14957 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14958 countingStream->rewind();
14959 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
14960 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
14961 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080014962 uint64_t cgen_var_1153;
14963 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1153, 1);
14964 stream->write((uint64_t*)&cgen_var_1153, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014965 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014966 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
14967 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014968 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014969 }
14970 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
14971 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014972 countingStream->clearPool();
14973 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014974 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014975 return vkBindImageMemory2KHR_VkResult_return;
14976}
14977
14978#endif
14979#ifdef VK_KHR_maintenance3
14980void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
14981 VkDevice device,
14982 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
14983 VkDescriptorSetLayoutSupport* pSupport)
14984{
14985 auto stream = mImpl->stream();
14986 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014987 auto resources = mImpl->resources();
14988 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014989 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014990 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014991 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014992 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014993 local_pCreateInfo = nullptr;
14994 if (pCreateInfo)
14995 {
14996 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
14997 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
14998 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014999 countingStream->rewind();
15000 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015001 uint64_t cgen_var_1154;
15002 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
15003 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015004 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015005 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
15006 }
15007 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15008 countingStream->rewind();
15009 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
15010 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
15011 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015012 uint64_t cgen_var_1155;
15013 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1155, 1);
15014 stream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015015 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015016 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15017 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
15018}
15019
15020#endif
15021#ifdef VK_KHR_draw_indirect_count
15022void VkEncoder::vkCmdDrawIndirectCountKHR(
15023 VkCommandBuffer commandBuffer,
15024 VkBuffer buffer,
15025 VkDeviceSize offset,
15026 VkBuffer countBuffer,
15027 VkDeviceSize countBufferOffset,
15028 uint32_t maxDrawCount,
15029 uint32_t stride)
15030{
15031 auto stream = mImpl->stream();
15032 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015033 auto resources = mImpl->resources();
15034 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015035 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015036 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015037 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015038 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015039 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015040 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015041 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015042 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015043 local_commandBuffer = commandBuffer;
15044 local_buffer = buffer;
15045 local_offset = offset;
15046 local_countBuffer = countBuffer;
15047 local_countBufferOffset = countBufferOffset;
15048 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015049 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015050 countingStream->rewind();
15051 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015052 uint64_t cgen_var_1156;
15053 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1156, 1);
15054 countingStream->write((uint64_t*)&cgen_var_1156, 1 * 8);
15055 uint64_t cgen_var_1157;
15056 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1157, 1);
15057 countingStream->write((uint64_t*)&cgen_var_1157, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015058 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015059 uint64_t cgen_var_1158;
15060 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1158, 1);
15061 countingStream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015062 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15063 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15064 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015065 }
15066 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15067 countingStream->rewind();
15068 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
15069 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
15070 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015071 uint64_t cgen_var_1159;
15072 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1159, 1);
15073 stream->write((uint64_t*)&cgen_var_1159, 1 * 8);
15074 uint64_t cgen_var_1160;
15075 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1160, 1);
15076 stream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015077 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015078 uint64_t cgen_var_1161;
15079 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1161, 1);
15080 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015081 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15082 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15083 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015084}
15085
15086void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
15087 VkCommandBuffer commandBuffer,
15088 VkBuffer buffer,
15089 VkDeviceSize offset,
15090 VkBuffer countBuffer,
15091 VkDeviceSize countBufferOffset,
15092 uint32_t maxDrawCount,
15093 uint32_t stride)
15094{
15095 auto stream = mImpl->stream();
15096 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015097 auto resources = mImpl->resources();
15098 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015099 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015100 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015101 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015102 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015103 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015104 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015105 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015106 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015107 local_commandBuffer = commandBuffer;
15108 local_buffer = buffer;
15109 local_offset = offset;
15110 local_countBuffer = countBuffer;
15111 local_countBufferOffset = countBufferOffset;
15112 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015113 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015114 countingStream->rewind();
15115 {
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015116 uint64_t cgen_var_1162;
15117 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1162, 1);
15118 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
15119 uint64_t cgen_var_1163;
15120 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1163, 1);
15121 countingStream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015122 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015123 uint64_t cgen_var_1164;
15124 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1164, 1);
15125 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015126 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15127 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15128 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015129 }
15130 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15131 countingStream->rewind();
15132 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
15133 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
15134 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015135 uint64_t cgen_var_1165;
15136 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1165, 1);
15137 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
15138 uint64_t cgen_var_1166;
15139 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1166, 1);
15140 stream->write((uint64_t*)&cgen_var_1166, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080015141 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015142 uint64_t cgen_var_1167;
15143 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1167, 1);
15144 stream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015145 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15146 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15147 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015148}
15149
15150#endif
15151#ifdef VK_KHR_8bit_storage
15152#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080015153#ifdef VK_ANDROID_native_buffer
15154VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
15155 VkDevice device,
15156 VkFormat format,
15157 VkImageUsageFlags imageUsage,
15158 int* grallocUsage)
15159{
15160 auto stream = mImpl->stream();
15161 auto countingStream = mImpl->countingStream();
15162 auto resources = mImpl->resources();
15163 auto pool = mImpl->pool();
15164 stream->setHandleMapping(resources->unwrapMapping());
15165 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015166 VkFormat local_format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015167 VkImageUsageFlags local_imageUsage;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015168 local_device = device;
15169 local_format = format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015170 local_imageUsage = imageUsage;
15171 countingStream->rewind();
15172 {
15173 uint64_t cgen_var_1168;
15174 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1168, 1);
15175 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
15176 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
15177 countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
15178 countingStream->write((int*)grallocUsage, sizeof(int));
15179 }
15180 uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15181 countingStream->rewind();
15182 uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
15183 stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
15184 stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
15185 uint64_t cgen_var_1169;
15186 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1169, 1);
15187 stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
15188 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
15189 stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
15190 stream->write((int*)grallocUsage, sizeof(int));
15191 stream->read((int*)grallocUsage, sizeof(int));
15192 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
15193 stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
15194 countingStream->clearPool();
15195 stream->clearPool();
15196 pool->freeAll();
15197 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
15198}
15199
15200VkResult VkEncoder::vkAcquireImageANDROID(
15201 VkDevice device,
15202 VkImage image,
15203 int nativeFenceFd,
15204 VkSemaphore semaphore,
15205 VkFence fence)
15206{
15207 auto stream = mImpl->stream();
15208 auto countingStream = mImpl->countingStream();
15209 auto resources = mImpl->resources();
15210 auto pool = mImpl->pool();
15211 stream->setHandleMapping(resources->unwrapMapping());
15212 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015213 VkImage local_image;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015214 int local_nativeFenceFd;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015215 VkSemaphore local_semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015216 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015217 local_device = device;
15218 local_image = image;
15219 local_nativeFenceFd = nativeFenceFd;
15220 local_semaphore = semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015221 local_fence = fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015222 goldfish_unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -080015223 countingStream->rewind();
15224 {
15225 uint64_t cgen_var_1170;
15226 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1170, 1);
15227 countingStream->write((uint64_t*)&cgen_var_1170, 1 * 8);
15228 uint64_t cgen_var_1171;
15229 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1171, 1);
15230 countingStream->write((uint64_t*)&cgen_var_1171, 1 * 8);
15231 countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
15232 uint64_t cgen_var_1172;
15233 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1172, 1);
15234 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
15235 uint64_t cgen_var_1173;
15236 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1173, 1);
15237 countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
15238 }
15239 uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15240 countingStream->rewind();
15241 uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
15242 stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
15243 stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
15244 uint64_t cgen_var_1174;
15245 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1174, 1);
15246 stream->write((uint64_t*)&cgen_var_1174, 1 * 8);
15247 uint64_t cgen_var_1175;
15248 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1175, 1);
15249 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
15250 stream->write((int*)&local_nativeFenceFd, sizeof(int));
15251 uint64_t cgen_var_1176;
15252 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1176, 1);
15253 stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
15254 uint64_t cgen_var_1177;
15255 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1177, 1);
15256 stream->write((uint64_t*)&cgen_var_1177, 1 * 8);
15257 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
15258 stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
15259 countingStream->clearPool();
15260 stream->clearPool();
15261 pool->freeAll();
15262 return vkAcquireImageANDROID_VkResult_return;
15263}
15264
15265VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
15266 VkQueue queue,
15267 uint32_t waitSemaphoreCount,
15268 const VkSemaphore* pWaitSemaphores,
15269 VkImage image,
15270 int* pNativeFenceFd)
15271{
15272 auto stream = mImpl->stream();
15273 auto countingStream = mImpl->countingStream();
15274 auto resources = mImpl->resources();
15275 auto pool = mImpl->pool();
15276 stream->setHandleMapping(resources->unwrapMapping());
15277 VkQueue local_queue;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015278 uint32_t local_waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015279 VkSemaphore* local_pWaitSemaphores;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015280 VkImage local_image;
15281 local_queue = queue;
15282 local_waitSemaphoreCount = waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015283 local_pWaitSemaphores = nullptr;
15284 if (pWaitSemaphores)
15285 {
15286 local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, sizeof(const VkSemaphore));
15287 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080015288 local_image = image;
15289 countingStream->rewind();
15290 {
15291 uint64_t cgen_var_1178;
15292 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1178, 1);
15293 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
15294 countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
15295 uint64_t cgen_var_1179;
15296 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, &cgen_var_1179, 1);
15297 countingStream->write((uint64_t*)&cgen_var_1179, 8);
15298 uint64_t cgen_var_1180;
15299 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1180, 1);
15300 countingStream->write((uint64_t*)&cgen_var_1180, 1 * 8);
15301 countingStream->write((int*)pNativeFenceFd, sizeof(int));
15302 }
15303 uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15304 countingStream->rewind();
15305 uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
15306 stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
15307 stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
15308 uint64_t cgen_var_1181;
15309 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1181, 1);
15310 stream->write((uint64_t*)&cgen_var_1181, 1 * 8);
15311 stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
15312 uint64_t cgen_var_1182;
15313 stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, &cgen_var_1182, 1);
15314 stream->write((uint64_t*)&cgen_var_1182, 8);
15315 uint64_t cgen_var_1183;
15316 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1183, 1);
15317 stream->write((uint64_t*)&cgen_var_1183, 1 * 8);
15318 stream->write((int*)pNativeFenceFd, sizeof(int));
15319 stream->read((int*)pNativeFenceFd, sizeof(int));
15320 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
15321 stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
15322 countingStream->clearPool();
15323 stream->clearPool();
15324 pool->freeAll();
15325 return vkQueueSignalReleaseImageANDROID_VkResult_return;
15326}
15327
15328#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015329#ifdef VK_EXT_debug_report
15330VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
15331 VkInstance instance,
15332 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
15333 const VkAllocationCallbacks* pAllocator,
15334 VkDebugReportCallbackEXT* pCallback)
15335{
15336 auto stream = mImpl->stream();
15337 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015338 auto resources = mImpl->resources();
15339 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015340 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015341 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015342 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015343 VkAllocationCallbacks* local_pAllocator;
15344 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015345 local_pCreateInfo = nullptr;
15346 if (pCreateInfo)
15347 {
15348 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
15349 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
15350 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015351 local_pAllocator = nullptr;
15352 if (pAllocator)
15353 {
15354 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15355 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15356 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015357 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015358 countingStream->rewind();
15359 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015360 uint64_t cgen_var_1184;
15361 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1184, 1);
15362 countingStream->write((uint64_t*)&cgen_var_1184, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015363 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015364 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015365 uint64_t cgen_var_1185 = (uint64_t)(uintptr_t)local_pAllocator;
15366 countingStream->putBe64(cgen_var_1185);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015367 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015368 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015369 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015370 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080015371 uint64_t cgen_var_1186;
15372 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1186, 1);
15373 countingStream->write((uint64_t*)&cgen_var_1186, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015374 }
15375 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15376 countingStream->rewind();
15377 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
15378 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
15379 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015380 uint64_t cgen_var_1187;
15381 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1187, 1);
15382 stream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015383 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015384 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015385 uint64_t cgen_var_1188 = (uint64_t)(uintptr_t)local_pAllocator;
15386 stream->putBe64(cgen_var_1188);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015387 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015388 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015389 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015390 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015391 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080015392 uint64_t cgen_var_1189;
15393 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1189, 1);
15394 stream->write((uint64_t*)&cgen_var_1189, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015395 stream->setHandleMapping(resources->unwrapMapping());
15396 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080015397 uint64_t cgen_var_1190;
15398 stream->read((uint64_t*)&cgen_var_1190, 8);
15399 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1190, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015400 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015401 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
15402 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015403 countingStream->clearPool();
15404 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015405 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015406 return vkCreateDebugReportCallbackEXT_VkResult_return;
15407}
15408
15409void VkEncoder::vkDestroyDebugReportCallbackEXT(
15410 VkInstance instance,
15411 VkDebugReportCallbackEXT callback,
15412 const VkAllocationCallbacks* pAllocator)
15413{
15414 auto stream = mImpl->stream();
15415 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015416 auto resources = mImpl->resources();
15417 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015418 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015419 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015420 VkDebugReportCallbackEXT local_callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015421 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015422 local_instance = instance;
15423 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015424 local_pAllocator = nullptr;
15425 if (pAllocator)
15426 {
15427 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15428 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15429 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015430 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015431 countingStream->rewind();
15432 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015433 uint64_t cgen_var_1191;
15434 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1191, 1);
15435 countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
15436 uint64_t cgen_var_1192;
15437 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1192, 1);
15438 countingStream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015439 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015440 uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pAllocator;
15441 countingStream->putBe64(cgen_var_1193);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015442 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015443 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015444 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015445 }
15446 }
15447 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15448 countingStream->rewind();
15449 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
15450 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
15451 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015452 uint64_t cgen_var_1194;
15453 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1194, 1);
15454 stream->write((uint64_t*)&cgen_var_1194, 1 * 8);
15455 uint64_t cgen_var_1195;
15456 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1195, 1);
15457 stream->write((uint64_t*)&cgen_var_1195, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015458 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015459 uint64_t cgen_var_1196 = (uint64_t)(uintptr_t)local_pAllocator;
15460 stream->putBe64(cgen_var_1196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015461 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015462 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015463 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015464 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015465 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015466}
15467
15468void VkEncoder::vkDebugReportMessageEXT(
15469 VkInstance instance,
15470 VkDebugReportFlagsEXT flags,
15471 VkDebugReportObjectTypeEXT objectType,
15472 uint64_t object,
15473 size_t location,
15474 int32_t messageCode,
15475 const char* pLayerPrefix,
15476 const char* pMessage)
15477{
15478 auto stream = mImpl->stream();
15479 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015480 auto resources = mImpl->resources();
15481 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015482 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015483 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015484 VkDebugReportFlagsEXT local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015485 VkDebugReportObjectTypeEXT local_objectType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015486 uint64_t local_object;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015487 size_t local_location;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015488 int32_t local_messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015489 char* local_pLayerPrefix;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015490 char* local_pMessage;
15491 local_instance = instance;
15492 local_flags = flags;
15493 local_objectType = objectType;
15494 local_object = object;
15495 local_location = location;
15496 local_messageCode = messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015497 local_pLayerPrefix = nullptr;
15498 if (pLayerPrefix)
15499 {
15500 local_pLayerPrefix = pool->strDup(pLayerPrefix);
15501 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015502 local_pMessage = nullptr;
15503 if (pMessage)
15504 {
15505 local_pMessage = pool->strDup(pMessage);
15506 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015507 countingStream->rewind();
15508 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015509 uint64_t cgen_var_1197;
15510 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1197, 1);
15511 countingStream->write((uint64_t*)&cgen_var_1197, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015512 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15513 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15514 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015515 uint64_t cgen_var_1198 = (uint64_t)local_location;
15516 countingStream->putBe64(cgen_var_1198);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015517 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15518 countingStream->putString(local_pLayerPrefix);
15519 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015520 }
15521 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15522 countingStream->rewind();
15523 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
15524 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
15525 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015526 uint64_t cgen_var_1199;
15527 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1199, 1);
15528 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015529 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
15530 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
15531 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015532 uint64_t cgen_var_1200 = (uint64_t)local_location;
15533 stream->putBe64(cgen_var_1200);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015534 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
15535 stream->putString(local_pLayerPrefix);
15536 stream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015537}
15538
15539#endif
15540#ifdef VK_NV_glsl_shader
15541#endif
15542#ifdef VK_EXT_depth_range_unrestricted
15543#endif
15544#ifdef VK_IMG_filter_cubic
15545#endif
15546#ifdef VK_AMD_rasterization_order
15547#endif
15548#ifdef VK_AMD_shader_trinary_minmax
15549#endif
15550#ifdef VK_AMD_shader_explicit_vertex_parameter
15551#endif
15552#ifdef VK_EXT_debug_marker
15553VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
15554 VkDevice device,
15555 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
15556{
15557 auto stream = mImpl->stream();
15558 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015559 auto resources = mImpl->resources();
15560 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015561 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015562 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015563 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015564 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015565 local_pTagInfo = nullptr;
15566 if (pTagInfo)
15567 {
15568 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
15569 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
15570 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015571 countingStream->rewind();
15572 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015573 uint64_t cgen_var_1201;
15574 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1201, 1);
15575 countingStream->write((uint64_t*)&cgen_var_1201, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015576 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015577 }
15578 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15579 countingStream->rewind();
15580 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
15581 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
15582 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015583 uint64_t cgen_var_1202;
15584 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1202, 1);
15585 stream->write((uint64_t*)&cgen_var_1202, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015586 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015587 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
15588 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015589 countingStream->clearPool();
15590 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015591 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015592 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
15593}
15594
15595VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
15596 VkDevice device,
15597 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
15598{
15599 auto stream = mImpl->stream();
15600 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015601 auto resources = mImpl->resources();
15602 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015603 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015604 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015605 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015606 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015607 local_pNameInfo = nullptr;
15608 if (pNameInfo)
15609 {
15610 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
15611 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
15612 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015613 countingStream->rewind();
15614 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015615 uint64_t cgen_var_1203;
15616 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1203, 1);
15617 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015618 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015619 }
15620 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15621 countingStream->rewind();
15622 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
15623 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
15624 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015625 uint64_t cgen_var_1204;
15626 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1204, 1);
15627 stream->write((uint64_t*)&cgen_var_1204, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015628 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015629 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
15630 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015631 countingStream->clearPool();
15632 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015633 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015634 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
15635}
15636
15637void VkEncoder::vkCmdDebugMarkerBeginEXT(
15638 VkCommandBuffer commandBuffer,
15639 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15640{
15641 auto stream = mImpl->stream();
15642 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015643 auto resources = mImpl->resources();
15644 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015645 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015646 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015647 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015648 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015649 local_pMarkerInfo = nullptr;
15650 if (pMarkerInfo)
15651 {
15652 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15653 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15654 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015655 countingStream->rewind();
15656 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015657 uint64_t cgen_var_1205;
15658 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1205, 1);
15659 countingStream->write((uint64_t*)&cgen_var_1205, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015660 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015661 }
15662 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15663 countingStream->rewind();
15664 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
15665 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
15666 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015667 uint64_t cgen_var_1206;
15668 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1206, 1);
15669 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015670 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015671}
15672
15673void VkEncoder::vkCmdDebugMarkerEndEXT(
15674 VkCommandBuffer commandBuffer)
15675{
15676 auto stream = mImpl->stream();
15677 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015678 auto resources = mImpl->resources();
15679 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015680 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015681 VkCommandBuffer local_commandBuffer;
15682 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015683 countingStream->rewind();
15684 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015685 uint64_t cgen_var_1207;
15686 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1207, 1);
15687 countingStream->write((uint64_t*)&cgen_var_1207, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015688 }
15689 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15690 countingStream->rewind();
15691 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
15692 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
15693 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015694 uint64_t cgen_var_1208;
15695 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1208, 1);
15696 stream->write((uint64_t*)&cgen_var_1208, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015697}
15698
15699void VkEncoder::vkCmdDebugMarkerInsertEXT(
15700 VkCommandBuffer commandBuffer,
15701 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
15702{
15703 auto stream = mImpl->stream();
15704 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015705 auto resources = mImpl->resources();
15706 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015707 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015708 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015709 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015710 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015711 local_pMarkerInfo = nullptr;
15712 if (pMarkerInfo)
15713 {
15714 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
15715 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
15716 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015717 countingStream->rewind();
15718 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015719 uint64_t cgen_var_1209;
15720 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1209, 1);
15721 countingStream->write((uint64_t*)&cgen_var_1209, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015722 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015723 }
15724 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15725 countingStream->rewind();
15726 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
15727 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
15728 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015729 uint64_t cgen_var_1210;
15730 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1210, 1);
15731 stream->write((uint64_t*)&cgen_var_1210, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015732 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015733}
15734
15735#endif
15736#ifdef VK_AMD_gcn_shader
15737#endif
15738#ifdef VK_NV_dedicated_allocation
15739#endif
15740#ifdef VK_AMD_draw_indirect_count
15741void VkEncoder::vkCmdDrawIndirectCountAMD(
15742 VkCommandBuffer commandBuffer,
15743 VkBuffer buffer,
15744 VkDeviceSize offset,
15745 VkBuffer countBuffer,
15746 VkDeviceSize countBufferOffset,
15747 uint32_t maxDrawCount,
15748 uint32_t stride)
15749{
15750 auto stream = mImpl->stream();
15751 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015752 auto resources = mImpl->resources();
15753 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015754 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015755 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015756 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015757 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015758 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015759 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015760 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015761 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015762 local_commandBuffer = commandBuffer;
15763 local_buffer = buffer;
15764 local_offset = offset;
15765 local_countBuffer = countBuffer;
15766 local_countBufferOffset = countBufferOffset;
15767 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015768 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015769 countingStream->rewind();
15770 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015771 uint64_t cgen_var_1211;
15772 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1211, 1);
15773 countingStream->write((uint64_t*)&cgen_var_1211, 1 * 8);
15774 uint64_t cgen_var_1212;
15775 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1212, 1);
15776 countingStream->write((uint64_t*)&cgen_var_1212, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015777 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015778 uint64_t cgen_var_1213;
15779 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1213, 1);
15780 countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015781 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15782 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15783 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015784 }
15785 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15786 countingStream->rewind();
15787 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
15788 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
15789 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015790 uint64_t cgen_var_1214;
15791 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1214, 1);
15792 stream->write((uint64_t*)&cgen_var_1214, 1 * 8);
15793 uint64_t cgen_var_1215;
15794 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1215, 1);
15795 stream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015796 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015797 uint64_t cgen_var_1216;
15798 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1216, 1);
15799 stream->write((uint64_t*)&cgen_var_1216, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015800 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15801 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15802 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015803}
15804
15805void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
15806 VkCommandBuffer commandBuffer,
15807 VkBuffer buffer,
15808 VkDeviceSize offset,
15809 VkBuffer countBuffer,
15810 VkDeviceSize countBufferOffset,
15811 uint32_t maxDrawCount,
15812 uint32_t stride)
15813{
15814 auto stream = mImpl->stream();
15815 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015816 auto resources = mImpl->resources();
15817 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015818 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015819 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015820 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015821 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015822 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015823 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015824 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015825 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015826 local_commandBuffer = commandBuffer;
15827 local_buffer = buffer;
15828 local_offset = offset;
15829 local_countBuffer = countBuffer;
15830 local_countBufferOffset = countBufferOffset;
15831 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015832 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015833 countingStream->rewind();
15834 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015835 uint64_t cgen_var_1217;
15836 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1217, 1);
15837 countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
15838 uint64_t cgen_var_1218;
15839 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1218, 1);
15840 countingStream->write((uint64_t*)&cgen_var_1218, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015841 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015842 uint64_t cgen_var_1219;
15843 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1219, 1);
15844 countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015845 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15846 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15847 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015848 }
15849 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15850 countingStream->rewind();
15851 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
15852 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
15853 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015854 uint64_t cgen_var_1220;
15855 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1220, 1);
15856 stream->write((uint64_t*)&cgen_var_1220, 1 * 8);
15857 uint64_t cgen_var_1221;
15858 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1221, 1);
15859 stream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015860 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015861 uint64_t cgen_var_1222;
15862 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1222, 1);
15863 stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015864 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
15865 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
15866 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015867}
15868
15869#endif
15870#ifdef VK_AMD_negative_viewport_height
15871#endif
15872#ifdef VK_AMD_gpu_shader_half_float
15873#endif
15874#ifdef VK_AMD_shader_ballot
15875#endif
15876#ifdef VK_AMD_texture_gather_bias_lod
15877#endif
15878#ifdef VK_AMD_shader_info
15879VkResult VkEncoder::vkGetShaderInfoAMD(
15880 VkDevice device,
15881 VkPipeline pipeline,
15882 VkShaderStageFlagBits shaderStage,
15883 VkShaderInfoTypeAMD infoType,
15884 size_t* pInfoSize,
15885 void* pInfo)
15886{
15887 auto stream = mImpl->stream();
15888 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015889 auto resources = mImpl->resources();
15890 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015891 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015892 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015893 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015894 VkShaderStageFlagBits local_shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015895 VkShaderInfoTypeAMD local_infoType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015896 local_device = device;
15897 local_pipeline = pipeline;
15898 local_shaderStage = shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015899 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015900 countingStream->rewind();
15901 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015902 uint64_t cgen_var_1223;
15903 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1223, 1);
15904 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
15905 uint64_t cgen_var_1224;
15906 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1224, 1);
15907 countingStream->write((uint64_t*)&cgen_var_1224, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015908 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15909 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015910 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015911 uint64_t cgen_var_1225 = (uint64_t)(uintptr_t)pInfoSize;
15912 countingStream->putBe64(cgen_var_1225);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015913 if (pInfoSize)
15914 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015915 uint64_t cgen_var_1226 = (uint64_t)(*pInfoSize);
15916 countingStream->putBe64(cgen_var_1226);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015917 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015918 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015919 uint64_t cgen_var_1227 = (uint64_t)(uintptr_t)pInfo;
15920 countingStream->putBe64(cgen_var_1227);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015921 if (pInfo)
15922 {
15923 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15924 }
15925 }
15926 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15927 countingStream->rewind();
15928 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
15929 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
15930 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080015931 uint64_t cgen_var_1228;
15932 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1228, 1);
15933 stream->write((uint64_t*)&cgen_var_1228, 1 * 8);
15934 uint64_t cgen_var_1229;
15935 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1229, 1);
15936 stream->write((uint64_t*)&cgen_var_1229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015937 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
15938 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015939 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015940 uint64_t cgen_var_1230 = (uint64_t)(uintptr_t)pInfoSize;
15941 stream->putBe64(cgen_var_1230);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015942 if (pInfoSize)
15943 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080015944 uint64_t cgen_var_1231 = (uint64_t)(*pInfoSize);
15945 stream->putBe64(cgen_var_1231);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015946 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015947 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080015948 uint64_t cgen_var_1232 = (uint64_t)(uintptr_t)pInfo;
15949 stream->putBe64(cgen_var_1232);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015950 if (pInfo)
15951 {
15952 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15953 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015954 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015955 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015956 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015957 if (pInfoSize)
15958 {
15959 if (!(check_pInfoSize))
15960 {
15961 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
15962 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080015963 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015964 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015965 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015966 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015967 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015968 if (pInfo)
15969 {
15970 if (!(check_pInfo))
15971 {
15972 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
15973 }
15974 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
15975 }
15976 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
15977 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015978 countingStream->clearPool();
15979 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015980 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015981 return vkGetShaderInfoAMD_VkResult_return;
15982}
15983
15984#endif
15985#ifdef VK_AMD_shader_image_load_store_lod
15986#endif
15987#ifdef VK_IMG_format_pvrtc
15988#endif
15989#ifdef VK_NV_external_memory_capabilities
15990VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
15991 VkPhysicalDevice physicalDevice,
15992 VkFormat format,
15993 VkImageType type,
15994 VkImageTiling tiling,
15995 VkImageUsageFlags usage,
15996 VkImageCreateFlags flags,
15997 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
15998 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
15999{
16000 auto stream = mImpl->stream();
16001 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016002 auto resources = mImpl->resources();
16003 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016004 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016005 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016006 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016007 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016008 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016009 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016010 VkImageCreateFlags local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016011 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016012 local_physicalDevice = physicalDevice;
16013 local_format = format;
16014 local_type = type;
16015 local_tiling = tiling;
16016 local_usage = usage;
16017 local_flags = flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016018 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016019 countingStream->rewind();
16020 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016021 uint64_t cgen_var_1236;
16022 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1236, 1);
16023 countingStream->write((uint64_t*)&cgen_var_1236, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016024 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
16025 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
16026 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
16027 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
16028 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
16029 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016030 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16031 }
16032 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16033 countingStream->rewind();
16034 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
16035 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
16036 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016037 uint64_t cgen_var_1237;
16038 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1237, 1);
16039 stream->write((uint64_t*)&cgen_var_1237, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016040 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
16041 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
16042 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
16043 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
16044 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
16045 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016046 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16047 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
16048 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
16049 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016050 countingStream->clearPool();
16051 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016052 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016053 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
16054}
16055
16056#endif
16057#ifdef VK_NV_external_memory
16058#endif
16059#ifdef VK_NV_external_memory_win32
16060VkResult VkEncoder::vkGetMemoryWin32HandleNV(
16061 VkDevice device,
16062 VkDeviceMemory memory,
16063 VkExternalMemoryHandleTypeFlagsNV handleType,
16064 HANDLE* pHandle)
16065{
16066 auto stream = mImpl->stream();
16067 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016068 auto resources = mImpl->resources();
16069 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016070 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016071 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016072 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016073 VkExternalMemoryHandleTypeFlagsNV local_handleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016074 local_device = device;
16075 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016076 local_handleType = handleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016077 countingStream->rewind();
16078 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016079 uint64_t cgen_var_1238;
16080 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1238, 1);
16081 countingStream->write((uint64_t*)&cgen_var_1238, 1 * 8);
16082 uint64_t cgen_var_1239;
16083 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1239, 1);
16084 countingStream->write((uint64_t*)&cgen_var_1239, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016085 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016086 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
16087 }
16088 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16089 countingStream->rewind();
16090 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
16091 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
16092 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016093 uint64_t cgen_var_1240;
16094 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1240, 1);
16095 stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
16096 uint64_t cgen_var_1241;
16097 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1241, 1);
16098 stream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016099 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016100 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
16101 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
16102 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
16103 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016104 countingStream->clearPool();
16105 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016106 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016107 return vkGetMemoryWin32HandleNV_VkResult_return;
16108}
16109
16110#endif
16111#ifdef VK_NV_win32_keyed_mutex
16112#endif
16113#ifdef VK_EXT_validation_flags
16114#endif
16115#ifdef VK_NN_vi_surface
16116VkResult VkEncoder::vkCreateViSurfaceNN(
16117 VkInstance instance,
16118 const VkViSurfaceCreateInfoNN* pCreateInfo,
16119 const VkAllocationCallbacks* pAllocator,
16120 VkSurfaceKHR* pSurface)
16121{
16122 auto stream = mImpl->stream();
16123 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016124 auto resources = mImpl->resources();
16125 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016126 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016127 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016128 VkViSurfaceCreateInfoNN* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016129 VkAllocationCallbacks* local_pAllocator;
16130 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016131 local_pCreateInfo = nullptr;
16132 if (pCreateInfo)
16133 {
16134 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
16135 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
16136 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016137 local_pAllocator = nullptr;
16138 if (pAllocator)
16139 {
16140 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16141 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16142 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016143 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016144 countingStream->rewind();
16145 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016146 uint64_t cgen_var_1242;
16147 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1242, 1);
16148 countingStream->write((uint64_t*)&cgen_var_1242, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016149 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016150 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016151 uint64_t cgen_var_1243 = (uint64_t)(uintptr_t)local_pAllocator;
16152 countingStream->putBe64(cgen_var_1243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016153 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016154 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016155 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016156 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016157 uint64_t cgen_var_1244;
16158 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1244, 1);
16159 countingStream->write((uint64_t*)&cgen_var_1244, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016160 }
16161 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16162 countingStream->rewind();
16163 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
16164 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
16165 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016166 uint64_t cgen_var_1245;
16167 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1245, 1);
16168 stream->write((uint64_t*)&cgen_var_1245, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016169 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016170 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016171 uint64_t cgen_var_1246 = (uint64_t)(uintptr_t)local_pAllocator;
16172 stream->putBe64(cgen_var_1246);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016173 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016174 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016175 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016176 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016177 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016178 uint64_t cgen_var_1247;
16179 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1247, 1);
16180 stream->write((uint64_t*)&cgen_var_1247, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016181 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080016182 uint64_t cgen_var_1248;
16183 stream->read((uint64_t*)&cgen_var_1248, 8);
16184 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1248, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016185 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
16186 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016187 countingStream->clearPool();
16188 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016189 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016190 return vkCreateViSurfaceNN_VkResult_return;
16191}
16192
16193#endif
16194#ifdef VK_EXT_shader_subgroup_ballot
16195#endif
16196#ifdef VK_EXT_shader_subgroup_vote
16197#endif
16198#ifdef VK_EXT_conditional_rendering
16199void VkEncoder::vkCmdBeginConditionalRenderingEXT(
16200 VkCommandBuffer commandBuffer,
16201 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
16202{
16203 auto stream = mImpl->stream();
16204 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016205 auto resources = mImpl->resources();
16206 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016207 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016208 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016209 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016210 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016211 local_pConditionalRenderingBegin = nullptr;
16212 if (pConditionalRenderingBegin)
16213 {
16214 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
16215 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
16216 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016217 countingStream->rewind();
16218 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016219 uint64_t cgen_var_1249;
16220 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1249, 1);
16221 countingStream->write((uint64_t*)&cgen_var_1249, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016222 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016223 }
16224 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16225 countingStream->rewind();
16226 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
16227 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
16228 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016229 uint64_t cgen_var_1250;
16230 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1250, 1);
16231 stream->write((uint64_t*)&cgen_var_1250, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016232 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016233}
16234
16235void VkEncoder::vkCmdEndConditionalRenderingEXT(
16236 VkCommandBuffer commandBuffer)
16237{
16238 auto stream = mImpl->stream();
16239 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016240 auto resources = mImpl->resources();
16241 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016242 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016243 VkCommandBuffer local_commandBuffer;
16244 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016245 countingStream->rewind();
16246 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016247 uint64_t cgen_var_1251;
16248 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1251, 1);
16249 countingStream->write((uint64_t*)&cgen_var_1251, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016250 }
16251 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16252 countingStream->rewind();
16253 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
16254 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
16255 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016256 uint64_t cgen_var_1252;
16257 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1252, 1);
16258 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016259}
16260
16261#endif
16262#ifdef VK_NVX_device_generated_commands
16263void VkEncoder::vkCmdProcessCommandsNVX(
16264 VkCommandBuffer commandBuffer,
16265 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
16266{
16267 auto stream = mImpl->stream();
16268 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016269 auto resources = mImpl->resources();
16270 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016271 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016272 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016273 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016274 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016275 local_pProcessCommandsInfo = nullptr;
16276 if (pProcessCommandsInfo)
16277 {
16278 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
16279 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
16280 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016281 countingStream->rewind();
16282 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016283 uint64_t cgen_var_1253;
16284 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1253, 1);
16285 countingStream->write((uint64_t*)&cgen_var_1253, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016286 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016287 }
16288 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16289 countingStream->rewind();
16290 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
16291 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
16292 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016293 uint64_t cgen_var_1254;
16294 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1254, 1);
16295 stream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016296 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016297}
16298
16299void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
16300 VkCommandBuffer commandBuffer,
16301 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
16302{
16303 auto stream = mImpl->stream();
16304 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016305 auto resources = mImpl->resources();
16306 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016307 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016308 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016309 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016310 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016311 local_pReserveSpaceInfo = nullptr;
16312 if (pReserveSpaceInfo)
16313 {
16314 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
16315 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
16316 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016317 countingStream->rewind();
16318 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016319 uint64_t cgen_var_1255;
16320 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1255, 1);
16321 countingStream->write((uint64_t*)&cgen_var_1255, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016322 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016323 }
16324 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16325 countingStream->rewind();
16326 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
16327 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
16328 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016329 uint64_t cgen_var_1256;
16330 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1256, 1);
16331 stream->write((uint64_t*)&cgen_var_1256, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016332 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016333}
16334
16335VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
16336 VkDevice device,
16337 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
16338 const VkAllocationCallbacks* pAllocator,
16339 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
16340{
16341 auto stream = mImpl->stream();
16342 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016343 auto resources = mImpl->resources();
16344 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016345 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016346 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016347 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016348 VkAllocationCallbacks* local_pAllocator;
16349 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016350 local_pCreateInfo = nullptr;
16351 if (pCreateInfo)
16352 {
16353 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
16354 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
16355 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016356 local_pAllocator = nullptr;
16357 if (pAllocator)
16358 {
16359 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16360 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16361 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016362 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016363 countingStream->rewind();
16364 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016365 uint64_t cgen_var_1257;
16366 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1257, 1);
16367 countingStream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016368 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016369 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016370 uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
16371 countingStream->putBe64(cgen_var_1258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016372 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016373 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016374 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016375 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016376 uint64_t cgen_var_1259;
16377 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1259, 1);
16378 countingStream->write((uint64_t*)&cgen_var_1259, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016379 }
16380 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16381 countingStream->rewind();
16382 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
16383 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
16384 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016385 uint64_t cgen_var_1260;
16386 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1260, 1);
16387 stream->write((uint64_t*)&cgen_var_1260, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016388 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016389 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016390 uint64_t cgen_var_1261 = (uint64_t)(uintptr_t)local_pAllocator;
16391 stream->putBe64(cgen_var_1261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016392 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016393 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016394 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016395 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016396 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016397 uint64_t cgen_var_1262;
16398 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1262, 1);
16399 stream->write((uint64_t*)&cgen_var_1262, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016400 stream->setHandleMapping(resources->unwrapMapping());
16401 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080016402 uint64_t cgen_var_1263;
16403 stream->read((uint64_t*)&cgen_var_1263, 8);
16404 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1263, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016405 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016406 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
16407 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016408 countingStream->clearPool();
16409 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016410 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016411 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
16412}
16413
16414void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
16415 VkDevice device,
16416 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
16417 const VkAllocationCallbacks* pAllocator)
16418{
16419 auto stream = mImpl->stream();
16420 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016421 auto resources = mImpl->resources();
16422 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016423 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016424 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016425 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016426 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016427 local_device = device;
16428 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016429 local_pAllocator = nullptr;
16430 if (pAllocator)
16431 {
16432 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16433 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16434 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016435 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016436 countingStream->rewind();
16437 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016438 uint64_t cgen_var_1264;
16439 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1264, 1);
16440 countingStream->write((uint64_t*)&cgen_var_1264, 1 * 8);
16441 uint64_t cgen_var_1265;
16442 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1265, 1);
16443 countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016444 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016445 uint64_t cgen_var_1266 = (uint64_t)(uintptr_t)local_pAllocator;
16446 countingStream->putBe64(cgen_var_1266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016447 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016448 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016449 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016450 }
16451 }
16452 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16453 countingStream->rewind();
16454 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
16455 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
16456 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016457 uint64_t cgen_var_1267;
16458 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1267, 1);
16459 stream->write((uint64_t*)&cgen_var_1267, 1 * 8);
16460 uint64_t cgen_var_1268;
16461 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1268, 1);
16462 stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016463 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016464 uint64_t cgen_var_1269 = (uint64_t)(uintptr_t)local_pAllocator;
16465 stream->putBe64(cgen_var_1269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016466 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016467 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016468 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016469 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016470 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016471}
16472
16473VkResult VkEncoder::vkCreateObjectTableNVX(
16474 VkDevice device,
16475 const VkObjectTableCreateInfoNVX* pCreateInfo,
16476 const VkAllocationCallbacks* pAllocator,
16477 VkObjectTableNVX* pObjectTable)
16478{
16479 auto stream = mImpl->stream();
16480 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016481 auto resources = mImpl->resources();
16482 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016483 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016484 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016485 VkObjectTableCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016486 VkAllocationCallbacks* local_pAllocator;
16487 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016488 local_pCreateInfo = nullptr;
16489 if (pCreateInfo)
16490 {
16491 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
16492 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
16493 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016494 local_pAllocator = nullptr;
16495 if (pAllocator)
16496 {
16497 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16498 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16499 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016500 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016501 countingStream->rewind();
16502 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016503 uint64_t cgen_var_1270;
16504 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1270, 1);
16505 countingStream->write((uint64_t*)&cgen_var_1270, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016506 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016507 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016508 uint64_t cgen_var_1271 = (uint64_t)(uintptr_t)local_pAllocator;
16509 countingStream->putBe64(cgen_var_1271);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016510 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016511 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016512 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016513 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080016514 uint64_t cgen_var_1272;
16515 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1272, 1);
16516 countingStream->write((uint64_t*)&cgen_var_1272, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016517 }
16518 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16519 countingStream->rewind();
16520 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
16521 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
16522 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016523 uint64_t cgen_var_1273;
16524 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1273, 1);
16525 stream->write((uint64_t*)&cgen_var_1273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016526 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016527 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016528 uint64_t cgen_var_1274 = (uint64_t)(uintptr_t)local_pAllocator;
16529 stream->putBe64(cgen_var_1274);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016530 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016531 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016532 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016533 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080016534 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016535 uint64_t cgen_var_1275;
16536 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1275, 1);
16537 stream->write((uint64_t*)&cgen_var_1275, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016538 stream->setHandleMapping(resources->unwrapMapping());
16539 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080016540 uint64_t cgen_var_1276;
16541 stream->read((uint64_t*)&cgen_var_1276, 8);
16542 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1276, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016543 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016544 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
16545 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016546 countingStream->clearPool();
16547 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016548 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016549 return vkCreateObjectTableNVX_VkResult_return;
16550}
16551
16552void VkEncoder::vkDestroyObjectTableNVX(
16553 VkDevice device,
16554 VkObjectTableNVX objectTable,
16555 const VkAllocationCallbacks* pAllocator)
16556{
16557 auto stream = mImpl->stream();
16558 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016559 auto resources = mImpl->resources();
16560 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016561 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016562 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016563 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016564 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016565 local_device = device;
16566 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016567 local_pAllocator = nullptr;
16568 if (pAllocator)
16569 {
16570 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
16571 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
16572 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080016573 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016574 countingStream->rewind();
16575 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016576 uint64_t cgen_var_1277;
16577 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1277, 1);
16578 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
16579 uint64_t cgen_var_1278;
16580 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1278, 1);
16581 countingStream->write((uint64_t*)&cgen_var_1278, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016582 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016583 uint64_t cgen_var_1279 = (uint64_t)(uintptr_t)local_pAllocator;
16584 countingStream->putBe64(cgen_var_1279);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016585 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016586 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016587 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016588 }
16589 }
16590 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16591 countingStream->rewind();
16592 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
16593 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
16594 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016595 uint64_t cgen_var_1280;
16596 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1280, 1);
16597 stream->write((uint64_t*)&cgen_var_1280, 1 * 8);
16598 uint64_t cgen_var_1281;
16599 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1281, 1);
16600 stream->write((uint64_t*)&cgen_var_1281, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016601 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080016602 uint64_t cgen_var_1282 = (uint64_t)(uintptr_t)local_pAllocator;
16603 stream->putBe64(cgen_var_1282);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016604 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016605 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016606 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016607 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016608 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016609}
16610
16611VkResult VkEncoder::vkRegisterObjectsNVX(
16612 VkDevice device,
16613 VkObjectTableNVX objectTable,
16614 uint32_t objectCount,
16615 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
16616 const uint32_t* pObjectIndices)
16617{
16618 auto stream = mImpl->stream();
16619 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016620 auto resources = mImpl->resources();
16621 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016622 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016623 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016624 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016625 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016626 VkObjectTableEntryNVX** local_ppObjectTableEntries;
16627 uint32_t* local_pObjectIndices;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016628 local_device = device;
16629 local_objectTable = objectTable;
16630 local_objectCount = objectCount;
16631 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016632 local_pObjectIndices = nullptr;
16633 if (pObjectIndices)
16634 {
16635 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16636 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016637 countingStream->rewind();
16638 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016639 uint64_t cgen_var_1283;
16640 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1283, 1);
16641 countingStream->write((uint64_t*)&cgen_var_1283, 1 * 8);
16642 uint64_t cgen_var_1284;
16643 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1284, 1);
16644 countingStream->write((uint64_t*)&cgen_var_1284, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016645 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016646 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016647 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016648 }
16649 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16650 countingStream->rewind();
16651 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
16652 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
16653 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016654 uint64_t cgen_var_1285;
16655 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1285, 1);
16656 stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
16657 uint64_t cgen_var_1286;
16658 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1286, 1);
16659 stream->write((uint64_t*)&cgen_var_1286, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016660 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080016661 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016662 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016663 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
16664 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016665 countingStream->clearPool();
16666 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016667 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016668 return vkRegisterObjectsNVX_VkResult_return;
16669}
16670
16671VkResult VkEncoder::vkUnregisterObjectsNVX(
16672 VkDevice device,
16673 VkObjectTableNVX objectTable,
16674 uint32_t objectCount,
16675 const VkObjectEntryTypeNVX* pObjectEntryTypes,
16676 const uint32_t* pObjectIndices)
16677{
16678 auto stream = mImpl->stream();
16679 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016680 auto resources = mImpl->resources();
16681 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016682 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016683 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016684 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016685 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016686 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016687 uint32_t* local_pObjectIndices;
16688 local_device = device;
16689 local_objectTable = objectTable;
16690 local_objectCount = objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016691 local_pObjectEntryTypes = nullptr;
16692 if (pObjectEntryTypes)
16693 {
16694 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
16695 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016696 local_pObjectIndices = nullptr;
16697 if (pObjectIndices)
16698 {
16699 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
16700 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016701 countingStream->rewind();
16702 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016703 uint64_t cgen_var_1287;
16704 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1287, 1);
16705 countingStream->write((uint64_t*)&cgen_var_1287, 1 * 8);
16706 uint64_t cgen_var_1288;
16707 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1288, 1);
16708 countingStream->write((uint64_t*)&cgen_var_1288, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016709 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16710 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16711 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016712 }
16713 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16714 countingStream->rewind();
16715 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
16716 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
16717 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016718 uint64_t cgen_var_1289;
16719 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
16720 stream->write((uint64_t*)&cgen_var_1289, 1 * 8);
16721 uint64_t cgen_var_1290;
16722 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1290, 1);
16723 stream->write((uint64_t*)&cgen_var_1290, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016724 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
16725 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
16726 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016727 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
16728 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016729 countingStream->clearPool();
16730 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016731 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016732 return vkUnregisterObjectsNVX_VkResult_return;
16733}
16734
16735void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
16736 VkPhysicalDevice physicalDevice,
16737 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
16738 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
16739{
16740 auto stream = mImpl->stream();
16741 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016742 auto resources = mImpl->resources();
16743 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016744 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016745 VkPhysicalDevice local_physicalDevice;
16746 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016747 countingStream->rewind();
16748 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016749 uint64_t cgen_var_1291;
16750 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1291, 1);
16751 countingStream->write((uint64_t*)&cgen_var_1291, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016752 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16753 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16754 }
16755 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16756 countingStream->rewind();
16757 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
16758 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
16759 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016760 uint64_t cgen_var_1292;
16761 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1292, 1);
16762 stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016763 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16764 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16765 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
16766 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
16767}
16768
16769#endif
16770#ifdef VK_NV_clip_space_w_scaling
16771void VkEncoder::vkCmdSetViewportWScalingNV(
16772 VkCommandBuffer commandBuffer,
16773 uint32_t firstViewport,
16774 uint32_t viewportCount,
16775 const VkViewportWScalingNV* pViewportWScalings)
16776{
16777 auto stream = mImpl->stream();
16778 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016779 auto resources = mImpl->resources();
16780 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016781 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016782 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016783 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016784 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016785 VkViewportWScalingNV* local_pViewportWScalings;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016786 local_commandBuffer = commandBuffer;
16787 local_firstViewport = firstViewport;
16788 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016789 local_pViewportWScalings = nullptr;
16790 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016791 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016792 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016793 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16794 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016795 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
16796 }
16797 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016798 countingStream->rewind();
16799 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016800 uint64_t cgen_var_1293;
16801 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1293, 1);
16802 countingStream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016803 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16804 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
16805 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16806 {
16807 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016808 }
16809 }
16810 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16811 countingStream->rewind();
16812 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
16813 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
16814 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016815 uint64_t cgen_var_1294;
16816 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1294, 1);
16817 stream->write((uint64_t*)&cgen_var_1294, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016818 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
16819 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016820 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
16821 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016822 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016823 }
16824}
16825
16826#endif
16827#ifdef VK_EXT_direct_mode_display
16828VkResult VkEncoder::vkReleaseDisplayEXT(
16829 VkPhysicalDevice physicalDevice,
16830 VkDisplayKHR display)
16831{
16832 auto stream = mImpl->stream();
16833 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016834 auto resources = mImpl->resources();
16835 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016836 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016837 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016838 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016839 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016840 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016841 countingStream->rewind();
16842 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016843 uint64_t cgen_var_1295;
16844 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1295, 1);
16845 countingStream->write((uint64_t*)&cgen_var_1295, 1 * 8);
16846 uint64_t cgen_var_1296;
16847 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1296, 1);
16848 countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016849 }
16850 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16851 countingStream->rewind();
16852 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
16853 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
16854 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016855 uint64_t cgen_var_1297;
16856 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1297, 1);
16857 stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
16858 uint64_t cgen_var_1298;
16859 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1298, 1);
16860 stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016861 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
16862 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016863 countingStream->clearPool();
16864 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016865 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016866 return vkReleaseDisplayEXT_VkResult_return;
16867}
16868
16869#endif
16870#ifdef VK_EXT_acquire_xlib_display
16871VkResult VkEncoder::vkAcquireXlibDisplayEXT(
16872 VkPhysicalDevice physicalDevice,
16873 Display* dpy,
16874 VkDisplayKHR display)
16875{
16876 auto stream = mImpl->stream();
16877 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016878 auto resources = mImpl->resources();
16879 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016880 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016881 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016882 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016883 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016884 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016885 countingStream->rewind();
16886 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016887 uint64_t cgen_var_1299;
16888 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1299, 1);
16889 countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016890 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016891 uint64_t cgen_var_1300;
16892 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1300, 1);
16893 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016894 }
16895 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16896 countingStream->rewind();
16897 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
16898 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
16899 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016900 uint64_t cgen_var_1301;
16901 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1301, 1);
16902 stream->write((uint64_t*)&cgen_var_1301, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016903 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016904 uint64_t cgen_var_1302;
16905 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1302, 1);
16906 stream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016907 stream->read((Display*)dpy, sizeof(Display));
16908 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
16909 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016910 countingStream->clearPool();
16911 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016912 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016913 return vkAcquireXlibDisplayEXT_VkResult_return;
16914}
16915
16916VkResult VkEncoder::vkGetRandROutputDisplayEXT(
16917 VkPhysicalDevice physicalDevice,
16918 Display* dpy,
16919 RROutput rrOutput,
16920 VkDisplayKHR* pDisplay)
16921{
16922 auto stream = mImpl->stream();
16923 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016924 auto resources = mImpl->resources();
16925 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016926 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016927 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016928 RROutput local_rrOutput;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016929 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016930 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016931 countingStream->rewind();
16932 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016933 uint64_t cgen_var_1303;
16934 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1303, 1);
16935 countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016936 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016937 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016938 uint64_t cgen_var_1304;
16939 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1304, 1);
16940 countingStream->write((uint64_t*)&cgen_var_1304, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016941 }
16942 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16943 countingStream->rewind();
16944 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
16945 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
16946 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016947 uint64_t cgen_var_1305;
16948 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1305, 1);
16949 stream->write((uint64_t*)&cgen_var_1305, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016950 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016951 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080016952 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080016953 uint64_t cgen_var_1306;
16954 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1306, 1);
16955 stream->write((uint64_t*)&cgen_var_1306, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080016956 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016957 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang808a6312018-11-13 21:06:15 -080016958 uint64_t cgen_var_1307;
16959 stream->read((uint64_t*)&cgen_var_1307, 8);
16960 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1307, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016961 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
16962 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016963 countingStream->clearPool();
16964 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016965 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016966 return vkGetRandROutputDisplayEXT_VkResult_return;
16967}
16968
16969#endif
16970#ifdef VK_EXT_display_surface_counter
16971VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
16972 VkPhysicalDevice physicalDevice,
16973 VkSurfaceKHR surface,
16974 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
16975{
16976 auto stream = mImpl->stream();
16977 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016978 auto resources = mImpl->resources();
16979 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016980 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016981 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016982 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016983 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016984 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016985 countingStream->rewind();
16986 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080016987 uint64_t cgen_var_1308;
16988 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1308, 1);
16989 countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
16990 uint64_t cgen_var_1309;
16991 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1309, 1);
16992 countingStream->write((uint64_t*)&cgen_var_1309, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016993 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
16994 }
16995 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16996 countingStream->rewind();
16997 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
16998 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
16999 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017000 uint64_t cgen_var_1310;
17001 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1310, 1);
17002 stream->write((uint64_t*)&cgen_var_1310, 1 * 8);
17003 uint64_t cgen_var_1311;
17004 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1311, 1);
17005 stream->write((uint64_t*)&cgen_var_1311, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017006 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
17007 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
17008 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
17009 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017010 countingStream->clearPool();
17011 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017012 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017013 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
17014}
17015
17016#endif
17017#ifdef VK_EXT_display_control
17018VkResult VkEncoder::vkDisplayPowerControlEXT(
17019 VkDevice device,
17020 VkDisplayKHR display,
17021 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
17022{
17023 auto stream = mImpl->stream();
17024 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017025 auto resources = mImpl->resources();
17026 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017027 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017028 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017029 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017030 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017031 local_device = device;
17032 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017033 local_pDisplayPowerInfo = nullptr;
17034 if (pDisplayPowerInfo)
17035 {
17036 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
17037 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
17038 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017039 countingStream->rewind();
17040 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017041 uint64_t cgen_var_1312;
17042 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1312, 1);
17043 countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8);
17044 uint64_t cgen_var_1313;
17045 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1313, 1);
17046 countingStream->write((uint64_t*)&cgen_var_1313, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017047 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017048 }
17049 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17050 countingStream->rewind();
17051 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
17052 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
17053 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017054 uint64_t cgen_var_1314;
17055 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1314, 1);
17056 stream->write((uint64_t*)&cgen_var_1314, 1 * 8);
17057 uint64_t cgen_var_1315;
17058 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1315, 1);
17059 stream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017060 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017061 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
17062 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017063 countingStream->clearPool();
17064 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017065 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017066 return vkDisplayPowerControlEXT_VkResult_return;
17067}
17068
17069VkResult VkEncoder::vkRegisterDeviceEventEXT(
17070 VkDevice device,
17071 const VkDeviceEventInfoEXT* pDeviceEventInfo,
17072 const VkAllocationCallbacks* pAllocator,
17073 VkFence* pFence)
17074{
17075 auto stream = mImpl->stream();
17076 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017077 auto resources = mImpl->resources();
17078 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017079 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017080 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017081 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017082 VkAllocationCallbacks* local_pAllocator;
17083 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017084 local_pDeviceEventInfo = nullptr;
17085 if (pDeviceEventInfo)
17086 {
17087 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
17088 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
17089 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017090 local_pAllocator = nullptr;
17091 if (pAllocator)
17092 {
17093 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17094 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17095 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017096 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017097 countingStream->rewind();
17098 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017099 uint64_t cgen_var_1316;
17100 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1316, 1);
17101 countingStream->write((uint64_t*)&cgen_var_1316, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017102 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017103 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017104 uint64_t cgen_var_1317 = (uint64_t)(uintptr_t)local_pAllocator;
17105 countingStream->putBe64(cgen_var_1317);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017106 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017107 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017108 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017109 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017110 uint64_t cgen_var_1318;
17111 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1318, 1);
17112 countingStream->write((uint64_t*)&cgen_var_1318, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017113 }
17114 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17115 countingStream->rewind();
17116 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
17117 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
17118 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017119 uint64_t cgen_var_1319;
17120 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1319, 1);
17121 stream->write((uint64_t*)&cgen_var_1319, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017122 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017123 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017124 uint64_t cgen_var_1320 = (uint64_t)(uintptr_t)local_pAllocator;
17125 stream->putBe64(cgen_var_1320);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017126 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017127 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017128 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017129 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017130 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017131 uint64_t cgen_var_1321;
17132 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1321, 1);
17133 stream->write((uint64_t*)&cgen_var_1321, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017134 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017135 uint64_t cgen_var_1322;
17136 stream->read((uint64_t*)&cgen_var_1322, 8);
17137 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1322, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017138 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
17139 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017140 countingStream->clearPool();
17141 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017142 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017143 return vkRegisterDeviceEventEXT_VkResult_return;
17144}
17145
17146VkResult VkEncoder::vkRegisterDisplayEventEXT(
17147 VkDevice device,
17148 VkDisplayKHR display,
17149 const VkDisplayEventInfoEXT* pDisplayEventInfo,
17150 const VkAllocationCallbacks* pAllocator,
17151 VkFence* pFence)
17152{
17153 auto stream = mImpl->stream();
17154 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017155 auto resources = mImpl->resources();
17156 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017157 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017158 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017159 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017160 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017161 VkAllocationCallbacks* local_pAllocator;
17162 local_device = device;
17163 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017164 local_pDisplayEventInfo = nullptr;
17165 if (pDisplayEventInfo)
17166 {
17167 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
17168 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
17169 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017170 local_pAllocator = nullptr;
17171 if (pAllocator)
17172 {
17173 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17174 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17175 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017176 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017177 countingStream->rewind();
17178 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017179 uint64_t cgen_var_1323;
17180 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1323, 1);
17181 countingStream->write((uint64_t*)&cgen_var_1323, 1 * 8);
17182 uint64_t cgen_var_1324;
17183 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1324, 1);
17184 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017185 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017186 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017187 uint64_t cgen_var_1325 = (uint64_t)(uintptr_t)local_pAllocator;
17188 countingStream->putBe64(cgen_var_1325);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017189 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017190 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017191 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017192 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017193 uint64_t cgen_var_1326;
17194 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1326, 1);
17195 countingStream->write((uint64_t*)&cgen_var_1326, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017196 }
17197 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17198 countingStream->rewind();
17199 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
17200 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
17201 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017202 uint64_t cgen_var_1327;
17203 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1327, 1);
17204 stream->write((uint64_t*)&cgen_var_1327, 1 * 8);
17205 uint64_t cgen_var_1328;
17206 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1328, 1);
17207 stream->write((uint64_t*)&cgen_var_1328, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017208 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017209 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017210 uint64_t cgen_var_1329 = (uint64_t)(uintptr_t)local_pAllocator;
17211 stream->putBe64(cgen_var_1329);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017212 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017213 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017214 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017215 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017216 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017217 uint64_t cgen_var_1330;
17218 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1330, 1);
17219 stream->write((uint64_t*)&cgen_var_1330, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017220 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017221 uint64_t cgen_var_1331;
17222 stream->read((uint64_t*)&cgen_var_1331, 8);
17223 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1331, (VkFence*)pFence, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017224 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
17225 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017226 countingStream->clearPool();
17227 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017228 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017229 return vkRegisterDisplayEventEXT_VkResult_return;
17230}
17231
17232VkResult VkEncoder::vkGetSwapchainCounterEXT(
17233 VkDevice device,
17234 VkSwapchainKHR swapchain,
17235 VkSurfaceCounterFlagBitsEXT counter,
17236 uint64_t* pCounterValue)
17237{
17238 auto stream = mImpl->stream();
17239 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017240 auto resources = mImpl->resources();
17241 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017242 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017243 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017244 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017245 VkSurfaceCounterFlagBitsEXT local_counter;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017246 local_device = device;
17247 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017248 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017249 countingStream->rewind();
17250 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017251 uint64_t cgen_var_1332;
17252 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1332, 1);
17253 countingStream->write((uint64_t*)&cgen_var_1332, 1 * 8);
17254 uint64_t cgen_var_1333;
17255 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1333, 1);
17256 countingStream->write((uint64_t*)&cgen_var_1333, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017257 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017258 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17259 }
17260 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17261 countingStream->rewind();
17262 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
17263 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
17264 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017265 uint64_t cgen_var_1334;
17266 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1334, 1);
17267 stream->write((uint64_t*)&cgen_var_1334, 1 * 8);
17268 uint64_t cgen_var_1335;
17269 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1335, 1);
17270 stream->write((uint64_t*)&cgen_var_1335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017271 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017272 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
17273 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
17274 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
17275 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017276 countingStream->clearPool();
17277 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017278 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017279 return vkGetSwapchainCounterEXT_VkResult_return;
17280}
17281
17282#endif
17283#ifdef VK_GOOGLE_display_timing
17284VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
17285 VkDevice device,
17286 VkSwapchainKHR swapchain,
17287 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
17288{
17289 auto stream = mImpl->stream();
17290 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017291 auto resources = mImpl->resources();
17292 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017293 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017294 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017295 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017296 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017297 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017298 countingStream->rewind();
17299 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017300 uint64_t cgen_var_1336;
17301 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1336, 1);
17302 countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
17303 uint64_t cgen_var_1337;
17304 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1337, 1);
17305 countingStream->write((uint64_t*)&cgen_var_1337, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017306 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17307 }
17308 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17309 countingStream->rewind();
17310 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
17311 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
17312 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017313 uint64_t cgen_var_1338;
17314 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1338, 1);
17315 stream->write((uint64_t*)&cgen_var_1338, 1 * 8);
17316 uint64_t cgen_var_1339;
17317 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1339, 1);
17318 stream->write((uint64_t*)&cgen_var_1339, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017319 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17320 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
17321 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
17322 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017323 countingStream->clearPool();
17324 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017325 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017326 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
17327}
17328
17329VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
17330 VkDevice device,
17331 VkSwapchainKHR swapchain,
17332 uint32_t* pPresentationTimingCount,
17333 VkPastPresentationTimingGOOGLE* pPresentationTimings)
17334{
17335 auto stream = mImpl->stream();
17336 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017337 auto resources = mImpl->resources();
17338 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017339 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017340 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017341 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017342 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017343 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017344 countingStream->rewind();
17345 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017346 uint64_t cgen_var_1340;
17347 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1340, 1);
17348 countingStream->write((uint64_t*)&cgen_var_1340, 1 * 8);
17349 uint64_t cgen_var_1341;
17350 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1341, 1);
17351 countingStream->write((uint64_t*)&cgen_var_1341, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017352 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017353 uint64_t cgen_var_1342 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17354 countingStream->putBe64(cgen_var_1342);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017355 if (pPresentationTimingCount)
17356 {
17357 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17358 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017359 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017360 uint64_t cgen_var_1343 = (uint64_t)(uintptr_t)pPresentationTimings;
17361 countingStream->putBe64(cgen_var_1343);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017362 if (pPresentationTimings)
17363 {
17364 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17365 {
17366 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17367 }
17368 }
17369 }
17370 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17371 countingStream->rewind();
17372 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
17373 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
17374 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017375 uint64_t cgen_var_1344;
17376 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1344, 1);
17377 stream->write((uint64_t*)&cgen_var_1344, 1 * 8);
17378 uint64_t cgen_var_1345;
17379 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1345, 1);
17380 stream->write((uint64_t*)&cgen_var_1345, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017381 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017382 uint64_t cgen_var_1346 = (uint64_t)(uintptr_t)pPresentationTimingCount;
17383 stream->putBe64(cgen_var_1346);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017384 if (pPresentationTimingCount)
17385 {
17386 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17387 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017388 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017389 uint64_t cgen_var_1347 = (uint64_t)(uintptr_t)pPresentationTimings;
17390 stream->putBe64(cgen_var_1347);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017391 if (pPresentationTimings)
17392 {
17393 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17394 {
17395 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17396 }
17397 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017398 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017399 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017400 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017401 if (pPresentationTimingCount)
17402 {
17403 if (!(check_pPresentationTimingCount))
17404 {
17405 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
17406 }
17407 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
17408 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017409 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017410 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017411 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017412 if (pPresentationTimings)
17413 {
17414 if (!(check_pPresentationTimings))
17415 {
17416 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
17417 }
17418 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
17419 {
17420 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
17421 }
17422 }
17423 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
17424 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017425 countingStream->clearPool();
17426 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017427 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017428 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
17429}
17430
17431#endif
17432#ifdef VK_NV_sample_mask_override_coverage
17433#endif
17434#ifdef VK_NV_geometry_shader_passthrough
17435#endif
17436#ifdef VK_NV_viewport_array2
17437#endif
17438#ifdef VK_NVX_multiview_per_view_attributes
17439#endif
17440#ifdef VK_NV_viewport_swizzle
17441#endif
17442#ifdef VK_EXT_discard_rectangles
17443void VkEncoder::vkCmdSetDiscardRectangleEXT(
17444 VkCommandBuffer commandBuffer,
17445 uint32_t firstDiscardRectangle,
17446 uint32_t discardRectangleCount,
17447 const VkRect2D* pDiscardRectangles)
17448{
17449 auto stream = mImpl->stream();
17450 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017451 auto resources = mImpl->resources();
17452 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017453 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017454 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017455 uint32_t local_firstDiscardRectangle;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017456 uint32_t local_discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017457 VkRect2D* local_pDiscardRectangles;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017458 local_commandBuffer = commandBuffer;
17459 local_firstDiscardRectangle = firstDiscardRectangle;
17460 local_discardRectangleCount = discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017461 local_pDiscardRectangles = nullptr;
17462 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017463 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017464 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017465 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17466 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017467 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
17468 }
17469 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017470 countingStream->rewind();
17471 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017472 uint64_t cgen_var_1350;
17473 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1350, 1);
17474 countingStream->write((uint64_t*)&cgen_var_1350, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017475 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17476 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
17477 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17478 {
17479 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017480 }
17481 }
17482 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17483 countingStream->rewind();
17484 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
17485 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
17486 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017487 uint64_t cgen_var_1351;
17488 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1351, 1);
17489 stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017490 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
17491 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017492 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
17493 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017494 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017495 }
17496}
17497
17498#endif
17499#ifdef VK_EXT_conservative_rasterization
17500#endif
17501#ifdef VK_EXT_swapchain_colorspace
17502#endif
17503#ifdef VK_EXT_hdr_metadata
17504void VkEncoder::vkSetHdrMetadataEXT(
17505 VkDevice device,
17506 uint32_t swapchainCount,
17507 const VkSwapchainKHR* pSwapchains,
17508 const VkHdrMetadataEXT* pMetadata)
17509{
17510 auto stream = mImpl->stream();
17511 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017512 auto resources = mImpl->resources();
17513 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017514 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017515 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017516 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017517 VkSwapchainKHR* local_pSwapchains;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017518 VkHdrMetadataEXT* local_pMetadata;
17519 local_device = device;
17520 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017521 local_pSwapchains = nullptr;
17522 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017523 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017524 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
17525 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017526 local_pMetadata = nullptr;
17527 if (pMetadata)
17528 {
17529 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017530 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17531 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017532 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
17533 }
17534 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017535 countingStream->rewind();
17536 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017537 uint64_t cgen_var_1352;
17538 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1);
17539 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017540 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017541 if (((swapchainCount)))
17542 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017543 uint64_t* cgen_var_1353;
17544 countingStream->alloc((void**)&cgen_var_1353, ((swapchainCount)) * 8);
17545 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1353, ((swapchainCount)));
17546 countingStream->write((uint64_t*)cgen_var_1353, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017547 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017548 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17549 {
17550 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017551 }
17552 }
17553 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17554 countingStream->rewind();
17555 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
17556 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
17557 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017558 uint64_t cgen_var_1354;
17559 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1354, 1);
17560 stream->write((uint64_t*)&cgen_var_1354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017561 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017562 if (((swapchainCount)))
17563 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017564 uint64_t* cgen_var_1355;
17565 stream->alloc((void**)&cgen_var_1355, ((swapchainCount)) * 8);
17566 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1355, ((swapchainCount)));
17567 stream->write((uint64_t*)cgen_var_1355, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080017568 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017569 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
17570 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017571 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017572 }
17573}
17574
17575#endif
17576#ifdef VK_MVK_ios_surface
17577VkResult VkEncoder::vkCreateIOSSurfaceMVK(
17578 VkInstance instance,
17579 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
17580 const VkAllocationCallbacks* pAllocator,
17581 VkSurfaceKHR* pSurface)
17582{
17583 auto stream = mImpl->stream();
17584 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017585 auto resources = mImpl->resources();
17586 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017587 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017588 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017589 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017590 VkAllocationCallbacks* local_pAllocator;
17591 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017592 local_pCreateInfo = nullptr;
17593 if (pCreateInfo)
17594 {
17595 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
17596 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17597 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017598 local_pAllocator = nullptr;
17599 if (pAllocator)
17600 {
17601 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17602 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17603 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017604 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017605 countingStream->rewind();
17606 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017607 uint64_t cgen_var_1356;
17608 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1356, 1);
17609 countingStream->write((uint64_t*)&cgen_var_1356, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017610 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017611 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017612 uint64_t cgen_var_1357 = (uint64_t)(uintptr_t)local_pAllocator;
17613 countingStream->putBe64(cgen_var_1357);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017614 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017615 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017616 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017617 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017618 uint64_t cgen_var_1358;
17619 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1358, 1);
17620 countingStream->write((uint64_t*)&cgen_var_1358, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017621 }
17622 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17623 countingStream->rewind();
17624 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
17625 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
17626 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017627 uint64_t cgen_var_1359;
17628 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1359, 1);
17629 stream->write((uint64_t*)&cgen_var_1359, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017630 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017631 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017632 uint64_t cgen_var_1360 = (uint64_t)(uintptr_t)local_pAllocator;
17633 stream->putBe64(cgen_var_1360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017634 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017635 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017636 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017637 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017638 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017639 uint64_t cgen_var_1361;
17640 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1361, 1);
17641 stream->write((uint64_t*)&cgen_var_1361, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017642 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017643 uint64_t cgen_var_1362;
17644 stream->read((uint64_t*)&cgen_var_1362, 8);
17645 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1362, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017646 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
17647 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017648 countingStream->clearPool();
17649 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017650 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017651 return vkCreateIOSSurfaceMVK_VkResult_return;
17652}
17653
17654#endif
17655#ifdef VK_MVK_macos_surface
17656VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
17657 VkInstance instance,
17658 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
17659 const VkAllocationCallbacks* pAllocator,
17660 VkSurfaceKHR* pSurface)
17661{
17662 auto stream = mImpl->stream();
17663 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017664 auto resources = mImpl->resources();
17665 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017666 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017667 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017668 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017669 VkAllocationCallbacks* local_pAllocator;
17670 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017671 local_pCreateInfo = nullptr;
17672 if (pCreateInfo)
17673 {
17674 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
17675 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
17676 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017677 local_pAllocator = nullptr;
17678 if (pAllocator)
17679 {
17680 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17681 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17682 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017683 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017684 countingStream->rewind();
17685 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017686 uint64_t cgen_var_1363;
17687 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1363, 1);
17688 countingStream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017689 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017690 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017691 uint64_t cgen_var_1364 = (uint64_t)(uintptr_t)local_pAllocator;
17692 countingStream->putBe64(cgen_var_1364);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017693 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017694 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017695 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017696 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017697 uint64_t cgen_var_1365;
17698 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1365, 1);
17699 countingStream->write((uint64_t*)&cgen_var_1365, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017700 }
17701 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17702 countingStream->rewind();
17703 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
17704 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
17705 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017706 uint64_t cgen_var_1366;
17707 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1366, 1);
17708 stream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017709 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017710 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080017711 uint64_t cgen_var_1367 = (uint64_t)(uintptr_t)local_pAllocator;
17712 stream->putBe64(cgen_var_1367);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017713 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017714 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017715 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017716 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017717 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017718 uint64_t cgen_var_1368;
17719 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1368, 1);
17720 stream->write((uint64_t*)&cgen_var_1368, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017721 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080017722 uint64_t cgen_var_1369;
17723 stream->read((uint64_t*)&cgen_var_1369, 8);
17724 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1369, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017725 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
17726 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017727 countingStream->clearPool();
17728 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017729 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017730 return vkCreateMacOSSurfaceMVK_VkResult_return;
17731}
17732
17733#endif
17734#ifdef VK_EXT_external_memory_dma_buf
17735#endif
17736#ifdef VK_EXT_queue_family_foreign
17737#endif
17738#ifdef VK_EXT_debug_utils
17739VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
17740 VkDevice device,
17741 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
17742{
17743 auto stream = mImpl->stream();
17744 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017745 auto resources = mImpl->resources();
17746 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017747 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017748 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017749 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017750 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017751 local_pNameInfo = nullptr;
17752 if (pNameInfo)
17753 {
17754 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
17755 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
17756 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017757 countingStream->rewind();
17758 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017759 uint64_t cgen_var_1370;
17760 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1370, 1);
17761 countingStream->write((uint64_t*)&cgen_var_1370, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017762 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017763 }
17764 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17765 countingStream->rewind();
17766 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
17767 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
17768 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017769 uint64_t cgen_var_1371;
17770 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1371, 1);
17771 stream->write((uint64_t*)&cgen_var_1371, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017772 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017773 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
17774 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017775 countingStream->clearPool();
17776 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017777 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017778 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
17779}
17780
17781VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
17782 VkDevice device,
17783 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
17784{
17785 auto stream = mImpl->stream();
17786 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017787 auto resources = mImpl->resources();
17788 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017789 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017790 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017791 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017792 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017793 local_pTagInfo = nullptr;
17794 if (pTagInfo)
17795 {
17796 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
17797 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
17798 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017799 countingStream->rewind();
17800 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017801 uint64_t cgen_var_1372;
17802 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1372, 1);
17803 countingStream->write((uint64_t*)&cgen_var_1372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017804 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017805 }
17806 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17807 countingStream->rewind();
17808 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
17809 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
17810 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017811 uint64_t cgen_var_1373;
17812 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1373, 1);
17813 stream->write((uint64_t*)&cgen_var_1373, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017814 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017815 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
17816 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017817 countingStream->clearPool();
17818 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017819 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017820 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
17821}
17822
17823void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
17824 VkQueue queue,
17825 const VkDebugUtilsLabelEXT* pLabelInfo)
17826{
17827 auto stream = mImpl->stream();
17828 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017829 auto resources = mImpl->resources();
17830 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017831 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017832 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017833 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017834 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017835 local_pLabelInfo = nullptr;
17836 if (pLabelInfo)
17837 {
17838 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17839 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17840 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017841 countingStream->rewind();
17842 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017843 uint64_t cgen_var_1374;
17844 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1374, 1);
17845 countingStream->write((uint64_t*)&cgen_var_1374, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017846 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017847 }
17848 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17849 countingStream->rewind();
17850 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
17851 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17852 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017853 uint64_t cgen_var_1375;
17854 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1375, 1);
17855 stream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017856 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017857}
17858
17859void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
17860 VkQueue queue)
17861{
17862 auto stream = mImpl->stream();
17863 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017864 auto resources = mImpl->resources();
17865 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017866 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017867 VkQueue local_queue;
17868 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017869 countingStream->rewind();
17870 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017871 uint64_t cgen_var_1376;
17872 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1376, 1);
17873 countingStream->write((uint64_t*)&cgen_var_1376, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017874 }
17875 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17876 countingStream->rewind();
17877 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
17878 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
17879 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017880 uint64_t cgen_var_1377;
17881 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1377, 1);
17882 stream->write((uint64_t*)&cgen_var_1377, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017883}
17884
17885void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
17886 VkQueue queue,
17887 const VkDebugUtilsLabelEXT* pLabelInfo)
17888{
17889 auto stream = mImpl->stream();
17890 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017891 auto resources = mImpl->resources();
17892 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017893 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017894 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017895 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017896 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017897 local_pLabelInfo = nullptr;
17898 if (pLabelInfo)
17899 {
17900 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17901 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17902 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017903 countingStream->rewind();
17904 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017905 uint64_t cgen_var_1378;
17906 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1378, 1);
17907 countingStream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017908 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017909 }
17910 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17911 countingStream->rewind();
17912 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
17913 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
17914 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017915 uint64_t cgen_var_1379;
17916 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1379, 1);
17917 stream->write((uint64_t*)&cgen_var_1379, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017918 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017919}
17920
17921void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
17922 VkCommandBuffer commandBuffer,
17923 const VkDebugUtilsLabelEXT* pLabelInfo)
17924{
17925 auto stream = mImpl->stream();
17926 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017927 auto resources = mImpl->resources();
17928 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017929 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017930 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017931 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017932 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017933 local_pLabelInfo = nullptr;
17934 if (pLabelInfo)
17935 {
17936 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17937 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17938 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017939 countingStream->rewind();
17940 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017941 uint64_t cgen_var_1380;
17942 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1380, 1);
17943 countingStream->write((uint64_t*)&cgen_var_1380, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017944 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017945 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017946 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17947 countingStream->rewind();
17948 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
17949 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
17950 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017951 uint64_t cgen_var_1381;
17952 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1381, 1);
17953 stream->write((uint64_t*)&cgen_var_1381, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017954 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
17955}
17956
17957void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
17958 VkCommandBuffer commandBuffer)
17959{
17960 auto stream = mImpl->stream();
17961 auto countingStream = mImpl->countingStream();
17962 auto resources = mImpl->resources();
17963 auto pool = mImpl->pool();
17964 stream->setHandleMapping(resources->unwrapMapping());
17965 VkCommandBuffer local_commandBuffer;
17966 local_commandBuffer = commandBuffer;
17967 countingStream->rewind();
17968 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080017969 uint64_t cgen_var_1382;
17970 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1382, 1);
17971 countingStream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017972 }
17973 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17974 countingStream->rewind();
17975 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
17976 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
17977 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017978 uint64_t cgen_var_1383;
17979 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1383, 1);
17980 stream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017981}
17982
17983void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
17984 VkCommandBuffer commandBuffer,
17985 const VkDebugUtilsLabelEXT* pLabelInfo)
17986{
17987 auto stream = mImpl->stream();
17988 auto countingStream = mImpl->countingStream();
17989 auto resources = mImpl->resources();
17990 auto pool = mImpl->pool();
17991 stream->setHandleMapping(resources->unwrapMapping());
17992 VkCommandBuffer local_commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017993 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017994 local_commandBuffer = commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017995 local_pLabelInfo = nullptr;
17996 if (pLabelInfo)
17997 {
17998 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
17999 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18000 }
18001 countingStream->rewind();
18002 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018003 uint64_t cgen_var_1384;
18004 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1384, 1);
18005 countingStream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080018006 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
18007 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018008 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18009 countingStream->rewind();
18010 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
18011 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
18012 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018013 uint64_t cgen_var_1385;
18014 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1385, 1);
18015 stream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018016 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018017}
18018
18019VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
18020 VkInstance instance,
18021 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
18022 const VkAllocationCallbacks* pAllocator,
18023 VkDebugUtilsMessengerEXT* pMessenger)
18024{
18025 auto stream = mImpl->stream();
18026 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018027 auto resources = mImpl->resources();
18028 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018029 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018030 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018031 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018032 VkAllocationCallbacks* local_pAllocator;
18033 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018034 local_pCreateInfo = nullptr;
18035 if (pCreateInfo)
18036 {
18037 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
18038 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
18039 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018040 local_pAllocator = nullptr;
18041 if (pAllocator)
18042 {
18043 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18044 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18045 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018046 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018047 countingStream->rewind();
18048 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018049 uint64_t cgen_var_1386;
18050 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1386, 1);
18051 countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018052 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018053 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018054 uint64_t cgen_var_1387 = (uint64_t)(uintptr_t)local_pAllocator;
18055 countingStream->putBe64(cgen_var_1387);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018056 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018057 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018058 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018059 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018060 uint64_t cgen_var_1388;
18061 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1388, 1);
18062 countingStream->write((uint64_t*)&cgen_var_1388, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018063 }
18064 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18065 countingStream->rewind();
18066 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
18067 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
18068 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018069 uint64_t cgen_var_1389;
18070 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1389, 1);
18071 stream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018072 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018073 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018074 uint64_t cgen_var_1390 = (uint64_t)(uintptr_t)local_pAllocator;
18075 stream->putBe64(cgen_var_1390);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018076 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018077 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018078 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018079 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018080 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018081 uint64_t cgen_var_1391;
18082 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1391, 1);
18083 stream->write((uint64_t*)&cgen_var_1391, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018084 stream->setHandleMapping(resources->unwrapMapping());
18085 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018086 uint64_t cgen_var_1392;
18087 stream->read((uint64_t*)&cgen_var_1392, 8);
18088 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1392, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018089 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018090 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
18091 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018092 countingStream->clearPool();
18093 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018094 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018095 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
18096}
18097
18098void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
18099 VkInstance instance,
18100 VkDebugUtilsMessengerEXT messenger,
18101 const VkAllocationCallbacks* pAllocator)
18102{
18103 auto stream = mImpl->stream();
18104 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018105 auto resources = mImpl->resources();
18106 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018107 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018108 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018109 VkDebugUtilsMessengerEXT local_messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018110 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018111 local_instance = instance;
18112 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018113 local_pAllocator = nullptr;
18114 if (pAllocator)
18115 {
18116 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18117 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18118 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018119 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018120 countingStream->rewind();
18121 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018122 uint64_t cgen_var_1393;
18123 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1393, 1);
18124 countingStream->write((uint64_t*)&cgen_var_1393, 1 * 8);
18125 uint64_t cgen_var_1394;
18126 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1394, 1);
18127 countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018128 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018129 uint64_t cgen_var_1395 = (uint64_t)(uintptr_t)local_pAllocator;
18130 countingStream->putBe64(cgen_var_1395);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018131 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018132 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018133 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018134 }
18135 }
18136 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18137 countingStream->rewind();
18138 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
18139 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
18140 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018141 uint64_t cgen_var_1396;
18142 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1396, 1);
18143 stream->write((uint64_t*)&cgen_var_1396, 1 * 8);
18144 uint64_t cgen_var_1397;
18145 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1397, 1);
18146 stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018147 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018148 uint64_t cgen_var_1398 = (uint64_t)(uintptr_t)local_pAllocator;
18149 stream->putBe64(cgen_var_1398);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018150 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018151 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018152 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018153 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018154 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018155}
18156
18157void VkEncoder::vkSubmitDebugUtilsMessageEXT(
18158 VkInstance instance,
18159 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
18160 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
18161 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
18162{
18163 auto stream = mImpl->stream();
18164 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018165 auto resources = mImpl->resources();
18166 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018167 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018168 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018169 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018170 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018171 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018172 local_instance = instance;
18173 local_messageSeverity = messageSeverity;
18174 local_messageTypes = messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018175 local_pCallbackData = nullptr;
18176 if (pCallbackData)
18177 {
18178 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
18179 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
18180 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018181 countingStream->rewind();
18182 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018183 uint64_t cgen_var_1399;
18184 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1399, 1);
18185 countingStream->write((uint64_t*)&cgen_var_1399, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018186 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
18187 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
18188 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018189 }
18190 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18191 countingStream->rewind();
18192 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
18193 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
18194 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018195 uint64_t cgen_var_1400;
18196 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1400, 1);
18197 stream->write((uint64_t*)&cgen_var_1400, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018198 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
18199 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
18200 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018201}
18202
18203#endif
18204#ifdef VK_ANDROID_external_memory_android_hardware_buffer
18205VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
18206 VkDevice device,
18207 const AHardwareBuffer* buffer,
18208 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
18209{
18210 auto stream = mImpl->stream();
18211 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018212 auto resources = mImpl->resources();
18213 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018214 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018215 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018216 AHardwareBuffer* local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018217 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018218 local_buffer = nullptr;
18219 if (buffer)
18220 {
18221 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
18222 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018223 countingStream->rewind();
18224 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018225 uint64_t cgen_var_1401;
18226 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1401, 1);
18227 countingStream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018228 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018229 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18230 }
18231 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18232 countingStream->rewind();
18233 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
18234 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
18235 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018236 uint64_t cgen_var_1402;
18237 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1402, 1);
18238 stream->write((uint64_t*)&cgen_var_1402, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018239 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018240 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18241 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
18242 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
18243 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018244 countingStream->clearPool();
18245 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018246 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018247 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
18248}
18249
18250VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
18251 VkDevice device,
18252 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
18253 AHardwareBuffer** pBuffer)
18254{
18255 auto stream = mImpl->stream();
18256 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018257 auto resources = mImpl->resources();
18258 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018259 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018260 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018261 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018262 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018263 local_pInfo = nullptr;
18264 if (pInfo)
18265 {
18266 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
18267 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
18268 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018269 countingStream->rewind();
18270 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018271 uint64_t cgen_var_1403;
18272 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1403, 1);
18273 countingStream->write((uint64_t*)&cgen_var_1403, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018274 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018275 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18276 }
18277 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18278 countingStream->rewind();
18279 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
18280 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
18281 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018282 uint64_t cgen_var_1404;
18283 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1404, 1);
18284 stream->write((uint64_t*)&cgen_var_1404, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018285 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018286 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18287 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
18288 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
18289 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018290 countingStream->clearPool();
18291 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018292 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018293 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
18294}
18295
18296#endif
18297#ifdef VK_EXT_sampler_filter_minmax
18298#endif
18299#ifdef VK_AMD_gpu_shader_int16
18300#endif
18301#ifdef VK_AMD_mixed_attachment_samples
18302#endif
18303#ifdef VK_AMD_shader_fragment_mask
18304#endif
18305#ifdef VK_EXT_shader_stencil_export
18306#endif
18307#ifdef VK_EXT_sample_locations
18308void VkEncoder::vkCmdSetSampleLocationsEXT(
18309 VkCommandBuffer commandBuffer,
18310 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
18311{
18312 auto stream = mImpl->stream();
18313 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018314 auto resources = mImpl->resources();
18315 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018316 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018317 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018318 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018319 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018320 local_pSampleLocationsInfo = nullptr;
18321 if (pSampleLocationsInfo)
18322 {
18323 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
18324 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
18325 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018326 countingStream->rewind();
18327 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018328 uint64_t cgen_var_1405;
18329 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1405, 1);
18330 countingStream->write((uint64_t*)&cgen_var_1405, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018331 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018332 }
18333 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18334 countingStream->rewind();
18335 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
18336 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
18337 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018338 uint64_t cgen_var_1406;
18339 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1406, 1);
18340 stream->write((uint64_t*)&cgen_var_1406, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018341 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018342}
18343
18344void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
18345 VkPhysicalDevice physicalDevice,
18346 VkSampleCountFlagBits samples,
18347 VkMultisamplePropertiesEXT* pMultisampleProperties)
18348{
18349 auto stream = mImpl->stream();
18350 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018351 auto resources = mImpl->resources();
18352 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018353 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018354 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018355 VkSampleCountFlagBits local_samples;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018356 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018357 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018358 countingStream->rewind();
18359 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018360 uint64_t cgen_var_1407;
18361 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1407, 1);
18362 countingStream->write((uint64_t*)&cgen_var_1407, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018363 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018364 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18365 }
18366 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18367 countingStream->rewind();
18368 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
18369 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
18370 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018371 uint64_t cgen_var_1408;
18372 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1408, 1);
18373 stream->write((uint64_t*)&cgen_var_1408, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018374 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018375 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18376 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
18377}
18378
18379#endif
18380#ifdef VK_EXT_blend_operation_advanced
18381#endif
18382#ifdef VK_NV_fragment_coverage_to_color
18383#endif
18384#ifdef VK_NV_framebuffer_mixed_samples
18385#endif
18386#ifdef VK_NV_fill_rectangle
18387#endif
18388#ifdef VK_EXT_post_depth_coverage
18389#endif
18390#ifdef VK_EXT_validation_cache
18391VkResult VkEncoder::vkCreateValidationCacheEXT(
18392 VkDevice device,
18393 const VkValidationCacheCreateInfoEXT* pCreateInfo,
18394 const VkAllocationCallbacks* pAllocator,
18395 VkValidationCacheEXT* pValidationCache)
18396{
18397 auto stream = mImpl->stream();
18398 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018399 auto resources = mImpl->resources();
18400 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018401 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018402 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018403 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018404 VkAllocationCallbacks* local_pAllocator;
18405 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018406 local_pCreateInfo = nullptr;
18407 if (pCreateInfo)
18408 {
18409 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
18410 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
18411 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018412 local_pAllocator = nullptr;
18413 if (pAllocator)
18414 {
18415 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18416 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18417 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018418 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018419 countingStream->rewind();
18420 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018421 uint64_t cgen_var_1409;
18422 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1409, 1);
18423 countingStream->write((uint64_t*)&cgen_var_1409, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018424 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018425 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018426 uint64_t cgen_var_1410 = (uint64_t)(uintptr_t)local_pAllocator;
18427 countingStream->putBe64(cgen_var_1410);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018428 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018429 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018430 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018431 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080018432 uint64_t cgen_var_1411;
18433 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1411, 1);
18434 countingStream->write((uint64_t*)&cgen_var_1411, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018435 }
18436 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18437 countingStream->rewind();
18438 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
18439 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
18440 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018441 uint64_t cgen_var_1412;
18442 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1412, 1);
18443 stream->write((uint64_t*)&cgen_var_1412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018444 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018445 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018446 uint64_t cgen_var_1413 = (uint64_t)(uintptr_t)local_pAllocator;
18447 stream->putBe64(cgen_var_1413);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018448 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018449 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018450 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018451 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018452 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang808a6312018-11-13 21:06:15 -080018453 uint64_t cgen_var_1414;
18454 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1414, 1);
18455 stream->write((uint64_t*)&cgen_var_1414, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018456 stream->setHandleMapping(resources->unwrapMapping());
18457 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang808a6312018-11-13 21:06:15 -080018458 uint64_t cgen_var_1415;
18459 stream->read((uint64_t*)&cgen_var_1415, 8);
18460 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1415, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018461 stream->unsetHandleMapping();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018462 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
18463 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018464 countingStream->clearPool();
18465 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018466 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018467 return vkCreateValidationCacheEXT_VkResult_return;
18468}
18469
18470void VkEncoder::vkDestroyValidationCacheEXT(
18471 VkDevice device,
18472 VkValidationCacheEXT validationCache,
18473 const VkAllocationCallbacks* pAllocator)
18474{
18475 auto stream = mImpl->stream();
18476 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018477 auto resources = mImpl->resources();
18478 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018479 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018480 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018481 VkValidationCacheEXT local_validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018482 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018483 local_device = device;
18484 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018485 local_pAllocator = nullptr;
18486 if (pAllocator)
18487 {
18488 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18489 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18490 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018491 local_pAllocator = nullptr;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018492 countingStream->rewind();
18493 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018494 uint64_t cgen_var_1416;
18495 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1416, 1);
18496 countingStream->write((uint64_t*)&cgen_var_1416, 1 * 8);
18497 uint64_t cgen_var_1417;
18498 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1417, 1);
18499 countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018500 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018501 uint64_t cgen_var_1418 = (uint64_t)(uintptr_t)local_pAllocator;
18502 countingStream->putBe64(cgen_var_1418);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018503 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018504 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018505 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018506 }
18507 }
18508 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18509 countingStream->rewind();
18510 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
18511 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
18512 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018513 uint64_t cgen_var_1419;
18514 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1419, 1);
18515 stream->write((uint64_t*)&cgen_var_1419, 1 * 8);
18516 uint64_t cgen_var_1420;
18517 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1420, 1);
18518 stream->write((uint64_t*)&cgen_var_1420, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018519 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018520 uint64_t cgen_var_1421 = (uint64_t)(uintptr_t)local_pAllocator;
18521 stream->putBe64(cgen_var_1421);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018522 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018523 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018524 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018525 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018526 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018527}
18528
18529VkResult VkEncoder::vkMergeValidationCachesEXT(
18530 VkDevice device,
18531 VkValidationCacheEXT dstCache,
18532 uint32_t srcCacheCount,
18533 const VkValidationCacheEXT* pSrcCaches)
18534{
18535 auto stream = mImpl->stream();
18536 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018537 auto resources = mImpl->resources();
18538 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018539 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018540 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018541 VkValidationCacheEXT local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018542 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018543 VkValidationCacheEXT* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018544 local_device = device;
18545 local_dstCache = dstCache;
18546 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018547 local_pSrcCaches = nullptr;
18548 if (pSrcCaches)
18549 {
18550 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
18551 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018552 countingStream->rewind();
18553 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018554 uint64_t cgen_var_1422;
18555 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1422, 1);
18556 countingStream->write((uint64_t*)&cgen_var_1422, 1 * 8);
18557 uint64_t cgen_var_1423;
18558 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1423, 1);
18559 countingStream->write((uint64_t*)&cgen_var_1423, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018560 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018561 if (((srcCacheCount)))
18562 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018563 uint64_t* cgen_var_1424;
18564 countingStream->alloc((void**)&cgen_var_1424, ((srcCacheCount)) * 8);
18565 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1424, ((srcCacheCount)));
18566 countingStream->write((uint64_t*)cgen_var_1424, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018567 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018568 }
18569 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18570 countingStream->rewind();
18571 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
18572 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
18573 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018574 uint64_t cgen_var_1425;
18575 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1425, 1);
18576 stream->write((uint64_t*)&cgen_var_1425, 1 * 8);
18577 uint64_t cgen_var_1426;
18578 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1426, 1);
18579 stream->write((uint64_t*)&cgen_var_1426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018580 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018581 if (((srcCacheCount)))
18582 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018583 uint64_t* cgen_var_1427;
18584 stream->alloc((void**)&cgen_var_1427, ((srcCacheCount)) * 8);
18585 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1427, ((srcCacheCount)));
18586 stream->write((uint64_t*)cgen_var_1427, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080018587 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018588 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
18589 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018590 countingStream->clearPool();
18591 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018592 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018593 return vkMergeValidationCachesEXT_VkResult_return;
18594}
18595
18596VkResult VkEncoder::vkGetValidationCacheDataEXT(
18597 VkDevice device,
18598 VkValidationCacheEXT validationCache,
18599 size_t* pDataSize,
18600 void* pData)
18601{
18602 auto stream = mImpl->stream();
18603 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018604 auto resources = mImpl->resources();
18605 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018606 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018607 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018608 VkValidationCacheEXT local_validationCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018609 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018610 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018611 countingStream->rewind();
18612 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018613 uint64_t cgen_var_1428;
18614 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1);
18615 countingStream->write((uint64_t*)&cgen_var_1428, 1 * 8);
18616 uint64_t cgen_var_1429;
18617 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1429, 1);
18618 countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018619 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018620 uint64_t cgen_var_1430 = (uint64_t)(uintptr_t)pDataSize;
18621 countingStream->putBe64(cgen_var_1430);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018622 if (pDataSize)
18623 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018624 uint64_t cgen_var_1431 = (uint64_t)(*pDataSize);
18625 countingStream->putBe64(cgen_var_1431);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018626 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018627 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018628 uint64_t cgen_var_1432 = (uint64_t)(uintptr_t)pData;
18629 countingStream->putBe64(cgen_var_1432);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018630 if (pData)
18631 {
18632 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18633 }
18634 }
18635 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18636 countingStream->rewind();
18637 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
18638 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
18639 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018640 uint64_t cgen_var_1433;
18641 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1433, 1);
18642 stream->write((uint64_t*)&cgen_var_1433, 1 * 8);
18643 uint64_t cgen_var_1434;
18644 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1434, 1);
18645 stream->write((uint64_t*)&cgen_var_1434, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018646 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018647 uint64_t cgen_var_1435 = (uint64_t)(uintptr_t)pDataSize;
18648 stream->putBe64(cgen_var_1435);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018649 if (pDataSize)
18650 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018651 uint64_t cgen_var_1436 = (uint64_t)(*pDataSize);
18652 stream->putBe64(cgen_var_1436);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018653 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018654 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018655 uint64_t cgen_var_1437 = (uint64_t)(uintptr_t)pData;
18656 stream->putBe64(cgen_var_1437);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018657 if (pData)
18658 {
18659 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18660 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018661 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018662 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018663 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018664 if (pDataSize)
18665 {
18666 if (!(check_pDataSize))
18667 {
18668 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
18669 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018670 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018671 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018672 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018673 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018674 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018675 if (pData)
18676 {
18677 if (!(check_pData))
18678 {
18679 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
18680 }
18681 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
18682 }
18683 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
18684 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018685 countingStream->clearPool();
18686 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018687 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018688 return vkGetValidationCacheDataEXT_VkResult_return;
18689}
18690
18691#endif
18692#ifdef VK_EXT_descriptor_indexing
18693#endif
18694#ifdef VK_EXT_shader_viewport_index_layer
18695#endif
18696#ifdef VK_EXT_global_priority
18697#endif
18698#ifdef VK_EXT_external_memory_host
18699VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
18700 VkDevice device,
18701 VkExternalMemoryHandleTypeFlagBits handleType,
18702 const void* pHostPointer,
18703 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
18704{
18705 auto stream = mImpl->stream();
18706 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018707 auto resources = mImpl->resources();
18708 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018709 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018710 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018711 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018712 void* local_pHostPointer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018713 local_device = device;
18714 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018715 local_pHostPointer = nullptr;
18716 if (pHostPointer)
18717 {
18718 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
18719 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018720 countingStream->rewind();
18721 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018722 uint64_t cgen_var_1441;
18723 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1441, 1);
18724 countingStream->write((uint64_t*)&cgen_var_1441, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018725 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018726 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018727 uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)local_pHostPointer;
18728 countingStream->putBe64(cgen_var_1442);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018729 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018730 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018731 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018732 }
18733 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18734 }
18735 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18736 countingStream->rewind();
18737 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
18738 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
18739 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018740 uint64_t cgen_var_1443;
18741 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1443, 1);
18742 stream->write((uint64_t*)&cgen_var_1443, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018743 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018744 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018745 uint64_t cgen_var_1444 = (uint64_t)(uintptr_t)local_pHostPointer;
18746 stream->putBe64(cgen_var_1444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018747 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018748 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018749 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018750 }
18751 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18752 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
18753 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
18754 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018755 countingStream->clearPool();
18756 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018757 pool->freeAll();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018758 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
18759}
18760
18761#endif
18762#ifdef VK_AMD_buffer_marker
18763void VkEncoder::vkCmdWriteBufferMarkerAMD(
18764 VkCommandBuffer commandBuffer,
18765 VkPipelineStageFlagBits pipelineStage,
18766 VkBuffer dstBuffer,
18767 VkDeviceSize dstOffset,
18768 uint32_t marker)
18769{
18770 auto stream = mImpl->stream();
18771 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018772 auto resources = mImpl->resources();
18773 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018774 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018775 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018776 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018777 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018778 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018779 uint32_t local_marker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018780 local_commandBuffer = commandBuffer;
18781 local_pipelineStage = pipelineStage;
18782 local_dstBuffer = dstBuffer;
18783 local_dstOffset = dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018784 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018785 countingStream->rewind();
18786 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018787 uint64_t cgen_var_1445;
18788 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1445, 1);
18789 countingStream->write((uint64_t*)&cgen_var_1445, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018790 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018791 uint64_t cgen_var_1446;
18792 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1446, 1);
18793 countingStream->write((uint64_t*)&cgen_var_1446, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018794 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18795 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018796 }
18797 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18798 countingStream->rewind();
18799 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
18800 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
18801 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018802 uint64_t cgen_var_1447;
18803 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1447, 1);
18804 stream->write((uint64_t*)&cgen_var_1447, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018805 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018806 uint64_t cgen_var_1448;
18807 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1448, 1);
18808 stream->write((uint64_t*)&cgen_var_1448, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018809 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
18810 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018811}
18812
18813#endif
18814#ifdef VK_AMD_shader_core_properties
18815#endif
18816#ifdef VK_EXT_vertex_attribute_divisor
18817#endif
18818#ifdef VK_NV_shader_subgroup_partitioned
18819#endif
18820#ifdef VK_NV_device_diagnostic_checkpoints
18821void VkEncoder::vkCmdSetCheckpointNV(
18822 VkCommandBuffer commandBuffer,
18823 const void* pCheckpointMarker)
18824{
18825 auto stream = mImpl->stream();
18826 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018827 auto resources = mImpl->resources();
18828 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018829 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018830 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018831 void* local_pCheckpointMarker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018832 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018833 local_pCheckpointMarker = nullptr;
18834 if (pCheckpointMarker)
18835 {
18836 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
18837 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018838 countingStream->rewind();
18839 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018840 uint64_t cgen_var_1449;
18841 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1449, 1);
18842 countingStream->write((uint64_t*)&cgen_var_1449, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018843 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018844 uint64_t cgen_var_1450 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18845 countingStream->putBe64(cgen_var_1450);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018846 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018847 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018848 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018849 }
18850 }
18851 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18852 countingStream->rewind();
18853 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
18854 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
18855 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018856 uint64_t cgen_var_1451;
18857 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1451, 1);
18858 stream->write((uint64_t*)&cgen_var_1451, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018859 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018860 uint64_t cgen_var_1452 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
18861 stream->putBe64(cgen_var_1452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018862 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018863 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018864 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018865 }
18866}
18867
18868void VkEncoder::vkGetQueueCheckpointDataNV(
18869 VkQueue queue,
18870 uint32_t* pCheckpointDataCount,
18871 VkCheckpointDataNV* pCheckpointData)
18872{
18873 auto stream = mImpl->stream();
18874 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018875 auto resources = mImpl->resources();
18876 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018877 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018878 VkQueue local_queue;
18879 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018880 countingStream->rewind();
18881 {
Lingfeng Yang808a6312018-11-13 21:06:15 -080018882 uint64_t cgen_var_1453;
18883 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1453, 1);
18884 countingStream->write((uint64_t*)&cgen_var_1453, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018885 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018886 uint64_t cgen_var_1454 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18887 countingStream->putBe64(cgen_var_1454);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018888 if (pCheckpointDataCount)
18889 {
18890 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18891 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018892 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018893 uint64_t cgen_var_1455 = (uint64_t)(uintptr_t)pCheckpointData;
18894 countingStream->putBe64(cgen_var_1455);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018895 if (pCheckpointData)
18896 {
18897 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18898 {
18899 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
18900 }
18901 }
18902 }
18903 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18904 countingStream->rewind();
18905 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
18906 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
18907 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yang808a6312018-11-13 21:06:15 -080018908 uint64_t cgen_var_1456;
18909 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1456, 1);
18910 stream->write((uint64_t*)&cgen_var_1456, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018911 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018912 uint64_t cgen_var_1457 = (uint64_t)(uintptr_t)pCheckpointDataCount;
18913 stream->putBe64(cgen_var_1457);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018914 if (pCheckpointDataCount)
18915 {
18916 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18917 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018918 // WARNING PTR CHECK
Lingfeng Yang808a6312018-11-13 21:06:15 -080018919 uint64_t cgen_var_1458 = (uint64_t)(uintptr_t)pCheckpointData;
18920 stream->putBe64(cgen_var_1458);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018921 if (pCheckpointData)
18922 {
18923 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18924 {
18925 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18926 }
18927 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018928 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018929 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018930 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018931 if (pCheckpointDataCount)
18932 {
18933 if (!(check_pCheckpointDataCount))
18934 {
18935 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
18936 }
18937 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
18938 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018939 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018940 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018941 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018942 if (pCheckpointData)
18943 {
18944 if (!(check_pCheckpointData))
18945 {
18946 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
18947 }
18948 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
18949 {
18950 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
18951 }
18952 }
18953}
18954
18955#endif
18956
Lingfeng Yangb1d90102018-11-29 16:10:36 -080018957} // namespace goldfish_vk