blob: b97f120e8650c9c3f4a5231c4b3a5654d5ed84bf [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 Yang42ac1792019-02-22 20:13:44 -080032#include "VulkanStreamGuest.h"
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070033
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080034#include "android/base/AlignedBuf.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080035#include "android/base/Pool.h"
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080036
Lingfeng Yang858ebe22019-01-22 15:53:52 -080037#include <cutils/properties.h>
38
Lingfeng Yange71c6422018-11-01 19:29:49 -070039#include "goldfish_vk_marshaling_guest.h"
Lingfeng Yang71b596b2018-11-07 18:03:25 -080040#include "goldfish_vk_deepcopy_guest.h"
41#include "goldfish_vk_handlemap_guest.h"
Lingfeng Yang808a6312018-11-13 21:06:15 -080042#include "goldfish_vk_private_defs.h"
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080043#include "goldfish_vk_transform_guest.h"
Lingfeng Yange71c6422018-11-01 19:29:49 -070044
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070045
Lingfeng Yangb1d90102018-11-29 16:10:36 -080046namespace goldfish_vk {
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070047
48
49
Lingfeng Yang71b596b2018-11-07 18:03:25 -080050using namespace goldfish_vk;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070051
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080052using android::aligned_buf_alloc;
53using android::aligned_buf_free;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080054using android::base::Pool;
Lingfeng Yang6f3b6c52018-11-05 14:22:37 -080055
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070056class VkEncoder::Impl {
57public:
Lingfeng Yang858ebe22019-01-22 15:53:52 -080058 Impl(IOStream* stream) : m_stream(stream), m_logEncodes(false) {
59 const char* emuVkLogEncodesPropName = "qemu.vk.log";
60 char encodeProp[PROPERTY_VALUE_MAX];
61 if (property_get(emuVkLogEncodesPropName, encodeProp, nullptr) > 0) {
62 m_logEncodes = atoi(encodeProp) > 0;
63 }
64 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070065 VulkanCountingStream* countingStream() { return &m_countingStream; }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080066 VulkanStreamGuest* stream() { return &m_stream; }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080067 Pool* pool() { return &m_pool; }
68 ResourceTracker* resources() { return ResourceTracker::get(); }
Lingfeng Yang29c99d92018-11-30 11:15:29 -080069 Validation* validation() { return &m_validation; }
Lingfeng Yang858ebe22019-01-22 15:53:52 -080070
71 void log(const char* text) {
72 if (!m_logEncodes) return;
73 ALOGD("encoder log: %s", text);
74 }
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070075private:
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070076 VulkanCountingStream m_countingStream;
Lingfeng Yang42ac1792019-02-22 20:13:44 -080077 VulkanStreamGuest m_stream;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080078 Pool m_pool { 8, 4096, 64 };
Lingfeng Yang29c99d92018-11-30 11:15:29 -080079
80 Validation m_validation;
Lingfeng Yang858ebe22019-01-22 15:53:52 -080081 bool m_logEncodes;
Lingfeng Yanga126a8a2018-11-01 18:21:40 -070082};
83
84VkEncoder::VkEncoder(IOStream *stream) :
85 mImpl(new VkEncoder::Impl(stream)) { }
Lingfeng Yang60b411d2018-11-29 00:26:45 -080086
87#define VALIDATE_RET(retType, success, validate) \
88 retType goldfish_vk_validateResult = validate; \
89 if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \
90
91#define VALIDATE_VOID(validate) \
92 VkResult goldfish_vk_validateResult = validate; \
93 if (goldfish_vk_validateResult != VK_SUCCESS) return; \
94
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070095#ifdef VK_VERSION_1_0
96VkResult VkEncoder::vkCreateInstance(
97 const VkInstanceCreateInfo* pCreateInfo,
98 const VkAllocationCallbacks* pAllocator,
99 VkInstance* pInstance)
100{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800101 AEMU_SCOPED_TRACE("vkCreateInstance encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800102 mImpl->log("start vkCreateInstance");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700103 auto stream = mImpl->stream();
104 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800105 auto resources = mImpl->resources();
106 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800107 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800108 VkInstanceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800109 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800110 local_pCreateInfo = nullptr;
111 if (pCreateInfo)
112 {
113 local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo));
114 deepcopy_VkInstanceCreateInfo(pool, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo));
115 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800116 local_pAllocator = nullptr;
117 if (pAllocator)
118 {
119 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
120 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
121 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800122 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800123 if (local_pCreateInfo)
124 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800125 transform_tohost_VkInstanceCreateInfo(mImpl->resources(), (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800126 }
127 if (local_pAllocator)
128 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800129 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800130 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700131 countingStream->rewind();
132 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800133 marshal_VkInstanceCreateInfo(countingStream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800134 // WARNING PTR CHECK
135 uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator;
136 countingStream->putBe64(cgen_var_0);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800137 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700138 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800139 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700140 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800141 uint64_t cgen_var_1;
142 countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1);
143 countingStream->write((uint64_t*)&cgen_var_1, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700144 }
145 uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
146 countingStream->rewind();
147 uint32_t opcode_vkCreateInstance = OP_vkCreateInstance;
148 stream->write(&opcode_vkCreateInstance, sizeof(uint32_t));
149 stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800150 marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800151 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800152 uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator;
153 stream->putBe64(cgen_var_2);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800154 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700155 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800156 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700157 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800158 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800159 uint64_t cgen_var_3;
160 stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1);
161 stream->write((uint64_t*)&cgen_var_3, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800162 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800163 AEMU_SCOPED_TRACE("vkCreateInstance readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -0800164 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800165 uint64_t cgen_var_4;
166 stream->read((uint64_t*)&cgen_var_4, 8);
167 stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800168 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800169 AEMU_SCOPED_TRACE("vkCreateInstance returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700170 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
171 stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800172 countingStream->clearPool();
173 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800174 pool->freeAll();
Lingfeng Yangf0654ff2019-02-02 12:21:24 -0800175 mImpl->resources()->on_vkCreateInstance(this, vkCreateInstance_VkResult_return, pCreateInfo, pAllocator, pInstance);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800176 mImpl->log("finish vkCreateInstance");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700177 return vkCreateInstance_VkResult_return;
178}
179
180void VkEncoder::vkDestroyInstance(
181 VkInstance instance,
182 const VkAllocationCallbacks* pAllocator)
183{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800184 AEMU_SCOPED_TRACE("vkDestroyInstance encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800185 mImpl->log("start vkDestroyInstance");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700186 auto stream = mImpl->stream();
187 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800188 auto resources = mImpl->resources();
189 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800190 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800191 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800192 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800193 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800194 local_pAllocator = nullptr;
195 if (pAllocator)
196 {
197 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
198 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
199 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800200 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800201 if (local_pAllocator)
202 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800203 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800204 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700205 countingStream->rewind();
206 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800207 uint64_t cgen_var_5;
208 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800209 countingStream->write((uint64_t*)&cgen_var_5, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800210 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800211 uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
212 countingStream->putBe64(cgen_var_6);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800213 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700214 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800215 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700216 }
217 }
218 uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
219 countingStream->rewind();
220 uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
221 stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
222 stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800223 uint64_t cgen_var_7;
224 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800225 stream->write((uint64_t*)&cgen_var_7, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800226 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800227 uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
228 stream->putBe64(cgen_var_8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800229 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700230 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800231 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700232 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800233 AEMU_SCOPED_TRACE("vkDestroyInstance readParams");
234 AEMU_SCOPED_TRACE("vkDestroyInstance returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800235 resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800236 mImpl->log("finish vkDestroyInstance");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700237}
238
239VkResult VkEncoder::vkEnumeratePhysicalDevices(
240 VkInstance instance,
241 uint32_t* pPhysicalDeviceCount,
242 VkPhysicalDevice* pPhysicalDevices)
243{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800244 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800245 mImpl->log("start vkEnumeratePhysicalDevices");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700246 auto stream = mImpl->stream();
247 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800248 auto resources = mImpl->resources();
249 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800250 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800251 VkInstance local_instance;
252 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700253 countingStream->rewind();
254 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800255 uint64_t cgen_var_9;
256 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800257 countingStream->write((uint64_t*)&cgen_var_9, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800258 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800259 uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
260 countingStream->putBe64(cgen_var_10);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700261 if (pPhysicalDeviceCount)
262 {
263 countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
264 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800265 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800266 uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
267 countingStream->putBe64(cgen_var_11);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700268 if (pPhysicalDevices)
269 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800270 if ((*(pPhysicalDeviceCount)))
271 {
272 uint64_t* cgen_var_12;
273 countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
274 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800275 countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800276 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700277 }
278 }
279 uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
280 countingStream->rewind();
281 uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
282 stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
283 stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800284 uint64_t cgen_var_13;
285 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800286 stream->write((uint64_t*)&cgen_var_13, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800287 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800288 uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
289 stream->putBe64(cgen_var_14);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700290 if (pPhysicalDeviceCount)
291 {
292 stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
293 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800294 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800295 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800296 uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
297 stream->putBe64(cgen_var_15);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700298 if (pPhysicalDevices)
299 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800300 if ((*(pPhysicalDeviceCount)))
301 {
302 uint64_t* cgen_var_16;
303 stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
304 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
Lingfeng Yange4008a02018-11-18 12:22:48 -0800305 stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800306 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700307 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800308 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800309 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800310 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700311 uint32_t* check_pPhysicalDeviceCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800312 check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700313 if (pPhysicalDeviceCount)
314 {
315 if (!(check_pPhysicalDeviceCount))
316 {
317 fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
318 }
319 stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
320 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800321 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800322 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700323 VkPhysicalDevice* check_pPhysicalDevices;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800324 check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700325 if (pPhysicalDevices)
326 {
327 if (!(check_pPhysicalDevices))
328 {
329 fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
330 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800331 if ((*(pPhysicalDeviceCount)))
332 {
333 uint64_t* cgen_var_19;
334 stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800335 stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -0800336 stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
337 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700338 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800339 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800340 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700341 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
342 stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800343 countingStream->clearPool();
344 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800345 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800346 mImpl->log("finish vkEnumeratePhysicalDevices");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700347 return vkEnumeratePhysicalDevices_VkResult_return;
348}
349
350void VkEncoder::vkGetPhysicalDeviceFeatures(
351 VkPhysicalDevice physicalDevice,
352 VkPhysicalDeviceFeatures* pFeatures)
353{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800354 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800355 mImpl->log("start vkGetPhysicalDeviceFeatures");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700356 auto stream = mImpl->stream();
357 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800358 auto resources = mImpl->resources();
359 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800360 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800361 VkPhysicalDevice local_physicalDevice;
362 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700363 countingStream->rewind();
364 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800365 uint64_t cgen_var_20;
366 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800367 countingStream->write((uint64_t*)&cgen_var_20, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700368 marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
369 }
370 uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
371 countingStream->rewind();
372 uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
373 stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
374 stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800375 uint64_t cgen_var_21;
376 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800377 stream->write((uint64_t*)&cgen_var_21, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700378 marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800379 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700380 unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800381 if (pFeatures)
382 {
383 transform_fromhost_VkPhysicalDeviceFeatures(mImpl->resources(), (VkPhysicalDeviceFeatures*)(pFeatures));
384 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800385 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800386 mImpl->log("finish vkGetPhysicalDeviceFeatures");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700387}
388
389void VkEncoder::vkGetPhysicalDeviceFormatProperties(
390 VkPhysicalDevice physicalDevice,
391 VkFormat format,
392 VkFormatProperties* pFormatProperties)
393{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800394 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800395 mImpl->log("start vkGetPhysicalDeviceFormatProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700396 auto stream = mImpl->stream();
397 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800398 auto resources = mImpl->resources();
399 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800400 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800401 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800402 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800403 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800404 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700405 countingStream->rewind();
406 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800407 uint64_t cgen_var_22;
408 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800409 countingStream->write((uint64_t*)&cgen_var_22, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800410 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700411 marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
412 }
413 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
414 countingStream->rewind();
415 uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
416 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
417 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800418 uint64_t cgen_var_23;
419 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800420 stream->write((uint64_t*)&cgen_var_23, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800421 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700422 marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800423 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700424 unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800425 if (pFormatProperties)
426 {
427 transform_fromhost_VkFormatProperties(mImpl->resources(), (VkFormatProperties*)(pFormatProperties));
428 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800429 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800430 mImpl->log("finish vkGetPhysicalDeviceFormatProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700431}
432
433VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
434 VkPhysicalDevice physicalDevice,
435 VkFormat format,
436 VkImageType type,
437 VkImageTiling tiling,
438 VkImageUsageFlags usage,
439 VkImageCreateFlags flags,
440 VkImageFormatProperties* pImageFormatProperties)
441{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800442 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800443 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700444 auto stream = mImpl->stream();
445 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800446 auto resources = mImpl->resources();
447 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800448 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800449 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800450 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800451 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800452 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800453 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800454 VkImageCreateFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800455 local_physicalDevice = physicalDevice;
456 local_format = format;
457 local_type = type;
458 local_tiling = tiling;
459 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800460 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700461 countingStream->rewind();
462 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800463 uint64_t cgen_var_24;
464 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800465 countingStream->write((uint64_t*)&cgen_var_24, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800466 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
467 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
468 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
469 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
470 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700471 marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
472 }
473 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
474 countingStream->rewind();
475 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
476 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
477 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800478 uint64_t cgen_var_25;
479 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800480 stream->write((uint64_t*)&cgen_var_25, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800481 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
482 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
483 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
484 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
485 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700486 marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800487 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700488 unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800489 if (pImageFormatProperties)
490 {
491 transform_fromhost_VkImageFormatProperties(mImpl->resources(), (VkImageFormatProperties*)(pImageFormatProperties));
492 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800493 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700494 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
495 stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800496 countingStream->clearPool();
497 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800498 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800499 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700500 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
501}
502
503void VkEncoder::vkGetPhysicalDeviceProperties(
504 VkPhysicalDevice physicalDevice,
505 VkPhysicalDeviceProperties* pProperties)
506{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800507 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800508 mImpl->log("start vkGetPhysicalDeviceProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700509 auto stream = mImpl->stream();
510 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800511 auto resources = mImpl->resources();
512 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800513 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800514 VkPhysicalDevice local_physicalDevice;
515 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700516 countingStream->rewind();
517 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800518 uint64_t cgen_var_26;
519 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800520 countingStream->write((uint64_t*)&cgen_var_26, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700521 marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
522 }
523 uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
524 countingStream->rewind();
525 uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
526 stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
527 stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800528 uint64_t cgen_var_27;
529 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800530 stream->write((uint64_t*)&cgen_var_27, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700531 marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800532 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700533 unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800534 if (pProperties)
535 {
536 transform_fromhost_VkPhysicalDeviceProperties(mImpl->resources(), (VkPhysicalDeviceProperties*)(pProperties));
537 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800538 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800539 mImpl->log("finish vkGetPhysicalDeviceProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700540}
541
542void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
543 VkPhysicalDevice physicalDevice,
544 uint32_t* pQueueFamilyPropertyCount,
545 VkQueueFamilyProperties* pQueueFamilyProperties)
546{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800547 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800548 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700549 auto stream = mImpl->stream();
550 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800551 auto resources = mImpl->resources();
552 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800553 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800554 VkPhysicalDevice local_physicalDevice;
555 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700556 countingStream->rewind();
557 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800558 uint64_t cgen_var_28;
559 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800560 countingStream->write((uint64_t*)&cgen_var_28, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800561 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800562 uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
563 countingStream->putBe64(cgen_var_29);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700564 if (pQueueFamilyPropertyCount)
565 {
566 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
567 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800568 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800569 uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
570 countingStream->putBe64(cgen_var_30);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700571 if (pQueueFamilyProperties)
572 {
573 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
574 {
575 marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
576 }
577 }
578 }
579 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
580 countingStream->rewind();
581 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
582 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
583 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800584 uint64_t cgen_var_31;
585 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800586 stream->write((uint64_t*)&cgen_var_31, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800587 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800588 uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
589 stream->putBe64(cgen_var_32);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700590 if (pQueueFamilyPropertyCount)
591 {
592 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
593 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800594 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800595 uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
596 stream->putBe64(cgen_var_33);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700597 if (pQueueFamilyProperties)
598 {
599 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
600 {
601 marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
602 }
603 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800604 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800605 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700606 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800607 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700608 if (pQueueFamilyPropertyCount)
609 {
610 if (!(check_pQueueFamilyPropertyCount))
611 {
612 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
613 }
614 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
615 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800616 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700617 VkQueueFamilyProperties* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800618 check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700619 if (pQueueFamilyProperties)
620 {
621 if (!(check_pQueueFamilyProperties))
622 {
623 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
624 }
625 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
626 {
627 unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
628 }
629 }
Lingfeng Yang97a06702018-12-24 17:02:43 -0800630 if (pQueueFamilyProperties)
631 {
632 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
633 {
634 transform_fromhost_VkQueueFamilyProperties(mImpl->resources(), (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
635 }
636 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800637 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800638 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700639}
640
641void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
642 VkPhysicalDevice physicalDevice,
643 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
644{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800645 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800646 mImpl->log("start vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700647 auto stream = mImpl->stream();
648 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800649 auto resources = mImpl->resources();
650 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800651 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800652 VkPhysicalDevice local_physicalDevice;
653 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700654 countingStream->rewind();
655 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800656 uint64_t cgen_var_36;
657 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800658 countingStream->write((uint64_t*)&cgen_var_36, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700659 marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
660 }
661 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
662 countingStream->rewind();
663 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
664 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
665 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800666 uint64_t cgen_var_37;
667 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800668 stream->write((uint64_t*)&cgen_var_37, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700669 marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800670 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700671 unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -0800672 if (pMemoryProperties)
673 {
674 transform_fromhost_VkPhysicalDeviceMemoryProperties(mImpl->resources(), (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
675 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800676 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties returnUnmarshal");
Lingfeng Yang97a06702018-12-24 17:02:43 -0800677 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800678 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700679}
680
681PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
682 VkInstance instance,
683 const char* pName)
684{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800685 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800686 mImpl->log("start vkGetInstanceProcAddr");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700687 auto stream = mImpl->stream();
688 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800689 auto resources = mImpl->resources();
690 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800691 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800692 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800693 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800694 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800695 local_pName = nullptr;
696 if (pName)
697 {
698 local_pName = pool->strDup(pName);
699 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700700 countingStream->rewind();
701 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800702 uint64_t cgen_var_38;
703 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800704 countingStream->write((uint64_t*)&cgen_var_38, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800705 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700706 }
707 uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
708 countingStream->rewind();
709 uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
710 stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
711 stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800712 uint64_t cgen_var_39;
713 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800714 stream->write((uint64_t*)&cgen_var_39, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800715 stream->putString(local_pName);
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800716 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr readParams");
717 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700718 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
719 stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800720 countingStream->clearPool();
721 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800722 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800723 mImpl->log("finish vkGetInstanceProcAddr");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700724 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
725}
726
727PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
728 VkDevice device,
729 const char* pName)
730{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800731 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800732 mImpl->log("start vkGetDeviceProcAddr");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700733 auto stream = mImpl->stream();
734 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800735 auto resources = mImpl->resources();
736 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800737 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800738 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800739 char* local_pName;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800740 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800741 local_pName = nullptr;
742 if (pName)
743 {
744 local_pName = pool->strDup(pName);
745 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700746 countingStream->rewind();
747 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800748 uint64_t cgen_var_40;
749 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800750 countingStream->write((uint64_t*)&cgen_var_40, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800751 countingStream->putString(local_pName);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700752 }
753 uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
754 countingStream->rewind();
755 uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
756 stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
757 stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800758 uint64_t cgen_var_41;
759 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800760 stream->write((uint64_t*)&cgen_var_41, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800761 stream->putString(local_pName);
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800762 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr readParams");
763 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700764 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
765 stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800766 countingStream->clearPool();
767 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800768 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800769 mImpl->log("finish vkGetDeviceProcAddr");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700770 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
771}
772
773VkResult VkEncoder::vkCreateDevice(
774 VkPhysicalDevice physicalDevice,
775 const VkDeviceCreateInfo* pCreateInfo,
776 const VkAllocationCallbacks* pAllocator,
777 VkDevice* pDevice)
778{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800779 AEMU_SCOPED_TRACE("vkCreateDevice encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800780 mImpl->log("start vkCreateDevice");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700781 auto stream = mImpl->stream();
782 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800783 auto resources = mImpl->resources();
784 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800785 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800786 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800787 VkDeviceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800788 VkAllocationCallbacks* local_pAllocator;
789 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800790 local_pCreateInfo = nullptr;
791 if (pCreateInfo)
792 {
793 local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo));
794 deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo));
795 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800796 local_pAllocator = nullptr;
797 if (pAllocator)
798 {
799 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
800 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
801 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800802 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800803 if (local_pCreateInfo)
804 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800805 transform_tohost_VkDeviceCreateInfo(mImpl->resources(), (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800806 }
807 if (local_pAllocator)
808 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800809 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800810 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700811 countingStream->rewind();
812 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800813 uint64_t cgen_var_42;
814 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800815 countingStream->write((uint64_t*)&cgen_var_42, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800816 marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800817 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800818 uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
819 countingStream->putBe64(cgen_var_43);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800820 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700821 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800822 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700823 }
Lingfeng Yang2285df12018-11-17 16:25:11 -0800824 uint64_t cgen_var_44;
825 countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
826 countingStream->write((uint64_t*)&cgen_var_44, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700827 }
828 uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
829 countingStream->rewind();
830 uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
831 stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
832 stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800833 uint64_t cgen_var_45;
834 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800835 stream->write((uint64_t*)&cgen_var_45, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800836 marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800837 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800838 uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
839 stream->putBe64(cgen_var_46);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800840 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700841 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800842 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700843 }
Lingfeng Yange4008a02018-11-18 12:22:48 -0800844 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800845 uint64_t cgen_var_47;
846 stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
847 stream->write((uint64_t*)&cgen_var_47, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800848 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800849 AEMU_SCOPED_TRACE("vkCreateDevice readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -0800850 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -0800851 uint64_t cgen_var_48;
852 stream->read((uint64_t*)&cgen_var_48, 8);
853 stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800854 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800855 AEMU_SCOPED_TRACE("vkCreateDevice returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700856 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
857 stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800858 countingStream->clearPool();
859 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800860 pool->freeAll();
Lingfeng Yang131d5a42018-11-30 12:00:33 -0800861 mImpl->resources()->on_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice);
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800862 mImpl->log("finish vkCreateDevice");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700863 return vkCreateDevice_VkResult_return;
864}
865
866void VkEncoder::vkDestroyDevice(
867 VkDevice device,
868 const VkAllocationCallbacks* pAllocator)
869{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800870 AEMU_SCOPED_TRACE("vkDestroyDevice encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800871 mImpl->log("start vkDestroyDevice");
Lingfeng Yang35e9c6a2018-12-25 17:13:36 -0800872 mImpl->resources()->on_vkDestroyDevice_pre(this, device, pAllocator);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700873 auto stream = mImpl->stream();
874 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800875 auto resources = mImpl->resources();
876 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800877 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800878 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800879 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -0800880 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800881 local_pAllocator = nullptr;
882 if (pAllocator)
883 {
884 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
885 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
886 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -0800887 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -0800888 if (local_pAllocator)
889 {
Lingfeng Yang97a06702018-12-24 17:02:43 -0800890 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -0800891 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700892 countingStream->rewind();
893 {
Lingfeng Yang2285df12018-11-17 16:25:11 -0800894 uint64_t cgen_var_49;
895 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800896 countingStream->write((uint64_t*)&cgen_var_49, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800897 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800898 uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
899 countingStream->putBe64(cgen_var_50);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800900 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700901 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800902 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700903 }
904 }
905 uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
906 countingStream->rewind();
907 uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
908 stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
909 stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -0800910 uint64_t cgen_var_51;
911 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -0800912 stream->write((uint64_t*)&cgen_var_51, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800913 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800914 uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
915 stream->putBe64(cgen_var_52);
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800916 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700917 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800918 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700919 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800920 AEMU_SCOPED_TRACE("vkDestroyDevice readParams");
921 AEMU_SCOPED_TRACE("vkDestroyDevice returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800922 resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device);
Lingfeng Yang35e9c6a2018-12-25 17:13:36 -0800923 stream->flush();
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800924 mImpl->log("finish vkDestroyDevice");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700925}
926
927VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
928 const char* pLayerName,
929 uint32_t* pPropertyCount,
930 VkExtensionProperties* pProperties)
931{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800932 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -0800933 mImpl->log("start vkEnumerateInstanceExtensionProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700934 auto stream = mImpl->stream();
935 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800936 auto resources = mImpl->resources();
937 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -0800938 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800939 char* local_pLayerName;
940 local_pLayerName = nullptr;
941 if (pLayerName)
942 {
943 local_pLayerName = pool->strDup(pLayerName);
944 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700945 countingStream->rewind();
946 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800947 countingStream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800948 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800949 uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
950 countingStream->putBe64(cgen_var_53);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700951 if (pPropertyCount)
952 {
953 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
954 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800955 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800956 uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
957 countingStream->putBe64(cgen_var_54);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700958 if (pProperties)
959 {
960 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
961 {
962 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
963 }
964 }
965 }
966 uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
967 countingStream->rewind();
968 uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
969 stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
970 stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -0800971 stream->putString(local_pLayerName);
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800972 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800973 uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
974 stream->putBe64(cgen_var_55);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700975 if (pPropertyCount)
976 {
977 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
978 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800979 // WARNING PTR CHECK
Lingfeng Yang2285df12018-11-17 16:25:11 -0800980 uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
981 stream->putBe64(cgen_var_56);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700982 if (pProperties)
983 {
984 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
985 {
986 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
987 }
988 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800989 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800990 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700991 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800992 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700993 if (pPropertyCount)
994 {
995 if (!(check_pPropertyCount))
996 {
997 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
998 }
999 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1000 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001001 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001002 VkExtensionProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001003 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001004 if (pProperties)
1005 {
1006 if (!(check_pProperties))
1007 {
1008 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1009 }
1010 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1011 {
1012 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1013 }
1014 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001015 if (pProperties)
1016 {
1017 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1018 {
1019 transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i));
1020 }
1021 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001022 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001023 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
1024 stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001025 countingStream->clearPool();
1026 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001027 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001028 mImpl->log("finish vkEnumerateInstanceExtensionProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001029 return vkEnumerateInstanceExtensionProperties_VkResult_return;
1030}
1031
1032VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
1033 VkPhysicalDevice physicalDevice,
1034 const char* pLayerName,
1035 uint32_t* pPropertyCount,
1036 VkExtensionProperties* pProperties)
1037{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001038 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties encode");
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001039 mImpl->log("start vkEnumerateDeviceExtensionProperties");
1040 auto stream = mImpl->stream();
1041 auto countingStream = mImpl->countingStream();
1042 auto resources = mImpl->resources();
1043 auto pool = mImpl->pool();
1044 stream->setHandleMapping(resources->unwrapMapping());
1045 VkPhysicalDevice local_physicalDevice;
1046 char* local_pLayerName;
1047 local_physicalDevice = physicalDevice;
1048 local_pLayerName = nullptr;
1049 if (pLayerName)
1050 {
1051 local_pLayerName = pool->strDup(pLayerName);
1052 }
1053 countingStream->rewind();
1054 {
1055 uint64_t cgen_var_59;
1056 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_59, 1);
1057 countingStream->write((uint64_t*)&cgen_var_59, 1 * 8);
1058 countingStream->putString(local_pLayerName);
1059 // WARNING PTR CHECK
1060 uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pPropertyCount;
1061 countingStream->putBe64(cgen_var_60);
1062 if (pPropertyCount)
1063 {
1064 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1065 }
1066 // WARNING PTR CHECK
1067 uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pProperties;
1068 countingStream->putBe64(cgen_var_61);
1069 if (pProperties)
1070 {
1071 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1072 {
1073 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
1074 }
1075 }
1076 }
1077 uint32_t packetSize_vkEnumerateDeviceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1078 countingStream->rewind();
1079 uint32_t opcode_vkEnumerateDeviceExtensionProperties = OP_vkEnumerateDeviceExtensionProperties;
1080 stream->write(&opcode_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
1081 stream->write(&packetSize_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
1082 uint64_t cgen_var_62;
1083 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_62, 1);
1084 stream->write((uint64_t*)&cgen_var_62, 1 * 8);
1085 stream->putString(local_pLayerName);
1086 // WARNING PTR CHECK
1087 uint64_t cgen_var_63 = (uint64_t)(uintptr_t)pPropertyCount;
1088 stream->putBe64(cgen_var_63);
1089 if (pPropertyCount)
1090 {
1091 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1092 }
1093 // WARNING PTR CHECK
1094 uint64_t cgen_var_64 = (uint64_t)(uintptr_t)pProperties;
1095 stream->putBe64(cgen_var_64);
1096 if (pProperties)
1097 {
1098 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1099 {
1100 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1101 }
1102 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001103 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001104 // WARNING PTR CHECK
1105 uint32_t* check_pPropertyCount;
1106 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
1107 if (pPropertyCount)
1108 {
1109 if (!(check_pPropertyCount))
1110 {
1111 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1112 }
1113 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1114 }
1115 // WARNING PTR CHECK
1116 VkExtensionProperties* check_pProperties;
1117 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
1118 if (pProperties)
1119 {
1120 if (!(check_pProperties))
1121 {
1122 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1123 }
1124 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1125 {
1126 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1127 }
1128 }
1129 if (pProperties)
1130 {
1131 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1132 {
1133 transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i));
1134 }
1135 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001136 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001137 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001138 stream->read(&vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult));
1139 countingStream->clearPool();
1140 stream->clearPool();
1141 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001142 mImpl->log("finish vkEnumerateDeviceExtensionProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001143 return vkEnumerateDeviceExtensionProperties_VkResult_return;
1144}
1145
1146VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
1147 uint32_t* pPropertyCount,
1148 VkLayerProperties* pProperties)
1149{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001150 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001151 mImpl->log("start vkEnumerateInstanceLayerProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001152 auto stream = mImpl->stream();
1153 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001154 auto resources = mImpl->resources();
1155 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001156 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001157 countingStream->rewind();
1158 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001159 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001160 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pPropertyCount;
1161 countingStream->putBe64(cgen_var_67);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001162 if (pPropertyCount)
1163 {
1164 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1165 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001166 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001167 uint64_t cgen_var_68 = (uint64_t)(uintptr_t)pProperties;
1168 countingStream->putBe64(cgen_var_68);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001169 if (pProperties)
1170 {
1171 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1172 {
1173 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1174 }
1175 }
1176 }
1177 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1178 countingStream->rewind();
1179 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
1180 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
1181 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001182 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001183 uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1184 stream->putBe64(cgen_var_69);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001185 if (pPropertyCount)
1186 {
1187 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1188 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001189 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001190 uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1191 stream->putBe64(cgen_var_70);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001192 if (pProperties)
1193 {
1194 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1195 {
1196 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1197 }
1198 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001199 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001200 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001201 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001202 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001203 if (pPropertyCount)
1204 {
1205 if (!(check_pPropertyCount))
1206 {
1207 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1208 }
1209 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1210 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001211 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001212 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001213 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001214 if (pProperties)
1215 {
1216 if (!(check_pProperties))
1217 {
1218 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1219 }
1220 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1221 {
1222 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1223 }
1224 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001225 if (pProperties)
1226 {
1227 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1228 {
1229 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1230 }
1231 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001232 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001233 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
1234 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001235 countingStream->clearPool();
1236 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001237 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001238 mImpl->log("finish vkEnumerateInstanceLayerProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001239 return vkEnumerateInstanceLayerProperties_VkResult_return;
1240}
1241
1242VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
1243 VkPhysicalDevice physicalDevice,
1244 uint32_t* pPropertyCount,
1245 VkLayerProperties* pProperties)
1246{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001247 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001248 mImpl->log("start vkEnumerateDeviceLayerProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001249 auto stream = mImpl->stream();
1250 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001251 auto resources = mImpl->resources();
1252 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001253 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001254 VkPhysicalDevice local_physicalDevice;
1255 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001256 countingStream->rewind();
1257 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001258 uint64_t cgen_var_73;
1259 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_73, 1);
1260 countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001261 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001262 uint64_t cgen_var_74 = (uint64_t)(uintptr_t)pPropertyCount;
1263 countingStream->putBe64(cgen_var_74);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001264 if (pPropertyCount)
1265 {
1266 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1267 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001268 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001269 uint64_t cgen_var_75 = (uint64_t)(uintptr_t)pProperties;
1270 countingStream->putBe64(cgen_var_75);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001271 if (pProperties)
1272 {
1273 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1274 {
1275 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1276 }
1277 }
1278 }
1279 uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1280 countingStream->rewind();
1281 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1282 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1283 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001284 uint64_t cgen_var_76;
1285 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_76, 1);
1286 stream->write((uint64_t*)&cgen_var_76, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001287 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001288 uint64_t cgen_var_77 = (uint64_t)(uintptr_t)pPropertyCount;
1289 stream->putBe64(cgen_var_77);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001290 if (pPropertyCount)
1291 {
1292 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1293 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001294 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001295 uint64_t cgen_var_78 = (uint64_t)(uintptr_t)pProperties;
1296 stream->putBe64(cgen_var_78);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001297 if (pProperties)
1298 {
1299 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1300 {
1301 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1302 }
1303 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001304 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001305 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001306 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001307 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001308 if (pPropertyCount)
1309 {
1310 if (!(check_pPropertyCount))
1311 {
1312 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1313 }
1314 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1315 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001316 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001317 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001318 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001319 if (pProperties)
1320 {
1321 if (!(check_pProperties))
1322 {
1323 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1324 }
1325 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1326 {
1327 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1328 }
1329 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001330 if (pProperties)
1331 {
1332 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1333 {
1334 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1335 }
1336 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001337 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001338 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1339 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001340 countingStream->clearPool();
1341 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001342 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001343 mImpl->log("finish vkEnumerateDeviceLayerProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001344 return vkEnumerateDeviceLayerProperties_VkResult_return;
1345}
1346
1347void VkEncoder::vkGetDeviceQueue(
1348 VkDevice device,
1349 uint32_t queueFamilyIndex,
1350 uint32_t queueIndex,
1351 VkQueue* pQueue)
1352{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001353 AEMU_SCOPED_TRACE("vkGetDeviceQueue encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001354 mImpl->log("start vkGetDeviceQueue");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001355 auto stream = mImpl->stream();
1356 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001357 auto resources = mImpl->resources();
1358 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001359 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001360 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001361 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001362 uint32_t local_queueIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001363 local_device = device;
1364 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001365 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001366 countingStream->rewind();
1367 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001368 uint64_t cgen_var_81;
1369 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_81, 1);
1370 countingStream->write((uint64_t*)&cgen_var_81, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001371 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1372 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001373 uint64_t cgen_var_82;
1374 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_82, 1);
1375 countingStream->write((uint64_t*)&cgen_var_82, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001376 }
1377 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1378 countingStream->rewind();
1379 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1380 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1381 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001382 uint64_t cgen_var_83;
1383 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_83, 1);
1384 stream->write((uint64_t*)&cgen_var_83, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001385 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1386 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001387 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001388 uint64_t cgen_var_84;
1389 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_84, 1);
1390 stream->write((uint64_t*)&cgen_var_84, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001391 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001392 AEMU_SCOPED_TRACE("vkGetDeviceQueue readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08001393 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001394 uint64_t cgen_var_85;
1395 stream->read((uint64_t*)&cgen_var_85, 8);
1396 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_85, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001397 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001398 AEMU_SCOPED_TRACE("vkGetDeviceQueue returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001399 mImpl->log("finish vkGetDeviceQueue");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001400}
1401
1402VkResult VkEncoder::vkQueueSubmit(
1403 VkQueue queue,
1404 uint32_t submitCount,
1405 const VkSubmitInfo* pSubmits,
1406 VkFence fence)
1407{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001408 AEMU_SCOPED_TRACE("vkQueueSubmit encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001409 mImpl->log("start vkQueueSubmit");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001410 auto stream = mImpl->stream();
1411 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001412 auto resources = mImpl->resources();
1413 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001414 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001415 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001416 uint32_t local_submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001417 VkSubmitInfo* local_pSubmits;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001418 VkFence local_fence;
1419 local_queue = queue;
1420 local_submitCount = submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001421 local_pSubmits = nullptr;
1422 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001423 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001424 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001425 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1426 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001427 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001428 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001429 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001430 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001431 if (local_pSubmits)
1432 {
1433 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1434 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001435 transform_tohost_VkSubmitInfo(mImpl->resources(), (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001436 }
1437 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001438 countingStream->rewind();
1439 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001440 uint64_t cgen_var_86;
1441 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_86, 1);
1442 countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001443 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1444 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1445 {
1446 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1447 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001448 uint64_t cgen_var_87;
1449 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_87, 1);
1450 countingStream->write((uint64_t*)&cgen_var_87, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001451 }
1452 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1453 countingStream->rewind();
1454 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1455 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1456 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001457 uint64_t cgen_var_88;
1458 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_88, 1);
1459 stream->write((uint64_t*)&cgen_var_88, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001460 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001461 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1462 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001463 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001464 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001465 uint64_t cgen_var_89;
1466 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_89, 1);
1467 stream->write((uint64_t*)&cgen_var_89, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001468 AEMU_SCOPED_TRACE("vkQueueSubmit readParams");
1469 AEMU_SCOPED_TRACE("vkQueueSubmit returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001470 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1471 stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001472 countingStream->clearPool();
1473 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001474 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001475 mImpl->log("finish vkQueueSubmit");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001476 return vkQueueSubmit_VkResult_return;
1477}
1478
1479VkResult VkEncoder::vkQueueWaitIdle(
1480 VkQueue queue)
1481{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001482 AEMU_SCOPED_TRACE("vkQueueWaitIdle encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001483 mImpl->log("start vkQueueWaitIdle");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001484 auto stream = mImpl->stream();
1485 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001486 auto resources = mImpl->resources();
1487 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001488 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001489 VkQueue local_queue;
1490 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001491 countingStream->rewind();
1492 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001493 uint64_t cgen_var_90;
1494 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_90, 1);
1495 countingStream->write((uint64_t*)&cgen_var_90, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001496 }
1497 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1498 countingStream->rewind();
1499 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1500 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1501 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001502 uint64_t cgen_var_91;
1503 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_91, 1);
1504 stream->write((uint64_t*)&cgen_var_91, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001505 AEMU_SCOPED_TRACE("vkQueueWaitIdle readParams");
1506 AEMU_SCOPED_TRACE("vkQueueWaitIdle returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001507 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1508 stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001509 countingStream->clearPool();
1510 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001511 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001512 mImpl->log("finish vkQueueWaitIdle");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001513 return vkQueueWaitIdle_VkResult_return;
1514}
1515
1516VkResult VkEncoder::vkDeviceWaitIdle(
1517 VkDevice device)
1518{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001519 AEMU_SCOPED_TRACE("vkDeviceWaitIdle encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001520 mImpl->log("start vkDeviceWaitIdle");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001521 auto stream = mImpl->stream();
1522 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001523 auto resources = mImpl->resources();
1524 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001525 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001526 VkDevice local_device;
1527 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001528 countingStream->rewind();
1529 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001530 uint64_t cgen_var_92;
1531 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_92, 1);
1532 countingStream->write((uint64_t*)&cgen_var_92, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001533 }
1534 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1535 countingStream->rewind();
1536 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1537 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1538 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001539 uint64_t cgen_var_93;
1540 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
1541 stream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001542 AEMU_SCOPED_TRACE("vkDeviceWaitIdle readParams");
1543 AEMU_SCOPED_TRACE("vkDeviceWaitIdle returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001544 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1545 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001546 countingStream->clearPool();
1547 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001548 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001549 mImpl->log("finish vkDeviceWaitIdle");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001550 return vkDeviceWaitIdle_VkResult_return;
1551}
1552
1553VkResult VkEncoder::vkAllocateMemory(
1554 VkDevice device,
1555 const VkMemoryAllocateInfo* pAllocateInfo,
1556 const VkAllocationCallbacks* pAllocator,
1557 VkDeviceMemory* pMemory)
1558{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001559 AEMU_SCOPED_TRACE("vkAllocateMemory encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001560 mImpl->log("start vkAllocateMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001561 auto stream = mImpl->stream();
1562 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001563 auto resources = mImpl->resources();
1564 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001565 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001566 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001567 VkMemoryAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001568 VkAllocationCallbacks* local_pAllocator;
1569 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001570 local_pAllocateInfo = nullptr;
1571 if (pAllocateInfo)
1572 {
1573 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1574 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1575 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001576 local_pAllocator = nullptr;
1577 if (pAllocator)
1578 {
1579 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1580 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1581 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001582 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001583 if (local_pAllocateInfo)
1584 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001585 transform_tohost_VkMemoryAllocateInfo(mImpl->resources(), (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001586 }
1587 if (local_pAllocator)
1588 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001589 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001590 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001591 countingStream->rewind();
1592 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001593 uint64_t cgen_var_94;
1594 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_94, 1);
1595 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001596 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001597 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001598 uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1599 countingStream->putBe64(cgen_var_95);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001600 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001601 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001602 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001603 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001604 uint64_t cgen_var_96;
1605 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_96, 1);
1606 countingStream->write((uint64_t*)&cgen_var_96, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001607 }
1608 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1609 countingStream->rewind();
1610 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1611 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1612 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001613 uint64_t cgen_var_97;
1614 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_97, 1);
1615 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001616 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001617 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001618 uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1619 stream->putBe64(cgen_var_98);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001620 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001621 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001622 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001623 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001624 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001625 uint64_t cgen_var_99;
1626 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_99, 1);
1627 stream->write((uint64_t*)&cgen_var_99, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001628 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001629 AEMU_SCOPED_TRACE("vkAllocateMemory readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08001630 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001631 uint64_t cgen_var_100;
1632 stream->read((uint64_t*)&cgen_var_100, 8);
1633 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_100, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001634 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001635 AEMU_SCOPED_TRACE("vkAllocateMemory returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001636 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1637 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001638 countingStream->clearPool();
1639 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001640 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001641 mImpl->log("finish vkAllocateMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001642 return vkAllocateMemory_VkResult_return;
1643}
1644
1645void VkEncoder::vkFreeMemory(
1646 VkDevice device,
1647 VkDeviceMemory memory,
1648 const VkAllocationCallbacks* pAllocator)
1649{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001650 AEMU_SCOPED_TRACE("vkFreeMemory encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001651 mImpl->log("start vkFreeMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001652 auto stream = mImpl->stream();
1653 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001654 auto resources = mImpl->resources();
1655 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001656 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001657 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001658 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001659 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001660 local_device = device;
1661 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001662 local_pAllocator = nullptr;
1663 if (pAllocator)
1664 {
1665 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1666 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1667 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001668 local_pAllocator = nullptr;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08001669 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001670 countingStream->rewind();
1671 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001672 uint64_t cgen_var_101;
1673 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
1674 countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
1675 uint64_t cgen_var_102;
1676 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_102, 1);
1677 countingStream->write((uint64_t*)&cgen_var_102, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001678 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001679 uint64_t cgen_var_103 = (uint64_t)(uintptr_t)local_pAllocator;
1680 countingStream->putBe64(cgen_var_103);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001681 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001682 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001683 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001684 }
1685 }
1686 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1687 countingStream->rewind();
1688 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1689 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1690 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001691 uint64_t cgen_var_104;
1692 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_104, 1);
1693 stream->write((uint64_t*)&cgen_var_104, 1 * 8);
1694 uint64_t cgen_var_105;
1695 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_105, 1);
1696 stream->write((uint64_t*)&cgen_var_105, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001697 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001698 uint64_t cgen_var_106 = (uint64_t)(uintptr_t)local_pAllocator;
1699 stream->putBe64(cgen_var_106);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001700 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001701 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001702 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001703 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001704 AEMU_SCOPED_TRACE("vkFreeMemory readParams");
1705 AEMU_SCOPED_TRACE("vkFreeMemory returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001706 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001707 mImpl->log("finish vkFreeMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001708}
1709
1710VkResult VkEncoder::vkMapMemory(
1711 VkDevice device,
1712 VkDeviceMemory memory,
1713 VkDeviceSize offset,
1714 VkDeviceSize size,
1715 VkMemoryMapFlags flags,
1716 void** ppData)
1717{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001718 AEMU_SCOPED_TRACE("vkMapMemory resourceEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001719 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001720 vkMapMemory_VkResult_return = mImpl->resources()->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001721 mImpl->log("finish vkMapMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001722 return vkMapMemory_VkResult_return;
1723}
1724
1725void VkEncoder::vkUnmapMemory(
1726 VkDevice device,
1727 VkDeviceMemory memory)
1728{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001729 AEMU_SCOPED_TRACE("vkUnmapMemory resourceEvent");
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001730 mImpl->resources()->on_vkUnmapMemory(this, device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001731}
1732
1733VkResult VkEncoder::vkFlushMappedMemoryRanges(
1734 VkDevice device,
1735 uint32_t memoryRangeCount,
1736 const VkMappedMemoryRange* pMemoryRanges)
1737{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001738 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001739 mImpl->log("start vkFlushMappedMemoryRanges");
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001740 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001741 auto stream = mImpl->stream();
1742 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001743 auto resources = mImpl->resources();
1744 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001745 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001746 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001747 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001748 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001749 local_device = device;
1750 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001751 local_pMemoryRanges = nullptr;
1752 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001753 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001754 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001755 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1756 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001757 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1758 }
1759 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001760 if (local_pMemoryRanges)
1761 {
1762 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1763 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001764 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001765 }
1766 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001767 countingStream->rewind();
1768 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001769 uint64_t cgen_var_107;
1770 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
1771 countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001772 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1773 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1774 {
1775 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001776 }
1777 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001778 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001779 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001780 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1781 {
1782 auto range = pMemoryRanges[i];
1783 auto memory = pMemoryRanges[i].memory;
1784 auto size = pMemoryRanges[i].size;
1785 auto offset = pMemoryRanges[i].offset;
1786 uint64_t streamSize = 0;
1787 if (!memory) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1788 auto hostPtr = resources->getMappedPointer(memory);
1789 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1790 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1791 streamSize = actualSize;
1792 countingStream->write(&streamSize, sizeof(uint64_t));
1793 uint8_t* targetRange = hostPtr + offset;
1794 countingStream->write(targetRange, actualSize);
1795 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001796 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001797 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1798 countingStream->rewind();
1799 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1800 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1801 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001802 uint64_t cgen_var_108;
1803 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_108, 1);
1804 stream->write((uint64_t*)&cgen_var_108, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001805 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001806 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1807 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001808 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001809 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001810 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001811 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001812 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1813 {
1814 auto range = pMemoryRanges[i];
1815 auto memory = pMemoryRanges[i].memory;
1816 auto size = pMemoryRanges[i].size;
1817 auto offset = pMemoryRanges[i].offset;
1818 uint64_t streamSize = 0;
1819 if (!memory) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1820 auto hostPtr = resources->getMappedPointer(memory);
1821 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1822 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1823 streamSize = actualSize;
1824 stream->write(&streamSize, sizeof(uint64_t));
1825 uint8_t* targetRange = hostPtr + offset;
1826 stream->write(targetRange, actualSize);
1827 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001828 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001829 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges readParams");
1830 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001831 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1832 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001833 countingStream->clearPool();
1834 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001835 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001836 mImpl->log("finish vkFlushMappedMemoryRanges");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001837 return vkFlushMappedMemoryRanges_VkResult_return;
1838}
1839
1840VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1841 VkDevice device,
1842 uint32_t memoryRangeCount,
1843 const VkMappedMemoryRange* pMemoryRanges)
1844{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001845 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001846 mImpl->log("start vkInvalidateMappedMemoryRanges");
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001847 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001848 auto stream = mImpl->stream();
1849 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001850 auto resources = mImpl->resources();
1851 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001852 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001853 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001854 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001855 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001856 local_device = device;
1857 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001858 local_pMemoryRanges = nullptr;
1859 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001860 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001861 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001862 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1863 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001864 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1865 }
1866 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001867 if (local_pMemoryRanges)
1868 {
1869 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1870 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001871 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001872 }
1873 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001874 countingStream->rewind();
1875 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001876 uint64_t cgen_var_109;
1877 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_109, 1);
1878 countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001879 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1880 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1881 {
1882 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001883 }
1884 }
1885 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1886 countingStream->rewind();
1887 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1888 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1889 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001890 uint64_t cgen_var_110;
1891 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
1892 stream->write((uint64_t*)&cgen_var_110, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001893 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001894 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1895 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001896 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001897 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001898 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges readParams");
1899 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001900 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1901 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001902 countingStream->clearPool();
1903 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001904 pool->freeAll();
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001905 if (!resources->usingDirectMapping())
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001906 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001907 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1908 {
1909 auto range = pMemoryRanges[i];
1910 auto memory = pMemoryRanges[i].memory;
1911 auto size = pMemoryRanges[i].size;
1912 auto offset = pMemoryRanges[i].offset;
1913 uint64_t streamSize = 0;
1914 if (!memory) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1915 auto hostPtr = resources->getMappedPointer(memory);
1916 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1917 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1918 streamSize = actualSize;
1919 stream->read(&streamSize, sizeof(uint64_t));
1920 uint8_t* targetRange = hostPtr + offset;
1921 stream->read(targetRange, actualSize);
1922 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001923 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001924 mImpl->log("finish vkInvalidateMappedMemoryRanges");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001925 return vkInvalidateMappedMemoryRanges_VkResult_return;
1926}
1927
1928void VkEncoder::vkGetDeviceMemoryCommitment(
1929 VkDevice device,
1930 VkDeviceMemory memory,
1931 VkDeviceSize* pCommittedMemoryInBytes)
1932{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001933 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001934 mImpl->log("start vkGetDeviceMemoryCommitment");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001935 auto stream = mImpl->stream();
1936 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001937 auto resources = mImpl->resources();
1938 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001939 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001940 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001941 VkDeviceMemory local_memory;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001942 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001943 local_memory = memory;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08001944 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001945 countingStream->rewind();
1946 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001947 uint64_t cgen_var_111;
1948 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_111, 1);
1949 countingStream->write((uint64_t*)&cgen_var_111, 1 * 8);
1950 uint64_t cgen_var_112;
1951 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
1952 countingStream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001953 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1954 }
1955 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1956 countingStream->rewind();
1957 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1958 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1959 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001960 uint64_t cgen_var_113;
1961 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
1962 stream->write((uint64_t*)&cgen_var_113, 1 * 8);
1963 uint64_t cgen_var_114;
1964 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_114, 1);
1965 stream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001966 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001967 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001968 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001969 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001970 mImpl->log("finish vkGetDeviceMemoryCommitment");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001971}
1972
1973VkResult VkEncoder::vkBindBufferMemory(
1974 VkDevice device,
1975 VkBuffer buffer,
1976 VkDeviceMemory memory,
1977 VkDeviceSize memoryOffset)
1978{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001979 AEMU_SCOPED_TRACE("vkBindBufferMemory encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001980 mImpl->log("start vkBindBufferMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001981 auto stream = mImpl->stream();
1982 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001983 auto resources = mImpl->resources();
1984 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001985 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001986 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001987 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001988 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001989 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001990 local_device = device;
1991 local_buffer = buffer;
1992 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001993 local_memoryOffset = memoryOffset;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08001994 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001995 countingStream->rewind();
1996 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001997 uint64_t cgen_var_115;
1998 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_115, 1);
1999 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
2000 uint64_t cgen_var_116;
2001 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_116, 1);
2002 countingStream->write((uint64_t*)&cgen_var_116, 1 * 8);
2003 uint64_t cgen_var_117;
2004 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_117, 1);
2005 countingStream->write((uint64_t*)&cgen_var_117, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002006 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002007 }
2008 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2009 countingStream->rewind();
2010 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
2011 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
2012 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002013 uint64_t cgen_var_118;
2014 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_118, 1);
2015 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
2016 uint64_t cgen_var_119;
2017 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_119, 1);
2018 stream->write((uint64_t*)&cgen_var_119, 1 * 8);
2019 uint64_t cgen_var_120;
2020 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_120, 1);
2021 stream->write((uint64_t*)&cgen_var_120, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002022 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002023 AEMU_SCOPED_TRACE("vkBindBufferMemory readParams");
2024 AEMU_SCOPED_TRACE("vkBindBufferMemory returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002025 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
2026 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002027 countingStream->clearPool();
2028 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002029 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002030 mImpl->log("finish vkBindBufferMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002031 return vkBindBufferMemory_VkResult_return;
2032}
2033
2034VkResult VkEncoder::vkBindImageMemory(
2035 VkDevice device,
2036 VkImage image,
2037 VkDeviceMemory memory,
2038 VkDeviceSize memoryOffset)
2039{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002040 AEMU_SCOPED_TRACE("vkBindImageMemory encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002041 mImpl->log("start vkBindImageMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002042 auto stream = mImpl->stream();
2043 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002044 auto resources = mImpl->resources();
2045 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002046 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002047 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002048 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002049 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002050 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002051 local_device = device;
2052 local_image = image;
2053 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002054 local_memoryOffset = memoryOffset;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08002055 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002056 countingStream->rewind();
2057 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002058 uint64_t cgen_var_121;
2059 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
2060 countingStream->write((uint64_t*)&cgen_var_121, 1 * 8);
2061 uint64_t cgen_var_122;
2062 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_122, 1);
2063 countingStream->write((uint64_t*)&cgen_var_122, 1 * 8);
2064 uint64_t cgen_var_123;
2065 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_123, 1);
2066 countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002067 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002068 }
2069 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2070 countingStream->rewind();
2071 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
2072 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
2073 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002074 uint64_t cgen_var_124;
2075 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_124, 1);
2076 stream->write((uint64_t*)&cgen_var_124, 1 * 8);
2077 uint64_t cgen_var_125;
2078 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_125, 1);
2079 stream->write((uint64_t*)&cgen_var_125, 1 * 8);
2080 uint64_t cgen_var_126;
2081 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_126, 1);
2082 stream->write((uint64_t*)&cgen_var_126, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002083 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002084 AEMU_SCOPED_TRACE("vkBindImageMemory readParams");
2085 AEMU_SCOPED_TRACE("vkBindImageMemory returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002086 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
2087 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002088 countingStream->clearPool();
2089 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002090 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002091 mImpl->log("finish vkBindImageMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002092 return vkBindImageMemory_VkResult_return;
2093}
2094
2095void VkEncoder::vkGetBufferMemoryRequirements(
2096 VkDevice device,
2097 VkBuffer buffer,
2098 VkMemoryRequirements* pMemoryRequirements)
2099{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002100 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002101 mImpl->log("start vkGetBufferMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002102 auto stream = mImpl->stream();
2103 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002104 auto resources = mImpl->resources();
2105 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002106 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002107 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002108 VkBuffer local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002109 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002110 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002111 countingStream->rewind();
2112 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002113 uint64_t cgen_var_127;
2114 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
2115 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
2116 uint64_t cgen_var_128;
2117 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_128, 1);
2118 countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002119 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
2120 }
2121 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2122 countingStream->rewind();
2123 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
2124 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
2125 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002126 uint64_t cgen_var_129;
2127 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_129, 1);
2128 stream->write((uint64_t*)&cgen_var_129, 1 * 8);
2129 uint64_t cgen_var_130;
2130 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_130, 1);
2131 stream->write((uint64_t*)&cgen_var_130, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002132 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002133 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002134 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08002135 if (pMemoryRequirements)
2136 {
2137 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
2138 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002139 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002140 mImpl->log("finish vkGetBufferMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002141}
2142
2143void VkEncoder::vkGetImageMemoryRequirements(
2144 VkDevice device,
2145 VkImage image,
2146 VkMemoryRequirements* pMemoryRequirements)
2147{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002148 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002149 mImpl->log("start vkGetImageMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002150 auto stream = mImpl->stream();
2151 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002152 auto resources = mImpl->resources();
2153 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002154 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002155 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002156 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002157 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002158 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002159 countingStream->rewind();
2160 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002161 uint64_t cgen_var_131;
2162 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
2163 countingStream->write((uint64_t*)&cgen_var_131, 1 * 8);
2164 uint64_t cgen_var_132;
2165 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
2166 countingStream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002167 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
2168 }
2169 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2170 countingStream->rewind();
2171 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
2172 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
2173 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002174 uint64_t cgen_var_133;
2175 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_133, 1);
2176 stream->write((uint64_t*)&cgen_var_133, 1 * 8);
2177 uint64_t cgen_var_134;
2178 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_134, 1);
2179 stream->write((uint64_t*)&cgen_var_134, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002180 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002181 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002182 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08002183 if (pMemoryRequirements)
2184 {
2185 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
2186 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002187 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002188 mImpl->log("finish vkGetImageMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002189}
2190
2191void VkEncoder::vkGetImageSparseMemoryRequirements(
2192 VkDevice device,
2193 VkImage image,
2194 uint32_t* pSparseMemoryRequirementCount,
2195 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
2196{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002197 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002198 mImpl->log("start vkGetImageSparseMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002199 auto stream = mImpl->stream();
2200 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002201 auto resources = mImpl->resources();
2202 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002203 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002204 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002205 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002206 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002207 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002208 countingStream->rewind();
2209 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002210 uint64_t cgen_var_135;
2211 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_135, 1);
2212 countingStream->write((uint64_t*)&cgen_var_135, 1 * 8);
2213 uint64_t cgen_var_136;
2214 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_136, 1);
2215 countingStream->write((uint64_t*)&cgen_var_136, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002216 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002217 uint64_t cgen_var_137 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2218 countingStream->putBe64(cgen_var_137);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002219 if (pSparseMemoryRequirementCount)
2220 {
2221 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2222 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002223 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002224 uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2225 countingStream->putBe64(cgen_var_138);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002226 if (pSparseMemoryRequirements)
2227 {
2228 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2229 {
2230 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2231 }
2232 }
2233 }
2234 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2235 countingStream->rewind();
2236 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
2237 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
2238 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002239 uint64_t cgen_var_139;
2240 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_139, 1);
2241 stream->write((uint64_t*)&cgen_var_139, 1 * 8);
2242 uint64_t cgen_var_140;
2243 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_140, 1);
2244 stream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002245 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002246 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2247 stream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002248 if (pSparseMemoryRequirementCount)
2249 {
2250 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2251 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002252 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002253 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2254 stream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002255 if (pSparseMemoryRequirements)
2256 {
2257 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2258 {
2259 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2260 }
2261 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002262 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002263 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002264 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002265 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002266 if (pSparseMemoryRequirementCount)
2267 {
2268 if (!(check_pSparseMemoryRequirementCount))
2269 {
2270 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
2271 }
2272 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2273 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002274 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002275 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002276 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002277 if (pSparseMemoryRequirements)
2278 {
2279 if (!(check_pSparseMemoryRequirements))
2280 {
2281 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
2282 }
2283 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2284 {
2285 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2286 }
2287 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002288 if (pSparseMemoryRequirements)
2289 {
2290 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2291 {
2292 transform_fromhost_VkSparseImageMemoryRequirements(mImpl->resources(), (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2293 }
2294 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002295 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002296 mImpl->log("finish vkGetImageSparseMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002297}
2298
2299void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
2300 VkPhysicalDevice physicalDevice,
2301 VkFormat format,
2302 VkImageType type,
2303 VkSampleCountFlagBits samples,
2304 VkImageUsageFlags usage,
2305 VkImageTiling tiling,
2306 uint32_t* pPropertyCount,
2307 VkSparseImageFormatProperties* pProperties)
2308{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002309 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002310 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002311 auto stream = mImpl->stream();
2312 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002313 auto resources = mImpl->resources();
2314 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002315 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002316 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002317 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002318 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002319 VkSampleCountFlagBits local_samples;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002320 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002321 VkImageTiling local_tiling;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002322 local_physicalDevice = physicalDevice;
2323 local_format = format;
2324 local_type = type;
2325 local_samples = samples;
2326 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002327 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002328 countingStream->rewind();
2329 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002330 uint64_t cgen_var_145;
2331 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_145, 1);
2332 countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002333 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
2334 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
2335 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2336 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2337 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002338 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002339 uint64_t cgen_var_146 = (uint64_t)(uintptr_t)pPropertyCount;
2340 countingStream->putBe64(cgen_var_146);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002341 if (pPropertyCount)
2342 {
2343 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2344 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002345 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002346 uint64_t cgen_var_147 = (uint64_t)(uintptr_t)pProperties;
2347 countingStream->putBe64(cgen_var_147);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002348 if (pProperties)
2349 {
2350 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2351 {
2352 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
2353 }
2354 }
2355 }
2356 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2357 countingStream->rewind();
2358 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
2359 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
2360 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002361 uint64_t cgen_var_148;
2362 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_148, 1);
2363 stream->write((uint64_t*)&cgen_var_148, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002364 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
2365 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
2366 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2367 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2368 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002369 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002370 uint64_t cgen_var_149 = (uint64_t)(uintptr_t)pPropertyCount;
2371 stream->putBe64(cgen_var_149);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002372 if (pPropertyCount)
2373 {
2374 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2375 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002376 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002377 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)pProperties;
2378 stream->putBe64(cgen_var_150);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002379 if (pProperties)
2380 {
2381 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2382 {
2383 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2384 }
2385 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002386 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002387 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002388 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002389 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002390 if (pPropertyCount)
2391 {
2392 if (!(check_pPropertyCount))
2393 {
2394 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
2395 }
2396 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
2397 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002398 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002399 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002400 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002401 if (pProperties)
2402 {
2403 if (!(check_pProperties))
2404 {
2405 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
2406 }
2407 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2408 {
2409 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2410 }
2411 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002412 if (pProperties)
2413 {
2414 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2415 {
2416 transform_fromhost_VkSparseImageFormatProperties(mImpl->resources(), (VkSparseImageFormatProperties*)(pProperties + i));
2417 }
2418 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002419 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002420 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002421}
2422
2423VkResult VkEncoder::vkQueueBindSparse(
2424 VkQueue queue,
2425 uint32_t bindInfoCount,
2426 const VkBindSparseInfo* pBindInfo,
2427 VkFence fence)
2428{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002429 AEMU_SCOPED_TRACE("vkQueueBindSparse encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002430 mImpl->log("start vkQueueBindSparse");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002431 auto stream = mImpl->stream();
2432 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002433 auto resources = mImpl->resources();
2434 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002435 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002436 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002437 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002438 VkBindSparseInfo* local_pBindInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002439 VkFence local_fence;
2440 local_queue = queue;
2441 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002442 local_pBindInfo = nullptr;
2443 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002444 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002445 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002446 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2447 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002448 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002449 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002450 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002451 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002452 if (local_pBindInfo)
2453 {
2454 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2455 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002456 transform_tohost_VkBindSparseInfo(mImpl->resources(), (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002457 }
2458 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002459 countingStream->rewind();
2460 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002461 uint64_t cgen_var_153;
2462 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_153, 1);
2463 countingStream->write((uint64_t*)&cgen_var_153, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002464 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2465 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2466 {
2467 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2468 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002469 uint64_t cgen_var_154;
2470 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_154, 1);
2471 countingStream->write((uint64_t*)&cgen_var_154, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002472 }
2473 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2474 countingStream->rewind();
2475 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2476 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2477 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002478 uint64_t cgen_var_155;
2479 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_155, 1);
2480 stream->write((uint64_t*)&cgen_var_155, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002481 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002482 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2483 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002484 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002485 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002486 uint64_t cgen_var_156;
2487 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_156, 1);
2488 stream->write((uint64_t*)&cgen_var_156, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002489 AEMU_SCOPED_TRACE("vkQueueBindSparse readParams");
2490 AEMU_SCOPED_TRACE("vkQueueBindSparse returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002491 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2492 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002493 countingStream->clearPool();
2494 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002495 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002496 mImpl->log("finish vkQueueBindSparse");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002497 return vkQueueBindSparse_VkResult_return;
2498}
2499
2500VkResult VkEncoder::vkCreateFence(
2501 VkDevice device,
2502 const VkFenceCreateInfo* pCreateInfo,
2503 const VkAllocationCallbacks* pAllocator,
2504 VkFence* pFence)
2505{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002506 AEMU_SCOPED_TRACE("vkCreateFence encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002507 mImpl->log("start vkCreateFence");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002508 auto stream = mImpl->stream();
2509 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002510 auto resources = mImpl->resources();
2511 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002512 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002513 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002514 VkFenceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002515 VkAllocationCallbacks* local_pAllocator;
2516 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002517 local_pCreateInfo = nullptr;
2518 if (pCreateInfo)
2519 {
2520 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2521 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2522 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002523 local_pAllocator = nullptr;
2524 if (pAllocator)
2525 {
2526 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2527 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2528 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002529 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002530 if (local_pCreateInfo)
2531 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002532 transform_tohost_VkFenceCreateInfo(mImpl->resources(), (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002533 }
2534 if (local_pAllocator)
2535 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002536 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002537 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002538 countingStream->rewind();
2539 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002540 uint64_t cgen_var_157;
2541 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_157, 1);
2542 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002543 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002544 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002545 uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2546 countingStream->putBe64(cgen_var_158);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002547 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002548 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002549 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002550 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002551 uint64_t cgen_var_159;
2552 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_159, 1);
2553 countingStream->write((uint64_t*)&cgen_var_159, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002554 }
2555 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2556 countingStream->rewind();
2557 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2558 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2559 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002560 uint64_t cgen_var_160;
2561 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_160, 1);
2562 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002563 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002564 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002565 uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2566 stream->putBe64(cgen_var_161);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002567 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002568 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002569 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002570 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002571 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002572 uint64_t cgen_var_162;
2573 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_162, 1);
2574 stream->write((uint64_t*)&cgen_var_162, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002575 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002576 AEMU_SCOPED_TRACE("vkCreateFence readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08002577 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002578 uint64_t cgen_var_163;
2579 stream->read((uint64_t*)&cgen_var_163, 8);
2580 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_163, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002581 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002582 AEMU_SCOPED_TRACE("vkCreateFence returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002583 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2584 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002585 countingStream->clearPool();
2586 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002587 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002588 mImpl->log("finish vkCreateFence");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002589 return vkCreateFence_VkResult_return;
2590}
2591
2592void VkEncoder::vkDestroyFence(
2593 VkDevice device,
2594 VkFence fence,
2595 const VkAllocationCallbacks* pAllocator)
2596{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002597 AEMU_SCOPED_TRACE("vkDestroyFence encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002598 mImpl->log("start vkDestroyFence");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002599 auto stream = mImpl->stream();
2600 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002601 auto resources = mImpl->resources();
2602 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002603 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002604 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002605 VkFence local_fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002606 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002607 local_device = device;
2608 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002609 local_pAllocator = nullptr;
2610 if (pAllocator)
2611 {
2612 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2613 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2614 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002615 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002616 if (local_pAllocator)
2617 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002618 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002619 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002620 countingStream->rewind();
2621 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002622 uint64_t cgen_var_164;
2623 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
2624 countingStream->write((uint64_t*)&cgen_var_164, 1 * 8);
2625 uint64_t cgen_var_165;
2626 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_165, 1);
2627 countingStream->write((uint64_t*)&cgen_var_165, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002628 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002629 uint64_t cgen_var_166 = (uint64_t)(uintptr_t)local_pAllocator;
2630 countingStream->putBe64(cgen_var_166);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002631 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002632 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002633 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002634 }
2635 }
2636 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2637 countingStream->rewind();
2638 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2639 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2640 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002641 uint64_t cgen_var_167;
2642 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_167, 1);
2643 stream->write((uint64_t*)&cgen_var_167, 1 * 8);
2644 uint64_t cgen_var_168;
2645 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_168, 1);
2646 stream->write((uint64_t*)&cgen_var_168, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002647 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002648 uint64_t cgen_var_169 = (uint64_t)(uintptr_t)local_pAllocator;
2649 stream->putBe64(cgen_var_169);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002650 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002651 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002652 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002653 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002654 AEMU_SCOPED_TRACE("vkDestroyFence readParams");
2655 AEMU_SCOPED_TRACE("vkDestroyFence returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002656 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002657 mImpl->log("finish vkDestroyFence");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002658}
2659
2660VkResult VkEncoder::vkResetFences(
2661 VkDevice device,
2662 uint32_t fenceCount,
2663 const VkFence* pFences)
2664{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002665 AEMU_SCOPED_TRACE("vkResetFences encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002666 mImpl->log("start vkResetFences");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002667 auto stream = mImpl->stream();
2668 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002669 auto resources = mImpl->resources();
2670 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002671 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002672 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002673 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002674 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002675 local_device = device;
2676 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002677 local_pFences = nullptr;
2678 if (pFences)
2679 {
2680 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2681 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002682 countingStream->rewind();
2683 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002684 uint64_t cgen_var_170;
2685 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
2686 countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002687 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002688 if (((fenceCount)))
2689 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002690 uint64_t* cgen_var_171;
2691 countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2692 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
2693 countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002694 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002695 }
2696 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2697 countingStream->rewind();
2698 uint32_t opcode_vkResetFences = OP_vkResetFences;
2699 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2700 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002701 uint64_t cgen_var_172;
2702 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
2703 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002704 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002705 if (((fenceCount)))
2706 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002707 uint64_t* cgen_var_173;
2708 stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2709 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
2710 stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002711 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002712 AEMU_SCOPED_TRACE("vkResetFences readParams");
2713 AEMU_SCOPED_TRACE("vkResetFences returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002714 VkResult vkResetFences_VkResult_return = (VkResult)0;
2715 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002716 countingStream->clearPool();
2717 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002718 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002719 mImpl->log("finish vkResetFences");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002720 return vkResetFences_VkResult_return;
2721}
2722
2723VkResult VkEncoder::vkGetFenceStatus(
2724 VkDevice device,
2725 VkFence fence)
2726{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002727 AEMU_SCOPED_TRACE("vkGetFenceStatus encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002728 mImpl->log("start vkGetFenceStatus");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002729 auto stream = mImpl->stream();
2730 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002731 auto resources = mImpl->resources();
2732 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002733 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002734 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002735 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002736 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002737 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002738 countingStream->rewind();
2739 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002740 uint64_t cgen_var_174;
2741 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
2742 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
2743 uint64_t cgen_var_175;
2744 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_175, 1);
2745 countingStream->write((uint64_t*)&cgen_var_175, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002746 }
2747 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2748 countingStream->rewind();
2749 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2750 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2751 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002752 uint64_t cgen_var_176;
2753 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_176, 1);
2754 stream->write((uint64_t*)&cgen_var_176, 1 * 8);
2755 uint64_t cgen_var_177;
2756 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_177, 1);
2757 stream->write((uint64_t*)&cgen_var_177, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002758 AEMU_SCOPED_TRACE("vkGetFenceStatus readParams");
2759 AEMU_SCOPED_TRACE("vkGetFenceStatus returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002760 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2761 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002762 countingStream->clearPool();
2763 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002764 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002765 mImpl->log("finish vkGetFenceStatus");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002766 return vkGetFenceStatus_VkResult_return;
2767}
2768
2769VkResult VkEncoder::vkWaitForFences(
2770 VkDevice device,
2771 uint32_t fenceCount,
2772 const VkFence* pFences,
2773 VkBool32 waitAll,
2774 uint64_t timeout)
2775{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002776 AEMU_SCOPED_TRACE("vkWaitForFences encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002777 mImpl->log("start vkWaitForFences");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002778 auto stream = mImpl->stream();
2779 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002780 auto resources = mImpl->resources();
2781 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002782 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002783 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002784 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002785 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002786 VkBool32 local_waitAll;
2787 uint64_t local_timeout;
2788 local_device = device;
2789 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002790 local_pFences = nullptr;
2791 if (pFences)
2792 {
2793 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2794 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002795 local_waitAll = waitAll;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002796 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002797 countingStream->rewind();
2798 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002799 uint64_t cgen_var_178;
2800 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_178, 1);
2801 countingStream->write((uint64_t*)&cgen_var_178, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002802 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002803 if (((fenceCount)))
2804 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002805 uint64_t* cgen_var_179;
2806 countingStream->alloc((void**)&cgen_var_179, ((fenceCount)) * 8);
2807 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_179, ((fenceCount)));
2808 countingStream->write((uint64_t*)cgen_var_179, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002809 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002810 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2811 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002812 }
2813 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2814 countingStream->rewind();
2815 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2816 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2817 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002818 uint64_t cgen_var_180;
2819 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_180, 1);
2820 stream->write((uint64_t*)&cgen_var_180, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002821 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002822 if (((fenceCount)))
2823 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002824 uint64_t* cgen_var_181;
2825 stream->alloc((void**)&cgen_var_181, ((fenceCount)) * 8);
2826 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_181, ((fenceCount)));
2827 stream->write((uint64_t*)cgen_var_181, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002828 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002829 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2830 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002831 AEMU_SCOPED_TRACE("vkWaitForFences readParams");
2832 AEMU_SCOPED_TRACE("vkWaitForFences returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002833 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2834 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002835 countingStream->clearPool();
2836 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002837 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002838 mImpl->log("finish vkWaitForFences");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002839 return vkWaitForFences_VkResult_return;
2840}
2841
2842VkResult VkEncoder::vkCreateSemaphore(
2843 VkDevice device,
2844 const VkSemaphoreCreateInfo* pCreateInfo,
2845 const VkAllocationCallbacks* pAllocator,
2846 VkSemaphore* pSemaphore)
2847{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002848 AEMU_SCOPED_TRACE("vkCreateSemaphore encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002849 mImpl->log("start vkCreateSemaphore");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002850 auto stream = mImpl->stream();
2851 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002852 auto resources = mImpl->resources();
2853 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002854 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002855 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002856 VkSemaphoreCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002857 VkAllocationCallbacks* local_pAllocator;
2858 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002859 local_pCreateInfo = nullptr;
2860 if (pCreateInfo)
2861 {
2862 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2863 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2864 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002865 local_pAllocator = nullptr;
2866 if (pAllocator)
2867 {
2868 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2869 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2870 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002871 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002872 if (local_pCreateInfo)
2873 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002874 transform_tohost_VkSemaphoreCreateInfo(mImpl->resources(), (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002875 }
2876 if (local_pAllocator)
2877 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002878 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002879 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002880 countingStream->rewind();
2881 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002882 uint64_t cgen_var_182;
2883 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_182, 1);
2884 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002885 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002886 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002887 uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2888 countingStream->putBe64(cgen_var_183);
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 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002893 uint64_t cgen_var_184;
2894 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_184, 1);
2895 countingStream->write((uint64_t*)&cgen_var_184, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002896 }
2897 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2898 countingStream->rewind();
2899 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2900 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2901 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002902 uint64_t cgen_var_185;
2903 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_185, 1);
2904 stream->write((uint64_t*)&cgen_var_185, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002905 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002906 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002907 uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2908 stream->putBe64(cgen_var_186);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002909 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002910 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002911 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002912 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002913 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002914 uint64_t cgen_var_187;
2915 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_187, 1);
2916 stream->write((uint64_t*)&cgen_var_187, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002917 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002918 AEMU_SCOPED_TRACE("vkCreateSemaphore readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08002919 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002920 uint64_t cgen_var_188;
2921 stream->read((uint64_t*)&cgen_var_188, 8);
2922 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_188, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002923 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002924 AEMU_SCOPED_TRACE("vkCreateSemaphore returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002925 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2926 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002927 countingStream->clearPool();
2928 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002929 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002930 mImpl->log("finish vkCreateSemaphore");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002931 return vkCreateSemaphore_VkResult_return;
2932}
2933
2934void VkEncoder::vkDestroySemaphore(
2935 VkDevice device,
2936 VkSemaphore semaphore,
2937 const VkAllocationCallbacks* pAllocator)
2938{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002939 AEMU_SCOPED_TRACE("vkDestroySemaphore encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002940 mImpl->log("start vkDestroySemaphore");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002941 auto stream = mImpl->stream();
2942 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002943 auto resources = mImpl->resources();
2944 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002945 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002946 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002947 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002948 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002949 local_device = device;
2950 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002951 local_pAllocator = nullptr;
2952 if (pAllocator)
2953 {
2954 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2955 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2956 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002957 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002958 if (local_pAllocator)
2959 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002960 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002961 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002962 countingStream->rewind();
2963 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002964 uint64_t cgen_var_189;
2965 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_189, 1);
2966 countingStream->write((uint64_t*)&cgen_var_189, 1 * 8);
2967 uint64_t cgen_var_190;
2968 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_190, 1);
2969 countingStream->write((uint64_t*)&cgen_var_190, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002970 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002971 uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2972 countingStream->putBe64(cgen_var_191);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002973 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002974 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002975 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002976 }
2977 }
2978 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2979 countingStream->rewind();
2980 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2981 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2982 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002983 uint64_t cgen_var_192;
2984 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_192, 1);
2985 stream->write((uint64_t*)&cgen_var_192, 1 * 8);
2986 uint64_t cgen_var_193;
2987 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_193, 1);
2988 stream->write((uint64_t*)&cgen_var_193, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002989 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08002990 uint64_t cgen_var_194 = (uint64_t)(uintptr_t)local_pAllocator;
2991 stream->putBe64(cgen_var_194);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002992 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002993 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002994 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002995 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002996 AEMU_SCOPED_TRACE("vkDestroySemaphore readParams");
2997 AEMU_SCOPED_TRACE("vkDestroySemaphore returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002998 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002999 mImpl->log("finish vkDestroySemaphore");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003000}
3001
3002VkResult VkEncoder::vkCreateEvent(
3003 VkDevice device,
3004 const VkEventCreateInfo* pCreateInfo,
3005 const VkAllocationCallbacks* pAllocator,
3006 VkEvent* pEvent)
3007{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003008 AEMU_SCOPED_TRACE("vkCreateEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003009 mImpl->log("start vkCreateEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003010 auto stream = mImpl->stream();
3011 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003012 auto resources = mImpl->resources();
3013 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003014 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003015 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003016 VkEventCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003017 VkAllocationCallbacks* local_pAllocator;
3018 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003019 local_pCreateInfo = nullptr;
3020 if (pCreateInfo)
3021 {
3022 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
3023 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
3024 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003025 local_pAllocator = nullptr;
3026 if (pAllocator)
3027 {
3028 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3029 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3030 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003031 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003032 if (local_pCreateInfo)
3033 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003034 transform_tohost_VkEventCreateInfo(mImpl->resources(), (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003035 }
3036 if (local_pAllocator)
3037 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003038 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003039 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003040 countingStream->rewind();
3041 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003042 uint64_t cgen_var_195;
3043 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_195, 1);
3044 countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003045 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003046 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003047 uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
3048 countingStream->putBe64(cgen_var_196);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003049 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003050 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003051 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003052 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003053 uint64_t cgen_var_197;
3054 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_197, 1);
3055 countingStream->write((uint64_t*)&cgen_var_197, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003056 }
3057 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3058 countingStream->rewind();
3059 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
3060 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
3061 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003062 uint64_t cgen_var_198;
3063 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_198, 1);
3064 stream->write((uint64_t*)&cgen_var_198, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003065 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003066 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003067 uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
3068 stream->putBe64(cgen_var_199);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003069 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003070 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003071 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003072 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003073 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003074 uint64_t cgen_var_200;
3075 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_200, 1);
3076 stream->write((uint64_t*)&cgen_var_200, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003077 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003078 AEMU_SCOPED_TRACE("vkCreateEvent readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08003079 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003080 uint64_t cgen_var_201;
3081 stream->read((uint64_t*)&cgen_var_201, 8);
3082 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_201, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003083 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003084 AEMU_SCOPED_TRACE("vkCreateEvent returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003085 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
3086 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003087 countingStream->clearPool();
3088 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003089 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003090 mImpl->log("finish vkCreateEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003091 return vkCreateEvent_VkResult_return;
3092}
3093
3094void VkEncoder::vkDestroyEvent(
3095 VkDevice device,
3096 VkEvent event,
3097 const VkAllocationCallbacks* pAllocator)
3098{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003099 AEMU_SCOPED_TRACE("vkDestroyEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003100 mImpl->log("start vkDestroyEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003101 auto stream = mImpl->stream();
3102 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003103 auto resources = mImpl->resources();
3104 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003105 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003106 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003107 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003108 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003109 local_device = device;
3110 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003111 local_pAllocator = nullptr;
3112 if (pAllocator)
3113 {
3114 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3115 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3116 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003117 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003118 if (local_pAllocator)
3119 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003120 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003121 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003122 countingStream->rewind();
3123 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003124 uint64_t cgen_var_202;
3125 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
3126 countingStream->write((uint64_t*)&cgen_var_202, 1 * 8);
3127 uint64_t cgen_var_203;
3128 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
3129 countingStream->write((uint64_t*)&cgen_var_203, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003130 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003131 uint64_t cgen_var_204 = (uint64_t)(uintptr_t)local_pAllocator;
3132 countingStream->putBe64(cgen_var_204);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003133 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003134 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003135 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003136 }
3137 }
3138 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3139 countingStream->rewind();
3140 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
3141 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
3142 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003143 uint64_t cgen_var_205;
3144 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_205, 1);
3145 stream->write((uint64_t*)&cgen_var_205, 1 * 8);
3146 uint64_t cgen_var_206;
3147 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_206, 1);
3148 stream->write((uint64_t*)&cgen_var_206, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003149 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003150 uint64_t cgen_var_207 = (uint64_t)(uintptr_t)local_pAllocator;
3151 stream->putBe64(cgen_var_207);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003152 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003153 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003154 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003155 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003156 AEMU_SCOPED_TRACE("vkDestroyEvent readParams");
3157 AEMU_SCOPED_TRACE("vkDestroyEvent returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003158 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003159 mImpl->log("finish vkDestroyEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003160}
3161
3162VkResult VkEncoder::vkGetEventStatus(
3163 VkDevice device,
3164 VkEvent event)
3165{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003166 AEMU_SCOPED_TRACE("vkGetEventStatus encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003167 mImpl->log("start vkGetEventStatus");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003168 auto stream = mImpl->stream();
3169 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003170 auto resources = mImpl->resources();
3171 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003172 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003173 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003174 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003175 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003176 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003177 countingStream->rewind();
3178 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003179 uint64_t cgen_var_208;
3180 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
3181 countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
3182 uint64_t cgen_var_209;
3183 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
3184 countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003185 }
3186 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3187 countingStream->rewind();
3188 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
3189 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
3190 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003191 uint64_t cgen_var_210;
3192 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
3193 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
3194 uint64_t cgen_var_211;
3195 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
3196 stream->write((uint64_t*)&cgen_var_211, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003197 AEMU_SCOPED_TRACE("vkGetEventStatus readParams");
3198 AEMU_SCOPED_TRACE("vkGetEventStatus returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003199 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
3200 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003201 countingStream->clearPool();
3202 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003203 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003204 mImpl->log("finish vkGetEventStatus");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003205 return vkGetEventStatus_VkResult_return;
3206}
3207
3208VkResult VkEncoder::vkSetEvent(
3209 VkDevice device,
3210 VkEvent event)
3211{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003212 AEMU_SCOPED_TRACE("vkSetEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003213 mImpl->log("start vkSetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003214 auto stream = mImpl->stream();
3215 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003216 auto resources = mImpl->resources();
3217 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003218 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003219 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003220 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003221 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003222 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003223 countingStream->rewind();
3224 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003225 uint64_t cgen_var_212;
3226 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
3227 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
3228 uint64_t cgen_var_213;
3229 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_213, 1);
3230 countingStream->write((uint64_t*)&cgen_var_213, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003231 }
3232 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3233 countingStream->rewind();
3234 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
3235 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
3236 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003237 uint64_t cgen_var_214;
3238 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_214, 1);
3239 stream->write((uint64_t*)&cgen_var_214, 1 * 8);
3240 uint64_t cgen_var_215;
3241 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_215, 1);
3242 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003243 AEMU_SCOPED_TRACE("vkSetEvent readParams");
3244 AEMU_SCOPED_TRACE("vkSetEvent returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003245 VkResult vkSetEvent_VkResult_return = (VkResult)0;
3246 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003247 countingStream->clearPool();
3248 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003249 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003250 mImpl->log("finish vkSetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003251 return vkSetEvent_VkResult_return;
3252}
3253
3254VkResult VkEncoder::vkResetEvent(
3255 VkDevice device,
3256 VkEvent event)
3257{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003258 AEMU_SCOPED_TRACE("vkResetEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003259 mImpl->log("start vkResetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003260 auto stream = mImpl->stream();
3261 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003262 auto resources = mImpl->resources();
3263 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003264 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003265 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003266 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003267 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003268 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003269 countingStream->rewind();
3270 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003271 uint64_t cgen_var_216;
3272 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_216, 1);
3273 countingStream->write((uint64_t*)&cgen_var_216, 1 * 8);
3274 uint64_t cgen_var_217;
3275 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_217, 1);
3276 countingStream->write((uint64_t*)&cgen_var_217, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003277 }
3278 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3279 countingStream->rewind();
3280 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
3281 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
3282 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003283 uint64_t cgen_var_218;
3284 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_218, 1);
3285 stream->write((uint64_t*)&cgen_var_218, 1 * 8);
3286 uint64_t cgen_var_219;
3287 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_219, 1);
3288 stream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003289 AEMU_SCOPED_TRACE("vkResetEvent readParams");
3290 AEMU_SCOPED_TRACE("vkResetEvent returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003291 VkResult vkResetEvent_VkResult_return = (VkResult)0;
3292 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003293 countingStream->clearPool();
3294 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003295 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003296 mImpl->log("finish vkResetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003297 return vkResetEvent_VkResult_return;
3298}
3299
3300VkResult VkEncoder::vkCreateQueryPool(
3301 VkDevice device,
3302 const VkQueryPoolCreateInfo* pCreateInfo,
3303 const VkAllocationCallbacks* pAllocator,
3304 VkQueryPool* pQueryPool)
3305{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003306 AEMU_SCOPED_TRACE("vkCreateQueryPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003307 mImpl->log("start vkCreateQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003308 auto stream = mImpl->stream();
3309 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003310 auto resources = mImpl->resources();
3311 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003312 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003313 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003314 VkQueryPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003315 VkAllocationCallbacks* local_pAllocator;
3316 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003317 local_pCreateInfo = nullptr;
3318 if (pCreateInfo)
3319 {
3320 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
3321 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
3322 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003323 local_pAllocator = nullptr;
3324 if (pAllocator)
3325 {
3326 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3327 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3328 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003329 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003330 if (local_pCreateInfo)
3331 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003332 transform_tohost_VkQueryPoolCreateInfo(mImpl->resources(), (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003333 }
3334 if (local_pAllocator)
3335 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003336 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003337 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003338 countingStream->rewind();
3339 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003340 uint64_t cgen_var_220;
3341 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_220, 1);
3342 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003343 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003344 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003345 uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
3346 countingStream->putBe64(cgen_var_221);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003347 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003348 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003349 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003350 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003351 uint64_t cgen_var_222;
3352 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_222, 1);
3353 countingStream->write((uint64_t*)&cgen_var_222, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003354 }
3355 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3356 countingStream->rewind();
3357 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
3358 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
3359 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003360 uint64_t cgen_var_223;
3361 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_223, 1);
3362 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003363 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003364 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003365 uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
3366 stream->putBe64(cgen_var_224);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003367 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003368 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003369 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003370 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003371 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003372 uint64_t cgen_var_225;
3373 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_225, 1);
3374 stream->write((uint64_t*)&cgen_var_225, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003375 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003376 AEMU_SCOPED_TRACE("vkCreateQueryPool readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08003377 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003378 uint64_t cgen_var_226;
3379 stream->read((uint64_t*)&cgen_var_226, 8);
3380 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_226, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003381 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003382 AEMU_SCOPED_TRACE("vkCreateQueryPool returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003383 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
3384 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003385 countingStream->clearPool();
3386 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003387 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003388 mImpl->log("finish vkCreateQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003389 return vkCreateQueryPool_VkResult_return;
3390}
3391
3392void VkEncoder::vkDestroyQueryPool(
3393 VkDevice device,
3394 VkQueryPool queryPool,
3395 const VkAllocationCallbacks* pAllocator)
3396{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003397 AEMU_SCOPED_TRACE("vkDestroyQueryPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003398 mImpl->log("start vkDestroyQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003399 auto stream = mImpl->stream();
3400 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003401 auto resources = mImpl->resources();
3402 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003403 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003404 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003405 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003406 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003407 local_device = device;
3408 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003409 local_pAllocator = nullptr;
3410 if (pAllocator)
3411 {
3412 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3413 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3414 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003415 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003416 if (local_pAllocator)
3417 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003418 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003419 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003420 countingStream->rewind();
3421 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003422 uint64_t cgen_var_227;
3423 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_227, 1);
3424 countingStream->write((uint64_t*)&cgen_var_227, 1 * 8);
3425 uint64_t cgen_var_228;
3426 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_228, 1);
3427 countingStream->write((uint64_t*)&cgen_var_228, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003428 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003429 uint64_t cgen_var_229 = (uint64_t)(uintptr_t)local_pAllocator;
3430 countingStream->putBe64(cgen_var_229);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003431 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003432 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003433 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003434 }
3435 }
3436 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3437 countingStream->rewind();
3438 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
3439 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
3440 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003441 uint64_t cgen_var_230;
3442 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_230, 1);
3443 stream->write((uint64_t*)&cgen_var_230, 1 * 8);
3444 uint64_t cgen_var_231;
3445 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_231, 1);
3446 stream->write((uint64_t*)&cgen_var_231, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003447 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003448 uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3449 stream->putBe64(cgen_var_232);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003450 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003451 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003452 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003453 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003454 AEMU_SCOPED_TRACE("vkDestroyQueryPool readParams");
3455 AEMU_SCOPED_TRACE("vkDestroyQueryPool returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003456 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003457 mImpl->log("finish vkDestroyQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003458}
3459
3460VkResult VkEncoder::vkGetQueryPoolResults(
3461 VkDevice device,
3462 VkQueryPool queryPool,
3463 uint32_t firstQuery,
3464 uint32_t queryCount,
3465 size_t dataSize,
3466 void* pData,
3467 VkDeviceSize stride,
3468 VkQueryResultFlags flags)
3469{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003470 AEMU_SCOPED_TRACE("vkGetQueryPoolResults encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003471 mImpl->log("start vkGetQueryPoolResults");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003472 auto stream = mImpl->stream();
3473 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003474 auto resources = mImpl->resources();
3475 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003476 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003477 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003478 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003479 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003480 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003481 size_t local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003482 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003483 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003484 local_device = device;
3485 local_queryPool = queryPool;
3486 local_firstQuery = firstQuery;
3487 local_queryCount = queryCount;
3488 local_dataSize = dataSize;
3489 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003490 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003491 countingStream->rewind();
3492 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003493 uint64_t cgen_var_233;
3494 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_233, 1);
3495 countingStream->write((uint64_t*)&cgen_var_233, 1 * 8);
3496 uint64_t cgen_var_234;
3497 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_234, 1);
3498 countingStream->write((uint64_t*)&cgen_var_234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003499 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3500 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003501 uint64_t cgen_var_235 = (uint64_t)local_dataSize;
3502 countingStream->putBe64(cgen_var_235);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003503 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003504 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3505 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003506 }
3507 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3508 countingStream->rewind();
3509 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
3510 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
3511 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003512 uint64_t cgen_var_236;
3513 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_236, 1);
3514 stream->write((uint64_t*)&cgen_var_236, 1 * 8);
3515 uint64_t cgen_var_237;
3516 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_237, 1);
3517 stream->write((uint64_t*)&cgen_var_237, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003518 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3519 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003520 uint64_t cgen_var_238 = (uint64_t)local_dataSize;
3521 stream->putBe64(cgen_var_238);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003522 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003523 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3524 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003525 AEMU_SCOPED_TRACE("vkGetQueryPoolResults readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003526 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003527 AEMU_SCOPED_TRACE("vkGetQueryPoolResults returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003528 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
3529 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003530 countingStream->clearPool();
3531 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003532 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003533 mImpl->log("finish vkGetQueryPoolResults");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003534 return vkGetQueryPoolResults_VkResult_return;
3535}
3536
3537VkResult VkEncoder::vkCreateBuffer(
3538 VkDevice device,
3539 const VkBufferCreateInfo* pCreateInfo,
3540 const VkAllocationCallbacks* pAllocator,
3541 VkBuffer* pBuffer)
3542{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003543 AEMU_SCOPED_TRACE("vkCreateBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003544 mImpl->log("start vkCreateBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003545 auto stream = mImpl->stream();
3546 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003547 auto resources = mImpl->resources();
3548 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003549 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003550 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003551 VkBufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003552 VkAllocationCallbacks* local_pAllocator;
3553 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003554 local_pCreateInfo = nullptr;
3555 if (pCreateInfo)
3556 {
3557 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3558 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3559 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003560 local_pAllocator = nullptr;
3561 if (pAllocator)
3562 {
3563 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3564 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3565 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003566 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003567 if (local_pCreateInfo)
3568 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003569 transform_tohost_VkBufferCreateInfo(mImpl->resources(), (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003570 }
3571 if (local_pAllocator)
3572 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003573 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003574 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003575 countingStream->rewind();
3576 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003577 uint64_t cgen_var_239;
3578 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_239, 1);
3579 countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003580 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003581 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003582 uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3583 countingStream->putBe64(cgen_var_240);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003584 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003585 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003586 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003587 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003588 uint64_t cgen_var_241;
3589 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_241, 1);
3590 countingStream->write((uint64_t*)&cgen_var_241, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003591 }
3592 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3593 countingStream->rewind();
3594 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3595 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3596 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003597 uint64_t cgen_var_242;
3598 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_242, 1);
3599 stream->write((uint64_t*)&cgen_var_242, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003600 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003601 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003602 uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3603 stream->putBe64(cgen_var_243);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003604 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003605 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003606 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003607 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003608 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003609 uint64_t cgen_var_244;
3610 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_244, 1);
3611 stream->write((uint64_t*)&cgen_var_244, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003612 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003613 AEMU_SCOPED_TRACE("vkCreateBuffer readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08003614 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003615 uint64_t cgen_var_245;
3616 stream->read((uint64_t*)&cgen_var_245, 8);
3617 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_245, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003618 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003619 AEMU_SCOPED_TRACE("vkCreateBuffer returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003620 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3621 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003622 countingStream->clearPool();
3623 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003624 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003625 mImpl->log("finish vkCreateBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003626 return vkCreateBuffer_VkResult_return;
3627}
3628
3629void VkEncoder::vkDestroyBuffer(
3630 VkDevice device,
3631 VkBuffer buffer,
3632 const VkAllocationCallbacks* pAllocator)
3633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003634 AEMU_SCOPED_TRACE("vkDestroyBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003635 mImpl->log("start vkDestroyBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003636 auto stream = mImpl->stream();
3637 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003638 auto resources = mImpl->resources();
3639 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003640 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003641 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003642 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003643 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003644 local_device = device;
3645 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003646 local_pAllocator = nullptr;
3647 if (pAllocator)
3648 {
3649 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3650 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3651 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003652 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003653 if (local_pAllocator)
3654 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003655 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003656 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003657 countingStream->rewind();
3658 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003659 uint64_t cgen_var_246;
3660 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_246, 1);
3661 countingStream->write((uint64_t*)&cgen_var_246, 1 * 8);
3662 uint64_t cgen_var_247;
3663 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_247, 1);
3664 countingStream->write((uint64_t*)&cgen_var_247, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003665 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003666 uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3667 countingStream->putBe64(cgen_var_248);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003668 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003669 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003670 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003671 }
3672 }
3673 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3674 countingStream->rewind();
3675 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3676 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3677 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003678 uint64_t cgen_var_249;
3679 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_249, 1);
3680 stream->write((uint64_t*)&cgen_var_249, 1 * 8);
3681 uint64_t cgen_var_250;
3682 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_250, 1);
3683 stream->write((uint64_t*)&cgen_var_250, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003684 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003685 uint64_t cgen_var_251 = (uint64_t)(uintptr_t)local_pAllocator;
3686 stream->putBe64(cgen_var_251);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003687 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003688 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003689 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003690 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003691 AEMU_SCOPED_TRACE("vkDestroyBuffer readParams");
3692 AEMU_SCOPED_TRACE("vkDestroyBuffer returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003693 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003694 mImpl->log("finish vkDestroyBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003695}
3696
3697VkResult VkEncoder::vkCreateBufferView(
3698 VkDevice device,
3699 const VkBufferViewCreateInfo* pCreateInfo,
3700 const VkAllocationCallbacks* pAllocator,
3701 VkBufferView* pView)
3702{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003703 AEMU_SCOPED_TRACE("vkCreateBufferView encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003704 mImpl->log("start vkCreateBufferView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003705 auto stream = mImpl->stream();
3706 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003707 auto resources = mImpl->resources();
3708 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003709 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003710 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003711 VkBufferViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003712 VkAllocationCallbacks* local_pAllocator;
3713 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003714 local_pCreateInfo = nullptr;
3715 if (pCreateInfo)
3716 {
3717 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3718 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3719 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003720 local_pAllocator = nullptr;
3721 if (pAllocator)
3722 {
3723 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3724 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3725 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003726 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003727 if (local_pCreateInfo)
3728 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003729 transform_tohost_VkBufferViewCreateInfo(mImpl->resources(), (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003730 }
3731 if (local_pAllocator)
3732 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003733 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003734 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003735 countingStream->rewind();
3736 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003737 uint64_t cgen_var_252;
3738 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_252, 1);
3739 countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003740 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003741 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003742 uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3743 countingStream->putBe64(cgen_var_253);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003744 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003745 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003746 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003747 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003748 uint64_t cgen_var_254;
3749 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_254, 1);
3750 countingStream->write((uint64_t*)&cgen_var_254, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003751 }
3752 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3753 countingStream->rewind();
3754 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3755 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3756 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003757 uint64_t cgen_var_255;
3758 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_255, 1);
3759 stream->write((uint64_t*)&cgen_var_255, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003760 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003761 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003762 uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3763 stream->putBe64(cgen_var_256);
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(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003767 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003768 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003769 uint64_t cgen_var_257;
3770 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_257, 1);
3771 stream->write((uint64_t*)&cgen_var_257, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003772 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003773 AEMU_SCOPED_TRACE("vkCreateBufferView readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08003774 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003775 uint64_t cgen_var_258;
3776 stream->read((uint64_t*)&cgen_var_258, 8);
3777 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_258, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003778 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003779 AEMU_SCOPED_TRACE("vkCreateBufferView returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003780 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3781 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003782 countingStream->clearPool();
3783 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003784 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003785 mImpl->log("finish vkCreateBufferView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003786 return vkCreateBufferView_VkResult_return;
3787}
3788
3789void VkEncoder::vkDestroyBufferView(
3790 VkDevice device,
3791 VkBufferView bufferView,
3792 const VkAllocationCallbacks* pAllocator)
3793{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003794 AEMU_SCOPED_TRACE("vkDestroyBufferView encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003795 mImpl->log("start vkDestroyBufferView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003796 auto stream = mImpl->stream();
3797 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003798 auto resources = mImpl->resources();
3799 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003800 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003801 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003802 VkBufferView local_bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003803 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003804 local_device = device;
3805 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003806 local_pAllocator = nullptr;
3807 if (pAllocator)
3808 {
3809 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3810 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3811 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003812 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003813 if (local_pAllocator)
3814 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003815 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003816 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003817 countingStream->rewind();
3818 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003819 uint64_t cgen_var_259;
3820 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_259, 1);
3821 countingStream->write((uint64_t*)&cgen_var_259, 1 * 8);
3822 uint64_t cgen_var_260;
3823 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_260, 1);
3824 countingStream->write((uint64_t*)&cgen_var_260, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003825 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003826 uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
3827 countingStream->putBe64(cgen_var_261);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003828 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003829 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003830 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003831 }
3832 }
3833 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3834 countingStream->rewind();
3835 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3836 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3837 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003838 uint64_t cgen_var_262;
3839 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_262, 1);
3840 stream->write((uint64_t*)&cgen_var_262, 1 * 8);
3841 uint64_t cgen_var_263;
3842 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_263, 1);
3843 stream->write((uint64_t*)&cgen_var_263, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003844 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003845 uint64_t cgen_var_264 = (uint64_t)(uintptr_t)local_pAllocator;
3846 stream->putBe64(cgen_var_264);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003847 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003848 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003849 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003850 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003851 AEMU_SCOPED_TRACE("vkDestroyBufferView readParams");
3852 AEMU_SCOPED_TRACE("vkDestroyBufferView returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003853 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003854 mImpl->log("finish vkDestroyBufferView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003855}
3856
3857VkResult VkEncoder::vkCreateImage(
3858 VkDevice device,
3859 const VkImageCreateInfo* pCreateInfo,
3860 const VkAllocationCallbacks* pAllocator,
3861 VkImage* pImage)
3862{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003863 AEMU_SCOPED_TRACE("vkCreateImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003864 mImpl->log("start vkCreateImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003865 auto stream = mImpl->stream();
3866 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003867 auto resources = mImpl->resources();
3868 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003869 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003870 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003871 VkImageCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003872 VkAllocationCallbacks* local_pAllocator;
3873 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003874 local_pCreateInfo = nullptr;
3875 if (pCreateInfo)
3876 {
3877 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3878 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3879 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003880 local_pAllocator = nullptr;
3881 if (pAllocator)
3882 {
3883 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3884 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3885 }
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08003886 mImpl->resources()->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003887 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003888 if (local_pCreateInfo)
3889 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003890 transform_tohost_VkImageCreateInfo(mImpl->resources(), (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003891 }
3892 if (local_pAllocator)
3893 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003894 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003895 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003896 countingStream->rewind();
3897 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003898 uint64_t cgen_var_265;
3899 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_265, 1);
3900 countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003901 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003902 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003903 uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3904 countingStream->putBe64(cgen_var_266);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003905 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003906 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003907 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003908 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003909 uint64_t cgen_var_267;
3910 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_267, 1);
3911 countingStream->write((uint64_t*)&cgen_var_267, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003912 }
3913 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3914 countingStream->rewind();
3915 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3916 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3917 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003918 uint64_t cgen_var_268;
3919 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_268, 1);
3920 stream->write((uint64_t*)&cgen_var_268, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003921 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003922 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003923 uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3924 stream->putBe64(cgen_var_269);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003925 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003926 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003927 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003928 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003929 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003930 uint64_t cgen_var_270;
3931 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_270, 1);
3932 stream->write((uint64_t*)&cgen_var_270, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003933 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003934 AEMU_SCOPED_TRACE("vkCreateImage readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08003935 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003936 uint64_t cgen_var_271;
3937 stream->read((uint64_t*)&cgen_var_271, 8);
3938 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_271, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003939 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003940 AEMU_SCOPED_TRACE("vkCreateImage returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003941 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3942 stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003943 countingStream->clearPool();
3944 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003945 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003946 mImpl->log("finish vkCreateImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003947 return vkCreateImage_VkResult_return;
3948}
3949
3950void VkEncoder::vkDestroyImage(
3951 VkDevice device,
3952 VkImage image,
3953 const VkAllocationCallbacks* pAllocator)
3954{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003955 AEMU_SCOPED_TRACE("vkDestroyImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003956 mImpl->log("start vkDestroyImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003957 auto stream = mImpl->stream();
3958 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003959 auto resources = mImpl->resources();
3960 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003961 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003962 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003963 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003964 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003965 local_device = device;
3966 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003967 local_pAllocator = nullptr;
3968 if (pAllocator)
3969 {
3970 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3971 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3972 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003973 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003974 if (local_pAllocator)
3975 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003976 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003977 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003978 countingStream->rewind();
3979 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003980 uint64_t cgen_var_272;
3981 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3982 countingStream->write((uint64_t*)&cgen_var_272, 1 * 8);
3983 uint64_t cgen_var_273;
3984 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3985 countingStream->write((uint64_t*)&cgen_var_273, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003986 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003987 uint64_t cgen_var_274 = (uint64_t)(uintptr_t)local_pAllocator;
3988 countingStream->putBe64(cgen_var_274);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003989 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003990 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003991 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003992 }
3993 }
3994 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3995 countingStream->rewind();
3996 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3997 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3998 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08003999 uint64_t cgen_var_275;
4000 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_275, 1);
4001 stream->write((uint64_t*)&cgen_var_275, 1 * 8);
4002 uint64_t cgen_var_276;
4003 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_276, 1);
4004 stream->write((uint64_t*)&cgen_var_276, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004005 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004006 uint64_t cgen_var_277 = (uint64_t)(uintptr_t)local_pAllocator;
4007 stream->putBe64(cgen_var_277);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004008 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004009 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004010 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004011 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004012 AEMU_SCOPED_TRACE("vkDestroyImage readParams");
4013 AEMU_SCOPED_TRACE("vkDestroyImage returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004014 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004015 mImpl->log("finish vkDestroyImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004016}
4017
4018void VkEncoder::vkGetImageSubresourceLayout(
4019 VkDevice device,
4020 VkImage image,
4021 const VkImageSubresource* pSubresource,
4022 VkSubresourceLayout* pLayout)
4023{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004024 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004025 mImpl->log("start vkGetImageSubresourceLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004026 auto stream = mImpl->stream();
4027 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004028 auto resources = mImpl->resources();
4029 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004030 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004031 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004032 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004033 VkImageSubresource* local_pSubresource;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004034 local_device = device;
4035 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004036 local_pSubresource = nullptr;
4037 if (pSubresource)
4038 {
4039 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
4040 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
4041 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08004042 if (local_pSubresource)
4043 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004044 transform_tohost_VkImageSubresource(mImpl->resources(), (VkImageSubresource*)(local_pSubresource));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004045 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004046 countingStream->rewind();
4047 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004048 uint64_t cgen_var_278;
4049 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_278, 1);
4050 countingStream->write((uint64_t*)&cgen_var_278, 1 * 8);
4051 uint64_t cgen_var_279;
4052 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_279, 1);
4053 countingStream->write((uint64_t*)&cgen_var_279, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004054 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004055 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
4056 }
4057 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4058 countingStream->rewind();
4059 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
4060 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
4061 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004062 uint64_t cgen_var_280;
4063 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_280, 1);
4064 stream->write((uint64_t*)&cgen_var_280, 1 * 8);
4065 uint64_t cgen_var_281;
4066 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_281, 1);
4067 stream->write((uint64_t*)&cgen_var_281, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004068 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004069 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004070 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004071 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
Lingfeng Yang97a06702018-12-24 17:02:43 -08004072 if (pLayout)
4073 {
4074 transform_fromhost_VkSubresourceLayout(mImpl->resources(), (VkSubresourceLayout*)(pLayout));
4075 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004076 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004077 mImpl->log("finish vkGetImageSubresourceLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004078}
4079
4080VkResult VkEncoder::vkCreateImageView(
4081 VkDevice device,
4082 const VkImageViewCreateInfo* pCreateInfo,
4083 const VkAllocationCallbacks* pAllocator,
4084 VkImageView* pView)
4085{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004086 AEMU_SCOPED_TRACE("vkCreateImageView encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004087 mImpl->log("start vkCreateImageView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004088 auto stream = mImpl->stream();
4089 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004090 auto resources = mImpl->resources();
4091 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004092 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004093 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004094 VkImageViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004095 VkAllocationCallbacks* local_pAllocator;
4096 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004097 local_pCreateInfo = nullptr;
4098 if (pCreateInfo)
4099 {
4100 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
4101 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
4102 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004103 local_pAllocator = nullptr;
4104 if (pAllocator)
4105 {
4106 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4107 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4108 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004109 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004110 if (local_pCreateInfo)
4111 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004112 transform_tohost_VkImageViewCreateInfo(mImpl->resources(), (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004113 }
4114 if (local_pAllocator)
4115 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004116 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004117 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004118 countingStream->rewind();
4119 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004120 uint64_t cgen_var_282;
4121 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_282, 1);
4122 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004123 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004124 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004125 uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
4126 countingStream->putBe64(cgen_var_283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004127 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004128 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004129 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004130 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004131 uint64_t cgen_var_284;
4132 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_284, 1);
4133 countingStream->write((uint64_t*)&cgen_var_284, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004134 }
4135 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4136 countingStream->rewind();
4137 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
4138 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
4139 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004140 uint64_t cgen_var_285;
4141 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_285, 1);
4142 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004143 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004144 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004145 uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
4146 stream->putBe64(cgen_var_286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004147 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004148 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004149 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004150 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004151 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004152 uint64_t cgen_var_287;
4153 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_287, 1);
4154 stream->write((uint64_t*)&cgen_var_287, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004155 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004156 AEMU_SCOPED_TRACE("vkCreateImageView readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08004157 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004158 uint64_t cgen_var_288;
4159 stream->read((uint64_t*)&cgen_var_288, 8);
4160 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_288, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004161 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004162 AEMU_SCOPED_TRACE("vkCreateImageView returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004163 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
4164 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004165 countingStream->clearPool();
4166 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004167 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004168 mImpl->log("finish vkCreateImageView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004169 return vkCreateImageView_VkResult_return;
4170}
4171
4172void VkEncoder::vkDestroyImageView(
4173 VkDevice device,
4174 VkImageView imageView,
4175 const VkAllocationCallbacks* pAllocator)
4176{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004177 AEMU_SCOPED_TRACE("vkDestroyImageView encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004178 mImpl->log("start vkDestroyImageView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004179 auto stream = mImpl->stream();
4180 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004181 auto resources = mImpl->resources();
4182 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004183 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004184 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004185 VkImageView local_imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004186 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004187 local_device = device;
4188 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004189 local_pAllocator = nullptr;
4190 if (pAllocator)
4191 {
4192 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4193 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4194 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004195 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004196 if (local_pAllocator)
4197 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004198 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004199 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004200 countingStream->rewind();
4201 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004202 uint64_t cgen_var_289;
4203 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_289, 1);
4204 countingStream->write((uint64_t*)&cgen_var_289, 1 * 8);
4205 uint64_t cgen_var_290;
4206 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_290, 1);
4207 countingStream->write((uint64_t*)&cgen_var_290, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004208 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004209 uint64_t cgen_var_291 = (uint64_t)(uintptr_t)local_pAllocator;
4210 countingStream->putBe64(cgen_var_291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004211 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004212 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004213 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004214 }
4215 }
4216 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4217 countingStream->rewind();
4218 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
4219 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
4220 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004221 uint64_t cgen_var_292;
4222 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_292, 1);
4223 stream->write((uint64_t*)&cgen_var_292, 1 * 8);
4224 uint64_t cgen_var_293;
4225 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_293, 1);
4226 stream->write((uint64_t*)&cgen_var_293, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004227 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004228 uint64_t cgen_var_294 = (uint64_t)(uintptr_t)local_pAllocator;
4229 stream->putBe64(cgen_var_294);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004230 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004231 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004232 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004233 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004234 AEMU_SCOPED_TRACE("vkDestroyImageView readParams");
4235 AEMU_SCOPED_TRACE("vkDestroyImageView returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004236 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004237 mImpl->log("finish vkDestroyImageView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004238}
4239
4240VkResult VkEncoder::vkCreateShaderModule(
4241 VkDevice device,
4242 const VkShaderModuleCreateInfo* pCreateInfo,
4243 const VkAllocationCallbacks* pAllocator,
4244 VkShaderModule* pShaderModule)
4245{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004246 AEMU_SCOPED_TRACE("vkCreateShaderModule encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004247 mImpl->log("start vkCreateShaderModule");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004248 auto stream = mImpl->stream();
4249 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004250 auto resources = mImpl->resources();
4251 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004252 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004253 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004254 VkShaderModuleCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004255 VkAllocationCallbacks* local_pAllocator;
4256 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004257 local_pCreateInfo = nullptr;
4258 if (pCreateInfo)
4259 {
4260 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
4261 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
4262 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004263 local_pAllocator = nullptr;
4264 if (pAllocator)
4265 {
4266 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4267 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4268 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004269 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004270 if (local_pCreateInfo)
4271 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004272 transform_tohost_VkShaderModuleCreateInfo(mImpl->resources(), (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004273 }
4274 if (local_pAllocator)
4275 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004276 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004277 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004278 countingStream->rewind();
4279 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004280 uint64_t cgen_var_295;
4281 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_295, 1);
4282 countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004283 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004284 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004285 uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
4286 countingStream->putBe64(cgen_var_296);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004287 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004288 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004289 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004290 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004291 uint64_t cgen_var_297;
4292 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_297, 1);
4293 countingStream->write((uint64_t*)&cgen_var_297, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004294 }
4295 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4296 countingStream->rewind();
4297 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
4298 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
4299 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004300 uint64_t cgen_var_298;
4301 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_298, 1);
4302 stream->write((uint64_t*)&cgen_var_298, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004303 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004304 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004305 uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
4306 stream->putBe64(cgen_var_299);
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 Yange4008a02018-11-18 12:22:48 -08004311 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004312 uint64_t cgen_var_300;
4313 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_300, 1);
4314 stream->write((uint64_t*)&cgen_var_300, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004315 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004316 AEMU_SCOPED_TRACE("vkCreateShaderModule readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08004317 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004318 uint64_t cgen_var_301;
4319 stream->read((uint64_t*)&cgen_var_301, 8);
4320 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_301, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004321 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004322 AEMU_SCOPED_TRACE("vkCreateShaderModule returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004323 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
4324 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004325 countingStream->clearPool();
4326 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004327 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004328 mImpl->log("finish vkCreateShaderModule");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004329 return vkCreateShaderModule_VkResult_return;
4330}
4331
4332void VkEncoder::vkDestroyShaderModule(
4333 VkDevice device,
4334 VkShaderModule shaderModule,
4335 const VkAllocationCallbacks* pAllocator)
4336{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004337 AEMU_SCOPED_TRACE("vkDestroyShaderModule encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004338 mImpl->log("start vkDestroyShaderModule");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004339 auto stream = mImpl->stream();
4340 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004341 auto resources = mImpl->resources();
4342 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004343 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004344 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004345 VkShaderModule local_shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004346 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004347 local_device = device;
4348 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004349 local_pAllocator = nullptr;
4350 if (pAllocator)
4351 {
4352 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4353 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4354 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004355 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004356 if (local_pAllocator)
4357 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004358 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004359 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004360 countingStream->rewind();
4361 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004362 uint64_t cgen_var_302;
4363 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_302, 1);
4364 countingStream->write((uint64_t*)&cgen_var_302, 1 * 8);
4365 uint64_t cgen_var_303;
4366 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_303, 1);
4367 countingStream->write((uint64_t*)&cgen_var_303, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004368 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004369 uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
4370 countingStream->putBe64(cgen_var_304);
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(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004374 }
4375 }
4376 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4377 countingStream->rewind();
4378 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
4379 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
4380 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004381 uint64_t cgen_var_305;
4382 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_305, 1);
4383 stream->write((uint64_t*)&cgen_var_305, 1 * 8);
4384 uint64_t cgen_var_306;
4385 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_306, 1);
4386 stream->write((uint64_t*)&cgen_var_306, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004387 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004388 uint64_t cgen_var_307 = (uint64_t)(uintptr_t)local_pAllocator;
4389 stream->putBe64(cgen_var_307);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004390 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004391 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004392 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004393 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004394 AEMU_SCOPED_TRACE("vkDestroyShaderModule readParams");
4395 AEMU_SCOPED_TRACE("vkDestroyShaderModule returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004396 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004397 mImpl->log("finish vkDestroyShaderModule");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004398}
4399
4400VkResult VkEncoder::vkCreatePipelineCache(
4401 VkDevice device,
4402 const VkPipelineCacheCreateInfo* pCreateInfo,
4403 const VkAllocationCallbacks* pAllocator,
4404 VkPipelineCache* pPipelineCache)
4405{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004406 AEMU_SCOPED_TRACE("vkCreatePipelineCache encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004407 mImpl->log("start vkCreatePipelineCache");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004408 auto stream = mImpl->stream();
4409 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004410 auto resources = mImpl->resources();
4411 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004412 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004413 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004414 VkPipelineCacheCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004415 VkAllocationCallbacks* local_pAllocator;
4416 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004417 local_pCreateInfo = nullptr;
4418 if (pCreateInfo)
4419 {
4420 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
4421 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
4422 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004423 local_pAllocator = nullptr;
4424 if (pAllocator)
4425 {
4426 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4427 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4428 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004429 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004430 if (local_pCreateInfo)
4431 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004432 transform_tohost_VkPipelineCacheCreateInfo(mImpl->resources(), (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004433 }
4434 if (local_pAllocator)
4435 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004436 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004437 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004438 countingStream->rewind();
4439 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004440 uint64_t cgen_var_308;
4441 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_308, 1);
4442 countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004443 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004444 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004445 uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
4446 countingStream->putBe64(cgen_var_309);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004447 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004448 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004449 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004450 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004451 uint64_t cgen_var_310;
4452 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_310, 1);
4453 countingStream->write((uint64_t*)&cgen_var_310, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004454 }
4455 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4456 countingStream->rewind();
4457 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
4458 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
4459 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004460 uint64_t cgen_var_311;
4461 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_311, 1);
4462 stream->write((uint64_t*)&cgen_var_311, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004463 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004464 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004465 uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
4466 stream->putBe64(cgen_var_312);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004467 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004468 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004469 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004470 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004471 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004472 uint64_t cgen_var_313;
4473 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_313, 1);
4474 stream->write((uint64_t*)&cgen_var_313, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004475 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004476 AEMU_SCOPED_TRACE("vkCreatePipelineCache readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08004477 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004478 uint64_t cgen_var_314;
4479 stream->read((uint64_t*)&cgen_var_314, 8);
4480 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_314, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004481 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004482 AEMU_SCOPED_TRACE("vkCreatePipelineCache returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004483 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
4484 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004485 countingStream->clearPool();
4486 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004487 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004488 mImpl->log("finish vkCreatePipelineCache");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004489 return vkCreatePipelineCache_VkResult_return;
4490}
4491
4492void VkEncoder::vkDestroyPipelineCache(
4493 VkDevice device,
4494 VkPipelineCache pipelineCache,
4495 const VkAllocationCallbacks* pAllocator)
4496{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004497 AEMU_SCOPED_TRACE("vkDestroyPipelineCache encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004498 mImpl->log("start vkDestroyPipelineCache");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004499 auto stream = mImpl->stream();
4500 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004501 auto resources = mImpl->resources();
4502 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004503 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004504 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004505 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004506 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004507 local_device = device;
4508 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004509 local_pAllocator = nullptr;
4510 if (pAllocator)
4511 {
4512 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4513 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4514 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004515 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004516 if (local_pAllocator)
4517 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004518 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004519 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004520 countingStream->rewind();
4521 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004522 uint64_t cgen_var_315;
4523 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_315, 1);
4524 countingStream->write((uint64_t*)&cgen_var_315, 1 * 8);
4525 uint64_t cgen_var_316;
4526 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_316, 1);
4527 countingStream->write((uint64_t*)&cgen_var_316, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004528 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004529 uint64_t cgen_var_317 = (uint64_t)(uintptr_t)local_pAllocator;
4530 countingStream->putBe64(cgen_var_317);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004531 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004532 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004533 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004534 }
4535 }
4536 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4537 countingStream->rewind();
4538 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
4539 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
4540 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004541 uint64_t cgen_var_318;
4542 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
4543 stream->write((uint64_t*)&cgen_var_318, 1 * 8);
4544 uint64_t cgen_var_319;
4545 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
4546 stream->write((uint64_t*)&cgen_var_319, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004547 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004548 uint64_t cgen_var_320 = (uint64_t)(uintptr_t)local_pAllocator;
4549 stream->putBe64(cgen_var_320);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004550 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004551 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004552 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004553 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004554 AEMU_SCOPED_TRACE("vkDestroyPipelineCache readParams");
4555 AEMU_SCOPED_TRACE("vkDestroyPipelineCache returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004556 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004557 mImpl->log("finish vkDestroyPipelineCache");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004558}
4559
4560VkResult VkEncoder::vkGetPipelineCacheData(
4561 VkDevice device,
4562 VkPipelineCache pipelineCache,
4563 size_t* pDataSize,
4564 void* pData)
4565{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004566 AEMU_SCOPED_TRACE("vkGetPipelineCacheData encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004567 mImpl->log("start vkGetPipelineCacheData");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004568 auto stream = mImpl->stream();
4569 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004570 auto resources = mImpl->resources();
4571 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004572 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004573 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004574 VkPipelineCache local_pipelineCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004575 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004576 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004577 countingStream->rewind();
4578 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004579 uint64_t cgen_var_321;
4580 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_321, 1);
4581 countingStream->write((uint64_t*)&cgen_var_321, 1 * 8);
4582 uint64_t cgen_var_322;
4583 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_322, 1);
4584 countingStream->write((uint64_t*)&cgen_var_322, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004585 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004586 uint64_t cgen_var_323 = (uint64_t)(uintptr_t)pDataSize;
4587 countingStream->putBe64(cgen_var_323);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004588 if (pDataSize)
4589 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004590 uint64_t cgen_var_324 = (uint64_t)(*pDataSize);
4591 countingStream->putBe64(cgen_var_324);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004592 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004593 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004594 uint64_t cgen_var_325 = (uint64_t)(uintptr_t)pData;
4595 countingStream->putBe64(cgen_var_325);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004596 if (pData)
4597 {
4598 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4599 }
4600 }
4601 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4602 countingStream->rewind();
4603 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
4604 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
4605 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004606 uint64_t cgen_var_326;
4607 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
4608 stream->write((uint64_t*)&cgen_var_326, 1 * 8);
4609 uint64_t cgen_var_327;
4610 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_327, 1);
4611 stream->write((uint64_t*)&cgen_var_327, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004612 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004613 uint64_t cgen_var_328 = (uint64_t)(uintptr_t)pDataSize;
4614 stream->putBe64(cgen_var_328);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004615 if (pDataSize)
4616 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004617 uint64_t cgen_var_329 = (uint64_t)(*pDataSize);
4618 stream->putBe64(cgen_var_329);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004619 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004620 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004621 uint64_t cgen_var_330 = (uint64_t)(uintptr_t)pData;
4622 stream->putBe64(cgen_var_330);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004623 if (pData)
4624 {
4625 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4626 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004627 AEMU_SCOPED_TRACE("vkGetPipelineCacheData readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004628 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004629 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004630 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004631 if (pDataSize)
4632 {
4633 if (!(check_pDataSize))
4634 {
4635 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
4636 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004637 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004638 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004639 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004640 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004641 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004642 if (pData)
4643 {
4644 if (!(check_pData))
4645 {
4646 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
4647 }
4648 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4649 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004650 AEMU_SCOPED_TRACE("vkGetPipelineCacheData returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004651 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
4652 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004653 countingStream->clearPool();
4654 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004655 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004656 mImpl->log("finish vkGetPipelineCacheData");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004657 return vkGetPipelineCacheData_VkResult_return;
4658}
4659
4660VkResult VkEncoder::vkMergePipelineCaches(
4661 VkDevice device,
4662 VkPipelineCache dstCache,
4663 uint32_t srcCacheCount,
4664 const VkPipelineCache* pSrcCaches)
4665{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004666 AEMU_SCOPED_TRACE("vkMergePipelineCaches encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004667 mImpl->log("start vkMergePipelineCaches");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004668 auto stream = mImpl->stream();
4669 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004670 auto resources = mImpl->resources();
4671 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004672 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004673 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004674 VkPipelineCache local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004675 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004676 VkPipelineCache* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004677 local_device = device;
4678 local_dstCache = dstCache;
4679 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004680 local_pSrcCaches = nullptr;
4681 if (pSrcCaches)
4682 {
4683 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
4684 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004685 countingStream->rewind();
4686 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004687 uint64_t cgen_var_334;
4688 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_334, 1);
4689 countingStream->write((uint64_t*)&cgen_var_334, 1 * 8);
4690 uint64_t cgen_var_335;
4691 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_335, 1);
4692 countingStream->write((uint64_t*)&cgen_var_335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004693 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004694 if (((srcCacheCount)))
4695 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004696 uint64_t* cgen_var_336;
4697 countingStream->alloc((void**)&cgen_var_336, ((srcCacheCount)) * 8);
4698 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_336, ((srcCacheCount)));
4699 countingStream->write((uint64_t*)cgen_var_336, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004700 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004701 }
4702 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4703 countingStream->rewind();
4704 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4705 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4706 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004707 uint64_t cgen_var_337;
4708 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_337, 1);
4709 stream->write((uint64_t*)&cgen_var_337, 1 * 8);
4710 uint64_t cgen_var_338;
4711 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_338, 1);
4712 stream->write((uint64_t*)&cgen_var_338, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004713 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004714 if (((srcCacheCount)))
4715 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004716 uint64_t* cgen_var_339;
4717 stream->alloc((void**)&cgen_var_339, ((srcCacheCount)) * 8);
4718 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_339, ((srcCacheCount)));
4719 stream->write((uint64_t*)cgen_var_339, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004720 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004721 AEMU_SCOPED_TRACE("vkMergePipelineCaches readParams");
4722 AEMU_SCOPED_TRACE("vkMergePipelineCaches returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004723 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4724 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004725 countingStream->clearPool();
4726 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004727 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004728 mImpl->log("finish vkMergePipelineCaches");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004729 return vkMergePipelineCaches_VkResult_return;
4730}
4731
4732VkResult VkEncoder::vkCreateGraphicsPipelines(
4733 VkDevice device,
4734 VkPipelineCache pipelineCache,
4735 uint32_t createInfoCount,
4736 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4737 const VkAllocationCallbacks* pAllocator,
4738 VkPipeline* pPipelines)
4739{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004740 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004741 mImpl->log("start vkCreateGraphicsPipelines");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004742 auto stream = mImpl->stream();
4743 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004744 auto resources = mImpl->resources();
4745 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004746 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004747 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004748 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004749 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004750 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004751 VkAllocationCallbacks* local_pAllocator;
4752 local_device = device;
4753 local_pipelineCache = pipelineCache;
4754 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004755 local_pCreateInfos = nullptr;
4756 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004757 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004758 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004759 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4760 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004761 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004762 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004763 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004764 local_pAllocator = nullptr;
4765 if (pAllocator)
4766 {
4767 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4768 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4769 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004770 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004771 if (local_pCreateInfos)
4772 {
4773 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4774 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004775 transform_tohost_VkGraphicsPipelineCreateInfo(mImpl->resources(), (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004776 }
4777 }
4778 if (local_pAllocator)
4779 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004780 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004781 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004782 countingStream->rewind();
4783 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004784 uint64_t cgen_var_340;
4785 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_340, 1);
4786 countingStream->write((uint64_t*)&cgen_var_340, 1 * 8);
4787 uint64_t cgen_var_341;
4788 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_341, 1);
4789 countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004790 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4791 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4792 {
4793 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4794 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004795 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004796 uint64_t cgen_var_342 = (uint64_t)(uintptr_t)local_pAllocator;
4797 countingStream->putBe64(cgen_var_342);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004798 if (local_pAllocator)
4799 {
4800 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004801 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004802 if (((createInfoCount)))
4803 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004804 uint64_t* cgen_var_343;
4805 countingStream->alloc((void**)&cgen_var_343, ((createInfoCount)) * 8);
4806 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_343, ((createInfoCount)));
4807 countingStream->write((uint64_t*)cgen_var_343, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004808 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004809 }
4810 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4811 countingStream->rewind();
4812 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4813 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4814 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004815 uint64_t cgen_var_344;
4816 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_344, 1);
4817 stream->write((uint64_t*)&cgen_var_344, 1 * 8);
4818 uint64_t cgen_var_345;
4819 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_345, 1);
4820 stream->write((uint64_t*)&cgen_var_345, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004821 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004822 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4823 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004824 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004825 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004826 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004827 uint64_t cgen_var_346 = (uint64_t)(uintptr_t)local_pAllocator;
4828 stream->putBe64(cgen_var_346);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004829 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004830 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004831 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004832 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004833 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004834 if (((createInfoCount)))
4835 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004836 uint64_t* cgen_var_347;
4837 stream->alloc((void**)&cgen_var_347, ((createInfoCount)) * 8);
4838 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_347, ((createInfoCount)));
4839 stream->write((uint64_t*)cgen_var_347, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004840 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004841 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004842 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08004843 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004844 if (((createInfoCount)))
4845 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004846 uint64_t* cgen_var_348;
4847 stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4848 stream->read((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
4849 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_348, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004850 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004851 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004852 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004853 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4854 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004855 countingStream->clearPool();
4856 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004857 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004858 mImpl->log("finish vkCreateGraphicsPipelines");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004859 return vkCreateGraphicsPipelines_VkResult_return;
4860}
4861
4862VkResult VkEncoder::vkCreateComputePipelines(
4863 VkDevice device,
4864 VkPipelineCache pipelineCache,
4865 uint32_t createInfoCount,
4866 const VkComputePipelineCreateInfo* pCreateInfos,
4867 const VkAllocationCallbacks* pAllocator,
4868 VkPipeline* pPipelines)
4869{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004870 AEMU_SCOPED_TRACE("vkCreateComputePipelines encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004871 mImpl->log("start vkCreateComputePipelines");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004872 auto stream = mImpl->stream();
4873 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004874 auto resources = mImpl->resources();
4875 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004876 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004877 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004878 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004879 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004880 VkComputePipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004881 VkAllocationCallbacks* local_pAllocator;
4882 local_device = device;
4883 local_pipelineCache = pipelineCache;
4884 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004885 local_pCreateInfos = nullptr;
4886 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004887 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004888 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004889 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4890 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004891 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004892 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004893 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004894 local_pAllocator = nullptr;
4895 if (pAllocator)
4896 {
4897 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4898 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4899 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004900 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004901 if (local_pCreateInfos)
4902 {
4903 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4904 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004905 transform_tohost_VkComputePipelineCreateInfo(mImpl->resources(), (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004906 }
4907 }
4908 if (local_pAllocator)
4909 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004910 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004911 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004912 countingStream->rewind();
4913 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004914 uint64_t cgen_var_349;
4915 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_349, 1);
4916 countingStream->write((uint64_t*)&cgen_var_349, 1 * 8);
4917 uint64_t cgen_var_350;
4918 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_350, 1);
4919 countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004920 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4921 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4922 {
4923 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4924 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004925 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004926 uint64_t cgen_var_351 = (uint64_t)(uintptr_t)local_pAllocator;
4927 countingStream->putBe64(cgen_var_351);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004928 if (local_pAllocator)
4929 {
4930 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004931 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004932 if (((createInfoCount)))
4933 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004934 uint64_t* cgen_var_352;
4935 countingStream->alloc((void**)&cgen_var_352, ((createInfoCount)) * 8);
4936 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_352, ((createInfoCount)));
4937 countingStream->write((uint64_t*)cgen_var_352, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004938 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004939 }
4940 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4941 countingStream->rewind();
4942 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4943 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4944 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004945 uint64_t cgen_var_353;
4946 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4947 stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4948 uint64_t cgen_var_354;
4949 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_354, 1);
4950 stream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004951 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004952 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4953 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004954 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004955 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004956 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004957 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4958 stream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004959 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004960 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004961 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004962 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004963 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004964 if (((createInfoCount)))
4965 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004966 uint64_t* cgen_var_356;
4967 stream->alloc((void**)&cgen_var_356, ((createInfoCount)) * 8);
4968 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_356, ((createInfoCount)));
4969 stream->write((uint64_t*)cgen_var_356, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004970 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004971 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004972 AEMU_SCOPED_TRACE("vkCreateComputePipelines readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08004973 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004974 if (((createInfoCount)))
4975 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08004976 uint64_t* cgen_var_357;
4977 stream->alloc((void**)&cgen_var_357, ((createInfoCount)) * 8);
4978 stream->read((uint64_t*)cgen_var_357, ((createInfoCount)) * 8);
4979 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_357, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004980 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004981 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004982 AEMU_SCOPED_TRACE("vkCreateComputePipelines returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004983 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4984 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004985 countingStream->clearPool();
4986 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004987 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004988 mImpl->log("finish vkCreateComputePipelines");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004989 return vkCreateComputePipelines_VkResult_return;
4990}
4991
4992void VkEncoder::vkDestroyPipeline(
4993 VkDevice device,
4994 VkPipeline pipeline,
4995 const VkAllocationCallbacks* pAllocator)
4996{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004997 AEMU_SCOPED_TRACE("vkDestroyPipeline encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004998 mImpl->log("start vkDestroyPipeline");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004999 auto stream = mImpl->stream();
5000 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005001 auto resources = mImpl->resources();
5002 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005003 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005004 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005005 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005006 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005007 local_device = device;
5008 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005009 local_pAllocator = nullptr;
5010 if (pAllocator)
5011 {
5012 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5013 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5014 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005015 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005016 if (local_pAllocator)
5017 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005018 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005019 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005020 countingStream->rewind();
5021 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005022 uint64_t cgen_var_358;
5023 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_358, 1);
5024 countingStream->write((uint64_t*)&cgen_var_358, 1 * 8);
5025 uint64_t cgen_var_359;
5026 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_359, 1);
5027 countingStream->write((uint64_t*)&cgen_var_359, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005028 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005029 uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
5030 countingStream->putBe64(cgen_var_360);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005031 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005032 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005033 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005034 }
5035 }
5036 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5037 countingStream->rewind();
5038 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
5039 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
5040 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005041 uint64_t cgen_var_361;
5042 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_361, 1);
5043 stream->write((uint64_t*)&cgen_var_361, 1 * 8);
5044 uint64_t cgen_var_362;
5045 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_362, 1);
5046 stream->write((uint64_t*)&cgen_var_362, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005047 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005048 uint64_t cgen_var_363 = (uint64_t)(uintptr_t)local_pAllocator;
5049 stream->putBe64(cgen_var_363);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005050 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005051 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005052 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005053 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005054 AEMU_SCOPED_TRACE("vkDestroyPipeline readParams");
5055 AEMU_SCOPED_TRACE("vkDestroyPipeline returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005056 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005057 mImpl->log("finish vkDestroyPipeline");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005058}
5059
5060VkResult VkEncoder::vkCreatePipelineLayout(
5061 VkDevice device,
5062 const VkPipelineLayoutCreateInfo* pCreateInfo,
5063 const VkAllocationCallbacks* pAllocator,
5064 VkPipelineLayout* pPipelineLayout)
5065{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005066 AEMU_SCOPED_TRACE("vkCreatePipelineLayout encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005067 mImpl->log("start vkCreatePipelineLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005068 auto stream = mImpl->stream();
5069 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005070 auto resources = mImpl->resources();
5071 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005072 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005073 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005074 VkPipelineLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005075 VkAllocationCallbacks* local_pAllocator;
5076 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005077 local_pCreateInfo = nullptr;
5078 if (pCreateInfo)
5079 {
5080 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
5081 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
5082 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005083 local_pAllocator = nullptr;
5084 if (pAllocator)
5085 {
5086 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5087 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5088 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005089 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005090 if (local_pCreateInfo)
5091 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005092 transform_tohost_VkPipelineLayoutCreateInfo(mImpl->resources(), (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005093 }
5094 if (local_pAllocator)
5095 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005096 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005097 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005098 countingStream->rewind();
5099 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005100 uint64_t cgen_var_364;
5101 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_364, 1);
5102 countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005103 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005104 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005105 uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
5106 countingStream->putBe64(cgen_var_365);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005107 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005108 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005109 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005110 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005111 uint64_t cgen_var_366;
5112 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_366, 1);
5113 countingStream->write((uint64_t*)&cgen_var_366, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005114 }
5115 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5116 countingStream->rewind();
5117 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
5118 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
5119 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005120 uint64_t cgen_var_367;
5121 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_367, 1);
5122 stream->write((uint64_t*)&cgen_var_367, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005123 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005124 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005125 uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
5126 stream->putBe64(cgen_var_368);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005127 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005128 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005129 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005130 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005131 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005132 uint64_t cgen_var_369;
5133 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_369, 1);
5134 stream->write((uint64_t*)&cgen_var_369, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005135 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005136 AEMU_SCOPED_TRACE("vkCreatePipelineLayout readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08005137 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005138 uint64_t cgen_var_370;
5139 stream->read((uint64_t*)&cgen_var_370, 8);
5140 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_370, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005141 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005142 AEMU_SCOPED_TRACE("vkCreatePipelineLayout returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005143 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
5144 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005145 countingStream->clearPool();
5146 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005147 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005148 mImpl->log("finish vkCreatePipelineLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005149 return vkCreatePipelineLayout_VkResult_return;
5150}
5151
5152void VkEncoder::vkDestroyPipelineLayout(
5153 VkDevice device,
5154 VkPipelineLayout pipelineLayout,
5155 const VkAllocationCallbacks* pAllocator)
5156{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005157 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005158 mImpl->log("start vkDestroyPipelineLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005159 auto stream = mImpl->stream();
5160 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005161 auto resources = mImpl->resources();
5162 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005163 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005164 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005165 VkPipelineLayout local_pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005166 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005167 local_device = device;
5168 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005169 local_pAllocator = nullptr;
5170 if (pAllocator)
5171 {
5172 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5173 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5174 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005175 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005176 if (local_pAllocator)
5177 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005178 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005179 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005180 countingStream->rewind();
5181 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005182 uint64_t cgen_var_371;
5183 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_371, 1);
5184 countingStream->write((uint64_t*)&cgen_var_371, 1 * 8);
5185 uint64_t cgen_var_372;
5186 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_372, 1);
5187 countingStream->write((uint64_t*)&cgen_var_372, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005188 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005189 uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
5190 countingStream->putBe64(cgen_var_373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005191 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005192 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005193 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005194 }
5195 }
5196 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5197 countingStream->rewind();
5198 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
5199 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
5200 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005201 uint64_t cgen_var_374;
5202 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_374, 1);
5203 stream->write((uint64_t*)&cgen_var_374, 1 * 8);
5204 uint64_t cgen_var_375;
5205 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_375, 1);
5206 stream->write((uint64_t*)&cgen_var_375, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005207 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005208 uint64_t cgen_var_376 = (uint64_t)(uintptr_t)local_pAllocator;
5209 stream->putBe64(cgen_var_376);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005210 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005211 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005212 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005213 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005214 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout readParams");
5215 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005216 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005217 mImpl->log("finish vkDestroyPipelineLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005218}
5219
5220VkResult VkEncoder::vkCreateSampler(
5221 VkDevice device,
5222 const VkSamplerCreateInfo* pCreateInfo,
5223 const VkAllocationCallbacks* pAllocator,
5224 VkSampler* pSampler)
5225{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005226 AEMU_SCOPED_TRACE("vkCreateSampler encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005227 mImpl->log("start vkCreateSampler");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005228 auto stream = mImpl->stream();
5229 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005230 auto resources = mImpl->resources();
5231 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005232 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005233 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005234 VkSamplerCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005235 VkAllocationCallbacks* local_pAllocator;
5236 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005237 local_pCreateInfo = nullptr;
5238 if (pCreateInfo)
5239 {
5240 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
5241 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
5242 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005243 local_pAllocator = nullptr;
5244 if (pAllocator)
5245 {
5246 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5247 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5248 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005249 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005250 if (local_pCreateInfo)
5251 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005252 transform_tohost_VkSamplerCreateInfo(mImpl->resources(), (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005253 }
5254 if (local_pAllocator)
5255 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005256 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005257 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005258 countingStream->rewind();
5259 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005260 uint64_t cgen_var_377;
5261 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_377, 1);
5262 countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005263 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005264 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005265 uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
5266 countingStream->putBe64(cgen_var_378);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005267 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005268 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005269 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005270 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005271 uint64_t cgen_var_379;
5272 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_379, 1);
5273 countingStream->write((uint64_t*)&cgen_var_379, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005274 }
5275 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5276 countingStream->rewind();
5277 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
5278 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
5279 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005280 uint64_t cgen_var_380;
5281 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_380, 1);
5282 stream->write((uint64_t*)&cgen_var_380, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005283 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005284 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005285 uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
5286 stream->putBe64(cgen_var_381);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005287 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005288 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005289 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005290 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005291 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005292 uint64_t cgen_var_382;
5293 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_382, 1);
5294 stream->write((uint64_t*)&cgen_var_382, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005295 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005296 AEMU_SCOPED_TRACE("vkCreateSampler readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08005297 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005298 uint64_t cgen_var_383;
5299 stream->read((uint64_t*)&cgen_var_383, 8);
5300 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_383, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005301 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005302 AEMU_SCOPED_TRACE("vkCreateSampler returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005303 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
5304 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005305 countingStream->clearPool();
5306 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005307 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005308 mImpl->log("finish vkCreateSampler");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005309 return vkCreateSampler_VkResult_return;
5310}
5311
5312void VkEncoder::vkDestroySampler(
5313 VkDevice device,
5314 VkSampler sampler,
5315 const VkAllocationCallbacks* pAllocator)
5316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005317 AEMU_SCOPED_TRACE("vkDestroySampler encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005318 mImpl->log("start vkDestroySampler");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005319 auto stream = mImpl->stream();
5320 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005321 auto resources = mImpl->resources();
5322 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005323 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005324 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005325 VkSampler local_sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005326 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005327 local_device = device;
5328 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005329 local_pAllocator = nullptr;
5330 if (pAllocator)
5331 {
5332 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5333 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5334 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005335 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005336 if (local_pAllocator)
5337 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005338 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005339 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005340 countingStream->rewind();
5341 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005342 uint64_t cgen_var_384;
5343 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_384, 1);
5344 countingStream->write((uint64_t*)&cgen_var_384, 1 * 8);
5345 uint64_t cgen_var_385;
5346 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_385, 1);
5347 countingStream->write((uint64_t*)&cgen_var_385, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005348 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005349 uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
5350 countingStream->putBe64(cgen_var_386);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005351 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005352 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005353 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005354 }
5355 }
5356 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5357 countingStream->rewind();
5358 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
5359 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
5360 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005361 uint64_t cgen_var_387;
5362 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_387, 1);
5363 stream->write((uint64_t*)&cgen_var_387, 1 * 8);
5364 uint64_t cgen_var_388;
5365 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_388, 1);
5366 stream->write((uint64_t*)&cgen_var_388, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005367 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005368 uint64_t cgen_var_389 = (uint64_t)(uintptr_t)local_pAllocator;
5369 stream->putBe64(cgen_var_389);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005370 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005371 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005372 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005373 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005374 AEMU_SCOPED_TRACE("vkDestroySampler readParams");
5375 AEMU_SCOPED_TRACE("vkDestroySampler returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005376 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005377 mImpl->log("finish vkDestroySampler");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005378}
5379
5380VkResult VkEncoder::vkCreateDescriptorSetLayout(
5381 VkDevice device,
5382 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
5383 const VkAllocationCallbacks* pAllocator,
5384 VkDescriptorSetLayout* pSetLayout)
5385{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005386 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005387 mImpl->log("start vkCreateDescriptorSetLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005388 auto stream = mImpl->stream();
5389 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005390 auto resources = mImpl->resources();
5391 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005392 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005393 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005394 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005395 VkAllocationCallbacks* local_pAllocator;
5396 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005397 local_pCreateInfo = nullptr;
5398 if (pCreateInfo)
5399 {
5400 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
5401 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
5402 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005403 local_pAllocator = nullptr;
5404 if (pAllocator)
5405 {
5406 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5407 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5408 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005409 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005410 if (local_pCreateInfo)
5411 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005412 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005413 }
5414 if (local_pAllocator)
5415 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005416 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005417 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005418 countingStream->rewind();
5419 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005420 uint64_t cgen_var_390;
5421 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_390, 1);
5422 countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005423 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005424 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005425 uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
5426 countingStream->putBe64(cgen_var_391);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005427 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005428 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005429 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005430 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005431 uint64_t cgen_var_392;
5432 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_392, 1);
5433 countingStream->write((uint64_t*)&cgen_var_392, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005434 }
5435 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5436 countingStream->rewind();
5437 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
5438 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
5439 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005440 uint64_t cgen_var_393;
5441 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_393, 1);
5442 stream->write((uint64_t*)&cgen_var_393, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005443 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005444 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005445 uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
5446 stream->putBe64(cgen_var_394);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005447 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005448 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005449 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005450 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005451 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005452 uint64_t cgen_var_395;
5453 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_395, 1);
5454 stream->write((uint64_t*)&cgen_var_395, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005455 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005456 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08005457 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005458 uint64_t cgen_var_396;
5459 stream->read((uint64_t*)&cgen_var_396, 8);
5460 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_396, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005461 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005462 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005463 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
5464 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005465 countingStream->clearPool();
5466 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005467 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005468 mImpl->log("finish vkCreateDescriptorSetLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005469 return vkCreateDescriptorSetLayout_VkResult_return;
5470}
5471
5472void VkEncoder::vkDestroyDescriptorSetLayout(
5473 VkDevice device,
5474 VkDescriptorSetLayout descriptorSetLayout,
5475 const VkAllocationCallbacks* pAllocator)
5476{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005477 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005478 mImpl->log("start vkDestroyDescriptorSetLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005479 auto stream = mImpl->stream();
5480 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005481 auto resources = mImpl->resources();
5482 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005483 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005484 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005485 VkDescriptorSetLayout local_descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005486 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005487 local_device = device;
5488 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005489 local_pAllocator = nullptr;
5490 if (pAllocator)
5491 {
5492 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5493 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5494 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005495 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005496 if (local_pAllocator)
5497 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005498 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005499 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005500 countingStream->rewind();
5501 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005502 uint64_t cgen_var_397;
5503 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_397, 1);
5504 countingStream->write((uint64_t*)&cgen_var_397, 1 * 8);
5505 uint64_t cgen_var_398;
5506 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_398, 1);
5507 countingStream->write((uint64_t*)&cgen_var_398, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005508 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005509 uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
5510 countingStream->putBe64(cgen_var_399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005511 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005512 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005513 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005514 }
5515 }
5516 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5517 countingStream->rewind();
5518 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
5519 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
5520 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005521 uint64_t cgen_var_400;
5522 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_400, 1);
5523 stream->write((uint64_t*)&cgen_var_400, 1 * 8);
5524 uint64_t cgen_var_401;
5525 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_401, 1);
5526 stream->write((uint64_t*)&cgen_var_401, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005527 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005528 uint64_t cgen_var_402 = (uint64_t)(uintptr_t)local_pAllocator;
5529 stream->putBe64(cgen_var_402);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005530 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005531 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005532 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005533 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005534 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout readParams");
5535 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005536 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005537 mImpl->log("finish vkDestroyDescriptorSetLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005538}
5539
5540VkResult VkEncoder::vkCreateDescriptorPool(
5541 VkDevice device,
5542 const VkDescriptorPoolCreateInfo* pCreateInfo,
5543 const VkAllocationCallbacks* pAllocator,
5544 VkDescriptorPool* pDescriptorPool)
5545{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005546 AEMU_SCOPED_TRACE("vkCreateDescriptorPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005547 mImpl->log("start vkCreateDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005548 auto stream = mImpl->stream();
5549 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005550 auto resources = mImpl->resources();
5551 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005552 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005553 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005554 VkDescriptorPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005555 VkAllocationCallbacks* local_pAllocator;
5556 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005557 local_pCreateInfo = nullptr;
5558 if (pCreateInfo)
5559 {
5560 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
5561 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5562 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005563 local_pAllocator = nullptr;
5564 if (pAllocator)
5565 {
5566 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5567 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5568 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005569 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005570 if (local_pCreateInfo)
5571 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005572 transform_tohost_VkDescriptorPoolCreateInfo(mImpl->resources(), (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005573 }
5574 if (local_pAllocator)
5575 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005576 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005577 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005578 countingStream->rewind();
5579 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005580 uint64_t cgen_var_403;
5581 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_403, 1);
5582 countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005583 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005584 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005585 uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
5586 countingStream->putBe64(cgen_var_404);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005587 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005588 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005589 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005590 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005591 uint64_t cgen_var_405;
5592 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_405, 1);
5593 countingStream->write((uint64_t*)&cgen_var_405, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005594 }
5595 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5596 countingStream->rewind();
5597 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
5598 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
5599 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005600 uint64_t cgen_var_406;
5601 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_406, 1);
5602 stream->write((uint64_t*)&cgen_var_406, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005603 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005604 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005605 uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
5606 stream->putBe64(cgen_var_407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005607 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005608 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005609 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005610 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005611 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005612 uint64_t cgen_var_408;
5613 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_408, 1);
5614 stream->write((uint64_t*)&cgen_var_408, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005615 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005616 AEMU_SCOPED_TRACE("vkCreateDescriptorPool readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08005617 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005618 uint64_t cgen_var_409;
5619 stream->read((uint64_t*)&cgen_var_409, 8);
5620 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_409, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005621 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005622 AEMU_SCOPED_TRACE("vkCreateDescriptorPool returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005623 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
5624 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005625 countingStream->clearPool();
5626 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005627 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005628 mImpl->log("finish vkCreateDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005629 return vkCreateDescriptorPool_VkResult_return;
5630}
5631
5632void VkEncoder::vkDestroyDescriptorPool(
5633 VkDevice device,
5634 VkDescriptorPool descriptorPool,
5635 const VkAllocationCallbacks* pAllocator)
5636{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005637 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005638 mImpl->log("start vkDestroyDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005639 auto stream = mImpl->stream();
5640 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005641 auto resources = mImpl->resources();
5642 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005643 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005644 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005645 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005646 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005647 local_device = device;
5648 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005649 local_pAllocator = nullptr;
5650 if (pAllocator)
5651 {
5652 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5653 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5654 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005655 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005656 if (local_pAllocator)
5657 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005658 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005659 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005660 countingStream->rewind();
5661 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005662 uint64_t cgen_var_410;
5663 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
5664 countingStream->write((uint64_t*)&cgen_var_410, 1 * 8);
5665 uint64_t cgen_var_411;
5666 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
5667 countingStream->write((uint64_t*)&cgen_var_411, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005668 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005669 uint64_t cgen_var_412 = (uint64_t)(uintptr_t)local_pAllocator;
5670 countingStream->putBe64(cgen_var_412);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005671 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005672 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005673 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005674 }
5675 }
5676 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5677 countingStream->rewind();
5678 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
5679 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
5680 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005681 uint64_t cgen_var_413;
5682 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_413, 1);
5683 stream->write((uint64_t*)&cgen_var_413, 1 * 8);
5684 uint64_t cgen_var_414;
5685 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_414, 1);
5686 stream->write((uint64_t*)&cgen_var_414, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005687 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005688 uint64_t cgen_var_415 = (uint64_t)(uintptr_t)local_pAllocator;
5689 stream->putBe64(cgen_var_415);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005690 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005691 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005692 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005693 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005694 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool readParams");
5695 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005696 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005697 mImpl->log("finish vkDestroyDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005698}
5699
5700VkResult VkEncoder::vkResetDescriptorPool(
5701 VkDevice device,
5702 VkDescriptorPool descriptorPool,
5703 VkDescriptorPoolResetFlags flags)
5704{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005705 AEMU_SCOPED_TRACE("vkResetDescriptorPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005706 mImpl->log("start vkResetDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005707 auto stream = mImpl->stream();
5708 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005709 auto resources = mImpl->resources();
5710 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005711 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005712 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005713 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005714 VkDescriptorPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005715 local_device = device;
5716 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005717 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005718 countingStream->rewind();
5719 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005720 uint64_t cgen_var_416;
5721 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_416, 1);
5722 countingStream->write((uint64_t*)&cgen_var_416, 1 * 8);
5723 uint64_t cgen_var_417;
5724 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_417, 1);
5725 countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005726 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005727 }
5728 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5729 countingStream->rewind();
5730 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
5731 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
5732 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005733 uint64_t cgen_var_418;
5734 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_418, 1);
5735 stream->write((uint64_t*)&cgen_var_418, 1 * 8);
5736 uint64_t cgen_var_419;
5737 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_419, 1);
5738 stream->write((uint64_t*)&cgen_var_419, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005739 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005740 AEMU_SCOPED_TRACE("vkResetDescriptorPool readParams");
5741 AEMU_SCOPED_TRACE("vkResetDescriptorPool returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005742 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
5743 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005744 countingStream->clearPool();
5745 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005746 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005747 mImpl->log("finish vkResetDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005748 return vkResetDescriptorPool_VkResult_return;
5749}
5750
5751VkResult VkEncoder::vkAllocateDescriptorSets(
5752 VkDevice device,
5753 const VkDescriptorSetAllocateInfo* pAllocateInfo,
5754 VkDescriptorSet* pDescriptorSets)
5755{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005756 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005757 mImpl->log("start vkAllocateDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005758 auto stream = mImpl->stream();
5759 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005760 auto resources = mImpl->resources();
5761 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005762 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005763 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005764 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005765 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005766 local_pAllocateInfo = nullptr;
5767 if (pAllocateInfo)
5768 {
5769 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
5770 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5771 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005772 if (local_pAllocateInfo)
5773 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005774 transform_tohost_VkDescriptorSetAllocateInfo(mImpl->resources(), (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005775 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005776 countingStream->rewind();
5777 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005778 uint64_t cgen_var_420;
5779 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_420, 1);
5780 countingStream->write((uint64_t*)&cgen_var_420, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005781 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005782 if (pAllocateInfo->descriptorSetCount)
5783 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005784 uint64_t* cgen_var_421;
5785 countingStream->alloc((void**)&cgen_var_421, pAllocateInfo->descriptorSetCount * 8);
5786 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_421, pAllocateInfo->descriptorSetCount);
5787 countingStream->write((uint64_t*)cgen_var_421, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005788 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005789 }
5790 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5791 countingStream->rewind();
5792 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
5793 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
5794 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005795 uint64_t cgen_var_422;
5796 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_422, 1);
5797 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005798 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005799 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005800 if (pAllocateInfo->descriptorSetCount)
5801 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005802 uint64_t* cgen_var_423;
5803 stream->alloc((void**)&cgen_var_423, pAllocateInfo->descriptorSetCount * 8);
5804 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_423, pAllocateInfo->descriptorSetCount);
5805 stream->write((uint64_t*)cgen_var_423, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005806 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005807 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005808 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08005809 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005810 if (pAllocateInfo->descriptorSetCount)
5811 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005812 uint64_t* cgen_var_424;
5813 stream->alloc((void**)&cgen_var_424, pAllocateInfo->descriptorSetCount * 8);
5814 stream->read((uint64_t*)cgen_var_424, pAllocateInfo->descriptorSetCount * 8);
5815 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_424, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005816 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005817 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005818 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005819 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
5820 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005821 countingStream->clearPool();
5822 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005823 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005824 mImpl->log("finish vkAllocateDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005825 return vkAllocateDescriptorSets_VkResult_return;
5826}
5827
5828VkResult VkEncoder::vkFreeDescriptorSets(
5829 VkDevice device,
5830 VkDescriptorPool descriptorPool,
5831 uint32_t descriptorSetCount,
5832 const VkDescriptorSet* pDescriptorSets)
5833{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005834 AEMU_SCOPED_TRACE("vkFreeDescriptorSets encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005835 mImpl->log("start vkFreeDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005836 auto stream = mImpl->stream();
5837 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005838 auto resources = mImpl->resources();
5839 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005840 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005841 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005842 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005843 uint32_t local_descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005844 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005845 local_device = device;
5846 local_descriptorPool = descriptorPool;
5847 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005848 local_pDescriptorSets = nullptr;
5849 if (pDescriptorSets)
5850 {
5851 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5852 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005853 countingStream->rewind();
5854 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005855 uint64_t cgen_var_425;
5856 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5857 countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
5858 uint64_t cgen_var_426;
5859 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_426, 1);
5860 countingStream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005861 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005862 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005863 uint64_t cgen_var_427 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5864 countingStream->putBe64(cgen_var_427);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005865 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005866 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005867 if (((descriptorSetCount)))
5868 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005869 uint64_t* cgen_var_428;
5870 countingStream->alloc((void**)&cgen_var_428, ((descriptorSetCount)) * 8);
5871 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_428, ((descriptorSetCount)));
5872 countingStream->write((uint64_t*)cgen_var_428, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005873 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005874 }
5875 }
5876 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5877 countingStream->rewind();
5878 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5879 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5880 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005881 uint64_t cgen_var_429;
5882 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_429, 1);
5883 stream->write((uint64_t*)&cgen_var_429, 1 * 8);
5884 uint64_t cgen_var_430;
5885 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_430, 1);
5886 stream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005887 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005888 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005889 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5890 stream->putBe64(cgen_var_431);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005891 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005892 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005893 if (((descriptorSetCount)))
5894 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005895 uint64_t* cgen_var_432;
5896 stream->alloc((void**)&cgen_var_432, ((descriptorSetCount)) * 8);
5897 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_432, ((descriptorSetCount)));
5898 stream->write((uint64_t*)cgen_var_432, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005899 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005900 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005901 AEMU_SCOPED_TRACE("vkFreeDescriptorSets readParams");
5902 AEMU_SCOPED_TRACE("vkFreeDescriptorSets returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005903 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5904 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005905 countingStream->clearPool();
5906 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005907 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08005908 if (pDescriptorSets)
5909 {
5910 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5911 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005912 mImpl->log("finish vkFreeDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005913 return vkFreeDescriptorSets_VkResult_return;
5914}
5915
5916void VkEncoder::vkUpdateDescriptorSets(
5917 VkDevice device,
5918 uint32_t descriptorWriteCount,
5919 const VkWriteDescriptorSet* pDescriptorWrites,
5920 uint32_t descriptorCopyCount,
5921 const VkCopyDescriptorSet* pDescriptorCopies)
5922{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005923 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005924 mImpl->log("start vkUpdateDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005925 auto stream = mImpl->stream();
5926 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005927 auto resources = mImpl->resources();
5928 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005929 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005930 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005931 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005932 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005933 uint32_t local_descriptorCopyCount;
5934 VkCopyDescriptorSet* local_pDescriptorCopies;
5935 local_device = device;
5936 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005937 local_pDescriptorWrites = nullptr;
5938 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005939 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005940 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005941 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5942 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005943 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005944 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005945 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005946 local_descriptorCopyCount = descriptorCopyCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005947 local_pDescriptorCopies = nullptr;
5948 if (pDescriptorCopies)
5949 {
5950 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005951 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5952 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005953 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5954 }
5955 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005956 if (local_pDescriptorWrites)
5957 {
5958 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5959 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005960 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005961 }
5962 }
5963 if (local_pDescriptorCopies)
5964 {
5965 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5966 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005967 transform_tohost_VkCopyDescriptorSet(mImpl->resources(), (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005968 }
5969 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005970 countingStream->rewind();
5971 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005972 uint64_t cgen_var_433;
5973 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_433, 1);
5974 countingStream->write((uint64_t*)&cgen_var_433, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005975 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5976 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5977 {
5978 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5979 }
5980 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5981 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5982 {
5983 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005984 }
5985 }
5986 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5987 countingStream->rewind();
5988 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5989 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5990 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08005991 uint64_t cgen_var_434;
5992 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5993 stream->write((uint64_t*)&cgen_var_434, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005994 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005995 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5996 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005997 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005998 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005999 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006000 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
6001 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006002 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006003 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006004 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets readParams");
6005 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006006 mImpl->log("finish vkUpdateDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006007}
6008
6009VkResult VkEncoder::vkCreateFramebuffer(
6010 VkDevice device,
6011 const VkFramebufferCreateInfo* pCreateInfo,
6012 const VkAllocationCallbacks* pAllocator,
6013 VkFramebuffer* pFramebuffer)
6014{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006015 AEMU_SCOPED_TRACE("vkCreateFramebuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006016 mImpl->log("start vkCreateFramebuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006017 auto stream = mImpl->stream();
6018 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006019 auto resources = mImpl->resources();
6020 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006021 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006022 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006023 VkFramebufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006024 VkAllocationCallbacks* local_pAllocator;
6025 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006026 local_pCreateInfo = nullptr;
6027 if (pCreateInfo)
6028 {
6029 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
6030 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
6031 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006032 local_pAllocator = nullptr;
6033 if (pAllocator)
6034 {
6035 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6036 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6037 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006038 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006039 if (local_pCreateInfo)
6040 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006041 transform_tohost_VkFramebufferCreateInfo(mImpl->resources(), (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006042 }
6043 if (local_pAllocator)
6044 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006045 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006046 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006047 countingStream->rewind();
6048 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006049 uint64_t cgen_var_435;
6050 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_435, 1);
6051 countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006052 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006053 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006054 uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
6055 countingStream->putBe64(cgen_var_436);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006056 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006057 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006058 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006059 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006060 uint64_t cgen_var_437;
6061 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_437, 1);
6062 countingStream->write((uint64_t*)&cgen_var_437, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006063 }
6064 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6065 countingStream->rewind();
6066 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
6067 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
6068 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006069 uint64_t cgen_var_438;
6070 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_438, 1);
6071 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006072 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006073 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006074 uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
6075 stream->putBe64(cgen_var_439);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006076 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006077 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006078 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006079 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006080 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006081 uint64_t cgen_var_440;
6082 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_440, 1);
6083 stream->write((uint64_t*)&cgen_var_440, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006084 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006085 AEMU_SCOPED_TRACE("vkCreateFramebuffer readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08006086 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006087 uint64_t cgen_var_441;
6088 stream->read((uint64_t*)&cgen_var_441, 8);
6089 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_441, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006090 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006091 AEMU_SCOPED_TRACE("vkCreateFramebuffer returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006092 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
6093 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006094 countingStream->clearPool();
6095 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006096 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006097 mImpl->log("finish vkCreateFramebuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006098 return vkCreateFramebuffer_VkResult_return;
6099}
6100
6101void VkEncoder::vkDestroyFramebuffer(
6102 VkDevice device,
6103 VkFramebuffer framebuffer,
6104 const VkAllocationCallbacks* pAllocator)
6105{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006106 AEMU_SCOPED_TRACE("vkDestroyFramebuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006107 mImpl->log("start vkDestroyFramebuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006108 auto stream = mImpl->stream();
6109 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006110 auto resources = mImpl->resources();
6111 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006112 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006113 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006114 VkFramebuffer local_framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006115 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006116 local_device = device;
6117 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006118 local_pAllocator = nullptr;
6119 if (pAllocator)
6120 {
6121 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6122 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6123 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006124 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006125 if (local_pAllocator)
6126 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006127 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006128 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006129 countingStream->rewind();
6130 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006131 uint64_t cgen_var_442;
6132 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_442, 1);
6133 countingStream->write((uint64_t*)&cgen_var_442, 1 * 8);
6134 uint64_t cgen_var_443;
6135 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_443, 1);
6136 countingStream->write((uint64_t*)&cgen_var_443, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006137 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006138 uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
6139 countingStream->putBe64(cgen_var_444);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006140 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006141 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006142 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006143 }
6144 }
6145 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6146 countingStream->rewind();
6147 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
6148 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
6149 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006150 uint64_t cgen_var_445;
6151 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_445, 1);
6152 stream->write((uint64_t*)&cgen_var_445, 1 * 8);
6153 uint64_t cgen_var_446;
6154 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_446, 1);
6155 stream->write((uint64_t*)&cgen_var_446, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006156 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006157 uint64_t cgen_var_447 = (uint64_t)(uintptr_t)local_pAllocator;
6158 stream->putBe64(cgen_var_447);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006159 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006160 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006161 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006162 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006163 AEMU_SCOPED_TRACE("vkDestroyFramebuffer readParams");
6164 AEMU_SCOPED_TRACE("vkDestroyFramebuffer returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006165 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006166 mImpl->log("finish vkDestroyFramebuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006167}
6168
6169VkResult VkEncoder::vkCreateRenderPass(
6170 VkDevice device,
6171 const VkRenderPassCreateInfo* pCreateInfo,
6172 const VkAllocationCallbacks* pAllocator,
6173 VkRenderPass* pRenderPass)
6174{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006175 AEMU_SCOPED_TRACE("vkCreateRenderPass encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006176 mImpl->log("start vkCreateRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006177 auto stream = mImpl->stream();
6178 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006179 auto resources = mImpl->resources();
6180 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006181 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006182 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006183 VkRenderPassCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006184 VkAllocationCallbacks* local_pAllocator;
6185 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006186 local_pCreateInfo = nullptr;
6187 if (pCreateInfo)
6188 {
6189 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
6190 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
6191 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006192 local_pAllocator = nullptr;
6193 if (pAllocator)
6194 {
6195 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6196 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6197 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006198 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006199 if (local_pCreateInfo)
6200 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006201 transform_tohost_VkRenderPassCreateInfo(mImpl->resources(), (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006202 }
6203 if (local_pAllocator)
6204 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006205 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006206 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006207 countingStream->rewind();
6208 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006209 uint64_t cgen_var_448;
6210 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_448, 1);
6211 countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006212 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006213 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006214 uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
6215 countingStream->putBe64(cgen_var_449);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006216 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006217 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006218 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006219 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006220 uint64_t cgen_var_450;
6221 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_450, 1);
6222 countingStream->write((uint64_t*)&cgen_var_450, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006223 }
6224 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6225 countingStream->rewind();
6226 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
6227 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
6228 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006229 uint64_t cgen_var_451;
6230 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_451, 1);
6231 stream->write((uint64_t*)&cgen_var_451, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006232 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006233 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006234 uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
6235 stream->putBe64(cgen_var_452);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006236 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006237 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006238 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006239 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006240 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006241 uint64_t cgen_var_453;
6242 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_453, 1);
6243 stream->write((uint64_t*)&cgen_var_453, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006244 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006245 AEMU_SCOPED_TRACE("vkCreateRenderPass readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08006246 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006247 uint64_t cgen_var_454;
6248 stream->read((uint64_t*)&cgen_var_454, 8);
6249 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_454, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006250 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006251 AEMU_SCOPED_TRACE("vkCreateRenderPass returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006252 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
6253 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006254 countingStream->clearPool();
6255 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006256 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006257 mImpl->log("finish vkCreateRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006258 return vkCreateRenderPass_VkResult_return;
6259}
6260
6261void VkEncoder::vkDestroyRenderPass(
6262 VkDevice device,
6263 VkRenderPass renderPass,
6264 const VkAllocationCallbacks* pAllocator)
6265{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006266 AEMU_SCOPED_TRACE("vkDestroyRenderPass encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006267 mImpl->log("start vkDestroyRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006268 auto stream = mImpl->stream();
6269 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006270 auto resources = mImpl->resources();
6271 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006272 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006273 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006274 VkRenderPass local_renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006275 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006276 local_device = device;
6277 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006278 local_pAllocator = nullptr;
6279 if (pAllocator)
6280 {
6281 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6282 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6283 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006284 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006285 if (local_pAllocator)
6286 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006287 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006288 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006289 countingStream->rewind();
6290 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006291 uint64_t cgen_var_455;
6292 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
6293 countingStream->write((uint64_t*)&cgen_var_455, 1 * 8);
6294 uint64_t cgen_var_456;
6295 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
6296 countingStream->write((uint64_t*)&cgen_var_456, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006297 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006298 uint64_t cgen_var_457 = (uint64_t)(uintptr_t)local_pAllocator;
6299 countingStream->putBe64(cgen_var_457);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006300 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006301 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006302 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006303 }
6304 }
6305 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6306 countingStream->rewind();
6307 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
6308 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
6309 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006310 uint64_t cgen_var_458;
6311 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_458, 1);
6312 stream->write((uint64_t*)&cgen_var_458, 1 * 8);
6313 uint64_t cgen_var_459;
6314 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_459, 1);
6315 stream->write((uint64_t*)&cgen_var_459, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006316 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006317 uint64_t cgen_var_460 = (uint64_t)(uintptr_t)local_pAllocator;
6318 stream->putBe64(cgen_var_460);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006319 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006320 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006321 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006322 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006323 AEMU_SCOPED_TRACE("vkDestroyRenderPass readParams");
6324 AEMU_SCOPED_TRACE("vkDestroyRenderPass returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006325 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006326 mImpl->log("finish vkDestroyRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006327}
6328
6329void VkEncoder::vkGetRenderAreaGranularity(
6330 VkDevice device,
6331 VkRenderPass renderPass,
6332 VkExtent2D* pGranularity)
6333{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006334 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006335 mImpl->log("start vkGetRenderAreaGranularity");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006336 auto stream = mImpl->stream();
6337 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006338 auto resources = mImpl->resources();
6339 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006340 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006341 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006342 VkRenderPass local_renderPass;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006343 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006344 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006345 countingStream->rewind();
6346 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006347 uint64_t cgen_var_461;
6348 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_461, 1);
6349 countingStream->write((uint64_t*)&cgen_var_461, 1 * 8);
6350 uint64_t cgen_var_462;
6351 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_462, 1);
6352 countingStream->write((uint64_t*)&cgen_var_462, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006353 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
6354 }
6355 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6356 countingStream->rewind();
6357 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
6358 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
6359 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006360 uint64_t cgen_var_463;
6361 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_463, 1);
6362 stream->write((uint64_t*)&cgen_var_463, 1 * 8);
6363 uint64_t cgen_var_464;
6364 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_464, 1);
6365 stream->write((uint64_t*)&cgen_var_464, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006366 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006367 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006368 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
Lingfeng Yang97a06702018-12-24 17:02:43 -08006369 if (pGranularity)
6370 {
6371 transform_fromhost_VkExtent2D(mImpl->resources(), (VkExtent2D*)(pGranularity));
6372 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006373 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006374 mImpl->log("finish vkGetRenderAreaGranularity");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006375}
6376
6377VkResult VkEncoder::vkCreateCommandPool(
6378 VkDevice device,
6379 const VkCommandPoolCreateInfo* pCreateInfo,
6380 const VkAllocationCallbacks* pAllocator,
6381 VkCommandPool* pCommandPool)
6382{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006383 AEMU_SCOPED_TRACE("vkCreateCommandPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006384 mImpl->log("start vkCreateCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006385 auto stream = mImpl->stream();
6386 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006387 auto resources = mImpl->resources();
6388 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006389 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006390 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006391 VkCommandPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006392 VkAllocationCallbacks* local_pAllocator;
6393 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006394 local_pCreateInfo = nullptr;
6395 if (pCreateInfo)
6396 {
6397 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
6398 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
6399 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006400 local_pAllocator = nullptr;
6401 if (pAllocator)
6402 {
6403 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6404 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6405 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006406 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006407 if (local_pCreateInfo)
6408 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006409 transform_tohost_VkCommandPoolCreateInfo(mImpl->resources(), (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006410 }
6411 if (local_pAllocator)
6412 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006413 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006414 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006415 countingStream->rewind();
6416 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006417 uint64_t cgen_var_465;
6418 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_465, 1);
6419 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006420 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006421 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006422 uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
6423 countingStream->putBe64(cgen_var_466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006424 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006425 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006426 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006427 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006428 uint64_t cgen_var_467;
6429 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_467, 1);
6430 countingStream->write((uint64_t*)&cgen_var_467, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006431 }
6432 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6433 countingStream->rewind();
6434 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
6435 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
6436 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006437 uint64_t cgen_var_468;
6438 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_468, 1);
6439 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006440 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006441 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006442 uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
6443 stream->putBe64(cgen_var_469);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006444 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006445 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006446 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006447 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006448 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006449 uint64_t cgen_var_470;
6450 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_470, 1);
6451 stream->write((uint64_t*)&cgen_var_470, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006452 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006453 AEMU_SCOPED_TRACE("vkCreateCommandPool readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08006454 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006455 uint64_t cgen_var_471;
6456 stream->read((uint64_t*)&cgen_var_471, 8);
6457 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_471, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006458 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006459 AEMU_SCOPED_TRACE("vkCreateCommandPool returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006460 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
6461 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006462 countingStream->clearPool();
6463 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006464 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006465 mImpl->log("finish vkCreateCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006466 return vkCreateCommandPool_VkResult_return;
6467}
6468
6469void VkEncoder::vkDestroyCommandPool(
6470 VkDevice device,
6471 VkCommandPool commandPool,
6472 const VkAllocationCallbacks* pAllocator)
6473{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006474 AEMU_SCOPED_TRACE("vkDestroyCommandPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006475 mImpl->log("start vkDestroyCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006476 auto stream = mImpl->stream();
6477 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006478 auto resources = mImpl->resources();
6479 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006480 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006481 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006482 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006483 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006484 local_device = device;
6485 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006486 local_pAllocator = nullptr;
6487 if (pAllocator)
6488 {
6489 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6490 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6491 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006492 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006493 if (local_pAllocator)
6494 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006495 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006496 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006497 countingStream->rewind();
6498 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006499 uint64_t cgen_var_472;
6500 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
6501 countingStream->write((uint64_t*)&cgen_var_472, 1 * 8);
6502 uint64_t cgen_var_473;
6503 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
6504 countingStream->write((uint64_t*)&cgen_var_473, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006505 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006506 uint64_t cgen_var_474 = (uint64_t)(uintptr_t)local_pAllocator;
6507 countingStream->putBe64(cgen_var_474);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006508 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006509 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006510 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006511 }
6512 }
6513 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6514 countingStream->rewind();
6515 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
6516 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
6517 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006518 uint64_t cgen_var_475;
6519 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_475, 1);
6520 stream->write((uint64_t*)&cgen_var_475, 1 * 8);
6521 uint64_t cgen_var_476;
6522 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_476, 1);
6523 stream->write((uint64_t*)&cgen_var_476, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006524 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006525 uint64_t cgen_var_477 = (uint64_t)(uintptr_t)local_pAllocator;
6526 stream->putBe64(cgen_var_477);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006527 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006528 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006529 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006530 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006531 AEMU_SCOPED_TRACE("vkDestroyCommandPool readParams");
6532 AEMU_SCOPED_TRACE("vkDestroyCommandPool returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006533 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006534 mImpl->log("finish vkDestroyCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006535}
6536
6537VkResult VkEncoder::vkResetCommandPool(
6538 VkDevice device,
6539 VkCommandPool commandPool,
6540 VkCommandPoolResetFlags flags)
6541{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006542 AEMU_SCOPED_TRACE("vkResetCommandPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006543 mImpl->log("start vkResetCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006544 auto stream = mImpl->stream();
6545 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006546 auto resources = mImpl->resources();
6547 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006548 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006549 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006550 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006551 VkCommandPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006552 local_device = device;
6553 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006554 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006555 countingStream->rewind();
6556 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006557 uint64_t cgen_var_478;
6558 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_478, 1);
6559 countingStream->write((uint64_t*)&cgen_var_478, 1 * 8);
6560 uint64_t cgen_var_479;
6561 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_479, 1);
6562 countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006563 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006564 }
6565 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6566 countingStream->rewind();
6567 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
6568 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
6569 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006570 uint64_t cgen_var_480;
6571 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_480, 1);
6572 stream->write((uint64_t*)&cgen_var_480, 1 * 8);
6573 uint64_t cgen_var_481;
6574 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_481, 1);
6575 stream->write((uint64_t*)&cgen_var_481, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006576 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006577 AEMU_SCOPED_TRACE("vkResetCommandPool readParams");
6578 AEMU_SCOPED_TRACE("vkResetCommandPool returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006579 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
6580 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006581 countingStream->clearPool();
6582 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006583 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006584 mImpl->log("finish vkResetCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006585 return vkResetCommandPool_VkResult_return;
6586}
6587
6588VkResult VkEncoder::vkAllocateCommandBuffers(
6589 VkDevice device,
6590 const VkCommandBufferAllocateInfo* pAllocateInfo,
6591 VkCommandBuffer* pCommandBuffers)
6592{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006593 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006594 mImpl->log("start vkAllocateCommandBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006595 auto stream = mImpl->stream();
6596 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006597 auto resources = mImpl->resources();
6598 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006599 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006600 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006601 VkCommandBufferAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006602 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006603 local_pAllocateInfo = nullptr;
6604 if (pAllocateInfo)
6605 {
6606 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
6607 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
6608 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006609 if (local_pAllocateInfo)
6610 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006611 transform_tohost_VkCommandBufferAllocateInfo(mImpl->resources(), (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006612 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006613 countingStream->rewind();
6614 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006615 uint64_t cgen_var_482;
6616 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_482, 1);
6617 countingStream->write((uint64_t*)&cgen_var_482, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006618 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006619 if (pAllocateInfo->commandBufferCount)
6620 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006621 uint64_t* cgen_var_483;
6622 countingStream->alloc((void**)&cgen_var_483, pAllocateInfo->commandBufferCount * 8);
6623 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_483, pAllocateInfo->commandBufferCount);
6624 countingStream->write((uint64_t*)cgen_var_483, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006625 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006626 }
6627 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6628 countingStream->rewind();
6629 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
6630 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
6631 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006632 uint64_t cgen_var_484;
6633 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_484, 1);
6634 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006635 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08006636 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08006637 if (pAllocateInfo->commandBufferCount)
6638 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006639 uint64_t* cgen_var_485;
6640 stream->alloc((void**)&cgen_var_485, pAllocateInfo->commandBufferCount * 8);
6641 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_485, pAllocateInfo->commandBufferCount);
6642 stream->write((uint64_t*)cgen_var_485, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006643 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006644 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006645 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08006646 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08006647 if (pAllocateInfo->commandBufferCount)
6648 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006649 uint64_t* cgen_var_486;
6650 stream->alloc((void**)&cgen_var_486, pAllocateInfo->commandBufferCount * 8);
6651 stream->read((uint64_t*)cgen_var_486, pAllocateInfo->commandBufferCount * 8);
6652 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_486, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006653 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006654 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006655 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006656 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
6657 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006658 countingStream->clearPool();
6659 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006660 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006661 mImpl->log("finish vkAllocateCommandBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006662 return vkAllocateCommandBuffers_VkResult_return;
6663}
6664
6665void VkEncoder::vkFreeCommandBuffers(
6666 VkDevice device,
6667 VkCommandPool commandPool,
6668 uint32_t commandBufferCount,
6669 const VkCommandBuffer* pCommandBuffers)
6670{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006671 AEMU_SCOPED_TRACE("vkFreeCommandBuffers encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006672 mImpl->log("start vkFreeCommandBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006673 auto stream = mImpl->stream();
6674 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006675 auto resources = mImpl->resources();
6676 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006677 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006678 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006679 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006680 uint32_t local_commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006681 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006682 local_device = device;
6683 local_commandPool = commandPool;
6684 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006685 local_pCommandBuffers = nullptr;
6686 if (pCommandBuffers)
6687 {
6688 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
6689 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006690 countingStream->rewind();
6691 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006692 uint64_t cgen_var_487;
6693 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_487, 1);
6694 countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
6695 uint64_t cgen_var_488;
6696 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_488, 1);
6697 countingStream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006698 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006699 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006700 uint64_t cgen_var_489 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6701 countingStream->putBe64(cgen_var_489);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006702 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006703 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006704 if (((commandBufferCount)))
6705 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006706 uint64_t* cgen_var_490;
6707 countingStream->alloc((void**)&cgen_var_490, ((commandBufferCount)) * 8);
6708 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_490, ((commandBufferCount)));
6709 countingStream->write((uint64_t*)cgen_var_490, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006710 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006711 }
6712 }
6713 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6714 countingStream->rewind();
6715 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
6716 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
6717 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006718 uint64_t cgen_var_491;
6719 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_491, 1);
6720 stream->write((uint64_t*)&cgen_var_491, 1 * 8);
6721 uint64_t cgen_var_492;
6722 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_492, 1);
6723 stream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006724 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006725 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006726 uint64_t cgen_var_493 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6727 stream->putBe64(cgen_var_493);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006728 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006729 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006730 if (((commandBufferCount)))
6731 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006732 uint64_t* cgen_var_494;
6733 stream->alloc((void**)&cgen_var_494, ((commandBufferCount)) * 8);
6734 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_494, ((commandBufferCount)));
6735 stream->write((uint64_t*)cgen_var_494, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006736 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006737 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006738 AEMU_SCOPED_TRACE("vkFreeCommandBuffers readParams");
6739 AEMU_SCOPED_TRACE("vkFreeCommandBuffers returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006740 if (pCommandBuffers)
6741 {
6742 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
6743 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006744 mImpl->log("finish vkFreeCommandBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006745}
6746
6747VkResult VkEncoder::vkBeginCommandBuffer(
6748 VkCommandBuffer commandBuffer,
6749 const VkCommandBufferBeginInfo* pBeginInfo)
6750{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006751 AEMU_SCOPED_TRACE("vkBeginCommandBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006752 mImpl->log("start vkBeginCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006753 auto stream = mImpl->stream();
6754 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006755 auto resources = mImpl->resources();
6756 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006757 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006758 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006759 VkCommandBufferBeginInfo* local_pBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006760 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006761 local_pBeginInfo = nullptr;
6762 if (pBeginInfo)
6763 {
6764 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
6765 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6766 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006767 if (local_pBeginInfo)
6768 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006769 transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006770 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006771 countingStream->rewind();
6772 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006773 uint64_t cgen_var_495;
6774 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
6775 countingStream->write((uint64_t*)&cgen_var_495, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006776 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006777 }
6778 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6779 countingStream->rewind();
6780 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
6781 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
6782 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006783 uint64_t cgen_var_496;
6784 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_496, 1);
6785 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006786 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006787 AEMU_SCOPED_TRACE("vkBeginCommandBuffer readParams");
6788 AEMU_SCOPED_TRACE("vkBeginCommandBuffer returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006789 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
6790 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006791 countingStream->clearPool();
6792 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006793 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006794 mImpl->log("finish vkBeginCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006795 return vkBeginCommandBuffer_VkResult_return;
6796}
6797
6798VkResult VkEncoder::vkEndCommandBuffer(
6799 VkCommandBuffer commandBuffer)
6800{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006801 AEMU_SCOPED_TRACE("vkEndCommandBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006802 mImpl->log("start vkEndCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006803 auto stream = mImpl->stream();
6804 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006805 auto resources = mImpl->resources();
6806 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006807 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006808 VkCommandBuffer local_commandBuffer;
6809 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006810 countingStream->rewind();
6811 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006812 uint64_t cgen_var_497;
6813 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
6814 countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006815 }
6816 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6817 countingStream->rewind();
6818 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
6819 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
6820 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006821 uint64_t cgen_var_498;
6822 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
6823 stream->write((uint64_t*)&cgen_var_498, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006824 AEMU_SCOPED_TRACE("vkEndCommandBuffer readParams");
6825 AEMU_SCOPED_TRACE("vkEndCommandBuffer returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006826 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
6827 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006828 countingStream->clearPool();
6829 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006830 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006831 mImpl->log("finish vkEndCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006832 return vkEndCommandBuffer_VkResult_return;
6833}
6834
6835VkResult VkEncoder::vkResetCommandBuffer(
6836 VkCommandBuffer commandBuffer,
6837 VkCommandBufferResetFlags flags)
6838{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006839 AEMU_SCOPED_TRACE("vkResetCommandBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006840 mImpl->log("start vkResetCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006841 auto stream = mImpl->stream();
6842 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006843 auto resources = mImpl->resources();
6844 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006845 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006846 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006847 VkCommandBufferResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006848 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006849 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006850 countingStream->rewind();
6851 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006852 uint64_t cgen_var_499;
6853 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6854 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006855 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006856 }
6857 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6858 countingStream->rewind();
6859 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
6860 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
6861 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006862 uint64_t cgen_var_500;
6863 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6864 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006865 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006866 AEMU_SCOPED_TRACE("vkResetCommandBuffer readParams");
6867 AEMU_SCOPED_TRACE("vkResetCommandBuffer returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006868 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
6869 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006870 countingStream->clearPool();
6871 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006872 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006873 mImpl->log("finish vkResetCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006874 return vkResetCommandBuffer_VkResult_return;
6875}
6876
6877void VkEncoder::vkCmdBindPipeline(
6878 VkCommandBuffer commandBuffer,
6879 VkPipelineBindPoint pipelineBindPoint,
6880 VkPipeline pipeline)
6881{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006882 AEMU_SCOPED_TRACE("vkCmdBindPipeline encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006883 mImpl->log("start vkCmdBindPipeline");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006884 auto stream = mImpl->stream();
6885 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006886 auto resources = mImpl->resources();
6887 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006888 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006889 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006890 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006891 VkPipeline local_pipeline;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006892 local_commandBuffer = commandBuffer;
6893 local_pipelineBindPoint = pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006894 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006895 countingStream->rewind();
6896 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006897 uint64_t cgen_var_501;
6898 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6899 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006900 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006901 uint64_t cgen_var_502;
6902 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_502, 1);
6903 countingStream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006904 }
6905 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6906 countingStream->rewind();
6907 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
6908 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
6909 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006910 uint64_t cgen_var_503;
6911 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6912 stream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006913 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006914 uint64_t cgen_var_504;
6915 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_504, 1);
6916 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006917 AEMU_SCOPED_TRACE("vkCmdBindPipeline readParams");
6918 AEMU_SCOPED_TRACE("vkCmdBindPipeline returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006919 mImpl->log("finish vkCmdBindPipeline");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006920}
6921
6922void VkEncoder::vkCmdSetViewport(
6923 VkCommandBuffer commandBuffer,
6924 uint32_t firstViewport,
6925 uint32_t viewportCount,
6926 const VkViewport* pViewports)
6927{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006928 AEMU_SCOPED_TRACE("vkCmdSetViewport encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006929 mImpl->log("start vkCmdSetViewport");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006930 auto stream = mImpl->stream();
6931 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006932 auto resources = mImpl->resources();
6933 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006934 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006935 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006936 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006937 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006938 VkViewport* local_pViewports;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006939 local_commandBuffer = commandBuffer;
6940 local_firstViewport = firstViewport;
6941 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006942 local_pViewports = nullptr;
6943 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006944 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006945 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006946 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6947 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006948 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
6949 }
6950 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006951 if (local_pViewports)
6952 {
6953 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6954 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006955 transform_tohost_VkViewport(mImpl->resources(), (VkViewport*)(local_pViewports + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006956 }
6957 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006958 countingStream->rewind();
6959 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006960 uint64_t cgen_var_505;
6961 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6962 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006963 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6964 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
6965 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6966 {
6967 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006968 }
6969 }
6970 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6971 countingStream->rewind();
6972 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
6973 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
6974 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08006975 uint64_t cgen_var_506;
6976 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6977 stream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006978 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6979 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006980 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6981 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006982 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006983 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006984 AEMU_SCOPED_TRACE("vkCmdSetViewport readParams");
6985 AEMU_SCOPED_TRACE("vkCmdSetViewport returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006986 mImpl->log("finish vkCmdSetViewport");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006987}
6988
6989void VkEncoder::vkCmdSetScissor(
6990 VkCommandBuffer commandBuffer,
6991 uint32_t firstScissor,
6992 uint32_t scissorCount,
6993 const VkRect2D* pScissors)
6994{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006995 AEMU_SCOPED_TRACE("vkCmdSetScissor encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006996 mImpl->log("start vkCmdSetScissor");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006997 auto stream = mImpl->stream();
6998 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006999 auto resources = mImpl->resources();
7000 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007001 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007002 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007003 uint32_t local_firstScissor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007004 uint32_t local_scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007005 VkRect2D* local_pScissors;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007006 local_commandBuffer = commandBuffer;
7007 local_firstScissor = firstScissor;
7008 local_scissorCount = scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007009 local_pScissors = nullptr;
7010 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007011 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007012 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007013 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7014 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007015 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
7016 }
7017 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007018 if (local_pScissors)
7019 {
7020 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7021 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007022 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pScissors + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007023 }
7024 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007025 countingStream->rewind();
7026 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007027 uint64_t cgen_var_507;
7028 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
7029 countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007030 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
7031 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
7032 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7033 {
7034 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007035 }
7036 }
7037 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7038 countingStream->rewind();
7039 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
7040 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
7041 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007042 uint64_t cgen_var_508;
7043 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
7044 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007045 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
7046 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007047 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7048 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007049 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007050 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007051 AEMU_SCOPED_TRACE("vkCmdSetScissor readParams");
7052 AEMU_SCOPED_TRACE("vkCmdSetScissor returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007053 mImpl->log("finish vkCmdSetScissor");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007054}
7055
7056void VkEncoder::vkCmdSetLineWidth(
7057 VkCommandBuffer commandBuffer,
7058 float lineWidth)
7059{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007060 AEMU_SCOPED_TRACE("vkCmdSetLineWidth encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007061 mImpl->log("start vkCmdSetLineWidth");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007062 auto stream = mImpl->stream();
7063 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007064 auto resources = mImpl->resources();
7065 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007066 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007067 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007068 float local_lineWidth;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007069 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007070 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007071 countingStream->rewind();
7072 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007073 uint64_t cgen_var_509;
7074 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
7075 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007076 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007077 }
7078 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7079 countingStream->rewind();
7080 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
7081 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
7082 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007083 uint64_t cgen_var_510;
7084 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
7085 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007086 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007087 AEMU_SCOPED_TRACE("vkCmdSetLineWidth readParams");
7088 AEMU_SCOPED_TRACE("vkCmdSetLineWidth returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007089 mImpl->log("finish vkCmdSetLineWidth");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007090}
7091
7092void VkEncoder::vkCmdSetDepthBias(
7093 VkCommandBuffer commandBuffer,
7094 float depthBiasConstantFactor,
7095 float depthBiasClamp,
7096 float depthBiasSlopeFactor)
7097{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007098 AEMU_SCOPED_TRACE("vkCmdSetDepthBias encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007099 mImpl->log("start vkCmdSetDepthBias");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007100 auto stream = mImpl->stream();
7101 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007102 auto resources = mImpl->resources();
7103 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007104 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007105 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007106 float local_depthBiasConstantFactor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007107 float local_depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007108 float local_depthBiasSlopeFactor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007109 local_commandBuffer = commandBuffer;
7110 local_depthBiasConstantFactor = depthBiasConstantFactor;
7111 local_depthBiasClamp = depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007112 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007113 countingStream->rewind();
7114 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007115 uint64_t cgen_var_511;
7116 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
7117 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007118 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
7119 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
7120 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007121 }
7122 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7123 countingStream->rewind();
7124 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
7125 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
7126 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007127 uint64_t cgen_var_512;
7128 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
7129 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007130 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
7131 stream->write((float*)&local_depthBiasClamp, sizeof(float));
7132 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007133 AEMU_SCOPED_TRACE("vkCmdSetDepthBias readParams");
7134 AEMU_SCOPED_TRACE("vkCmdSetDepthBias returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007135 mImpl->log("finish vkCmdSetDepthBias");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007136}
7137
7138void VkEncoder::vkCmdSetBlendConstants(
7139 VkCommandBuffer commandBuffer,
7140 const float blendConstants)
7141{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007142 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007143 mImpl->log("start vkCmdSetBlendConstants");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007144 auto stream = mImpl->stream();
7145 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007146 auto resources = mImpl->resources();
7147 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007148 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007149 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007150 float local_blendConstants[4];
Lingfeng Yang9666b852018-11-13 23:09:59 -08007151 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007152 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007153 countingStream->rewind();
7154 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007155 uint64_t cgen_var_513;
7156 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
7157 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007158 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007159 }
7160 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7161 countingStream->rewind();
7162 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
7163 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
7164 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007165 uint64_t cgen_var_514;
7166 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
7167 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007168 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007169 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants readParams");
7170 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007171 mImpl->log("finish vkCmdSetBlendConstants");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007172}
7173
7174void VkEncoder::vkCmdSetDepthBounds(
7175 VkCommandBuffer commandBuffer,
7176 float minDepthBounds,
7177 float maxDepthBounds)
7178{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007179 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007180 mImpl->log("start vkCmdSetDepthBounds");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007181 auto stream = mImpl->stream();
7182 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007183 auto resources = mImpl->resources();
7184 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007185 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007186 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007187 float local_minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007188 float local_maxDepthBounds;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007189 local_commandBuffer = commandBuffer;
7190 local_minDepthBounds = minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007191 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007192 countingStream->rewind();
7193 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007194 uint64_t cgen_var_515;
7195 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
7196 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007197 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
7198 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007199 }
7200 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7201 countingStream->rewind();
7202 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
7203 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
7204 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007205 uint64_t cgen_var_516;
7206 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_516, 1);
7207 stream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007208 stream->write((float*)&local_minDepthBounds, sizeof(float));
7209 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007210 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds readParams");
7211 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007212 mImpl->log("finish vkCmdSetDepthBounds");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007213}
7214
7215void VkEncoder::vkCmdSetStencilCompareMask(
7216 VkCommandBuffer commandBuffer,
7217 VkStencilFaceFlags faceMask,
7218 uint32_t compareMask)
7219{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007220 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007221 mImpl->log("start vkCmdSetStencilCompareMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007222 auto stream = mImpl->stream();
7223 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007224 auto resources = mImpl->resources();
7225 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007226 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007227 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007228 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007229 uint32_t local_compareMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007230 local_commandBuffer = commandBuffer;
7231 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007232 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007233 countingStream->rewind();
7234 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007235 uint64_t cgen_var_517;
7236 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_517, 1);
7237 countingStream->write((uint64_t*)&cgen_var_517, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007238 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7239 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007240 }
7241 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7242 countingStream->rewind();
7243 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
7244 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
7245 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007246 uint64_t cgen_var_518;
7247 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
7248 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007249 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7250 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007251 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask readParams");
7252 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007253 mImpl->log("finish vkCmdSetStencilCompareMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007254}
7255
7256void VkEncoder::vkCmdSetStencilWriteMask(
7257 VkCommandBuffer commandBuffer,
7258 VkStencilFaceFlags faceMask,
7259 uint32_t writeMask)
7260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007261 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007262 mImpl->log("start vkCmdSetStencilWriteMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007263 auto stream = mImpl->stream();
7264 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007265 auto resources = mImpl->resources();
7266 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007267 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007268 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007269 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007270 uint32_t local_writeMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007271 local_commandBuffer = commandBuffer;
7272 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007273 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007274 countingStream->rewind();
7275 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007276 uint64_t cgen_var_519;
7277 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_519, 1);
7278 countingStream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007279 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7280 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007281 }
7282 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7283 countingStream->rewind();
7284 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
7285 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
7286 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007287 uint64_t cgen_var_520;
7288 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_520, 1);
7289 stream->write((uint64_t*)&cgen_var_520, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007290 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7291 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007292 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask readParams");
7293 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007294 mImpl->log("finish vkCmdSetStencilWriteMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007295}
7296
7297void VkEncoder::vkCmdSetStencilReference(
7298 VkCommandBuffer commandBuffer,
7299 VkStencilFaceFlags faceMask,
7300 uint32_t reference)
7301{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007302 AEMU_SCOPED_TRACE("vkCmdSetStencilReference encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007303 mImpl->log("start vkCmdSetStencilReference");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007304 auto stream = mImpl->stream();
7305 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007306 auto resources = mImpl->resources();
7307 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007308 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007309 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007310 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007311 uint32_t local_reference;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007312 local_commandBuffer = commandBuffer;
7313 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007314 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007315 countingStream->rewind();
7316 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007317 uint64_t cgen_var_521;
7318 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
7319 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007320 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7321 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007322 }
7323 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7324 countingStream->rewind();
7325 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
7326 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
7327 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007328 uint64_t cgen_var_522;
7329 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_522, 1);
7330 stream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007331 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7332 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007333 AEMU_SCOPED_TRACE("vkCmdSetStencilReference readParams");
7334 AEMU_SCOPED_TRACE("vkCmdSetStencilReference returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007335 mImpl->log("finish vkCmdSetStencilReference");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007336}
7337
7338void VkEncoder::vkCmdBindDescriptorSets(
7339 VkCommandBuffer commandBuffer,
7340 VkPipelineBindPoint pipelineBindPoint,
7341 VkPipelineLayout layout,
7342 uint32_t firstSet,
7343 uint32_t descriptorSetCount,
7344 const VkDescriptorSet* pDescriptorSets,
7345 uint32_t dynamicOffsetCount,
7346 const uint32_t* pDynamicOffsets)
7347{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007348 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007349 mImpl->log("start vkCmdBindDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007350 auto stream = mImpl->stream();
7351 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007352 auto resources = mImpl->resources();
7353 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007354 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007355 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007356 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007357 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007358 uint32_t local_firstSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007359 uint32_t local_descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007360 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007361 uint32_t local_dynamicOffsetCount;
7362 uint32_t* local_pDynamicOffsets;
7363 local_commandBuffer = commandBuffer;
7364 local_pipelineBindPoint = pipelineBindPoint;
7365 local_layout = layout;
7366 local_firstSet = firstSet;
7367 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007368 local_pDescriptorSets = nullptr;
7369 if (pDescriptorSets)
7370 {
7371 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
7372 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007373 local_dynamicOffsetCount = dynamicOffsetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007374 local_pDynamicOffsets = nullptr;
7375 if (pDynamicOffsets)
7376 {
7377 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
7378 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007379 countingStream->rewind();
7380 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007381 uint64_t cgen_var_523;
7382 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
7383 countingStream->write((uint64_t*)&cgen_var_523, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007384 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007385 uint64_t cgen_var_524;
7386 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_524, 1);
7387 countingStream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007388 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
7389 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007390 if (((descriptorSetCount)))
7391 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007392 uint64_t* cgen_var_525;
7393 countingStream->alloc((void**)&cgen_var_525, ((descriptorSetCount)) * 8);
7394 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_525, ((descriptorSetCount)));
7395 countingStream->write((uint64_t*)cgen_var_525, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007396 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007397 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
7398 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007399 }
7400 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7401 countingStream->rewind();
7402 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
7403 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
7404 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007405 uint64_t cgen_var_526;
7406 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_526, 1);
7407 stream->write((uint64_t*)&cgen_var_526, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007408 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007409 uint64_t cgen_var_527;
7410 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_527, 1);
7411 stream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007412 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
7413 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007414 if (((descriptorSetCount)))
7415 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007416 uint64_t* cgen_var_528;
7417 stream->alloc((void**)&cgen_var_528, ((descriptorSetCount)) * 8);
7418 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_528, ((descriptorSetCount)));
7419 stream->write((uint64_t*)cgen_var_528, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007420 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007421 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
7422 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007423 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets readParams");
7424 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007425 mImpl->log("finish vkCmdBindDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007426}
7427
7428void VkEncoder::vkCmdBindIndexBuffer(
7429 VkCommandBuffer commandBuffer,
7430 VkBuffer buffer,
7431 VkDeviceSize offset,
7432 VkIndexType indexType)
7433{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007434 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007435 mImpl->log("start vkCmdBindIndexBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007436 auto stream = mImpl->stream();
7437 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007438 auto resources = mImpl->resources();
7439 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007440 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007441 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007442 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007443 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007444 VkIndexType local_indexType;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007445 local_commandBuffer = commandBuffer;
7446 local_buffer = buffer;
7447 local_offset = offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007448 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007449 countingStream->rewind();
7450 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007451 uint64_t cgen_var_529;
7452 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
7453 countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
7454 uint64_t cgen_var_530;
7455 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_530, 1);
7456 countingStream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007457 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7458 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007459 }
7460 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7461 countingStream->rewind();
7462 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
7463 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
7464 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007465 uint64_t cgen_var_531;
7466 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
7467 stream->write((uint64_t*)&cgen_var_531, 1 * 8);
7468 uint64_t cgen_var_532;
7469 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_532, 1);
7470 stream->write((uint64_t*)&cgen_var_532, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007471 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7472 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007473 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer readParams");
7474 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007475 mImpl->log("finish vkCmdBindIndexBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007476}
7477
7478void VkEncoder::vkCmdBindVertexBuffers(
7479 VkCommandBuffer commandBuffer,
7480 uint32_t firstBinding,
7481 uint32_t bindingCount,
7482 const VkBuffer* pBuffers,
7483 const VkDeviceSize* pOffsets)
7484{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007485 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007486 mImpl->log("start vkCmdBindVertexBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007487 auto stream = mImpl->stream();
7488 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007489 auto resources = mImpl->resources();
7490 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007491 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007492 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007493 uint32_t local_firstBinding;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007494 uint32_t local_bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007495 VkBuffer* local_pBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007496 VkDeviceSize* local_pOffsets;
7497 local_commandBuffer = commandBuffer;
7498 local_firstBinding = firstBinding;
7499 local_bindingCount = bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007500 local_pBuffers = nullptr;
7501 if (pBuffers)
7502 {
7503 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
7504 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007505 local_pOffsets = nullptr;
7506 if (pOffsets)
7507 {
7508 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
7509 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007510 countingStream->rewind();
7511 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007512 uint64_t cgen_var_533;
7513 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
7514 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007515 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7516 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007517 if (((bindingCount)))
7518 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007519 uint64_t* cgen_var_534;
7520 countingStream->alloc((void**)&cgen_var_534, ((bindingCount)) * 8);
7521 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_534, ((bindingCount)));
7522 countingStream->write((uint64_t*)cgen_var_534, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007523 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007524 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007525 }
7526 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7527 countingStream->rewind();
7528 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
7529 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
7530 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007531 uint64_t cgen_var_535;
7532 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
7533 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007534 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7535 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007536 if (((bindingCount)))
7537 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007538 uint64_t* cgen_var_536;
7539 stream->alloc((void**)&cgen_var_536, ((bindingCount)) * 8);
7540 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_536, ((bindingCount)));
7541 stream->write((uint64_t*)cgen_var_536, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007542 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007543 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007544 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers readParams");
7545 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007546 mImpl->log("finish vkCmdBindVertexBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007547}
7548
7549void VkEncoder::vkCmdDraw(
7550 VkCommandBuffer commandBuffer,
7551 uint32_t vertexCount,
7552 uint32_t instanceCount,
7553 uint32_t firstVertex,
7554 uint32_t firstInstance)
7555{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007556 AEMU_SCOPED_TRACE("vkCmdDraw encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007557 mImpl->log("start vkCmdDraw");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007558 auto stream = mImpl->stream();
7559 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007560 auto resources = mImpl->resources();
7561 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007562 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007563 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007564 uint32_t local_vertexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007565 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007566 uint32_t local_firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007567 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007568 local_commandBuffer = commandBuffer;
7569 local_vertexCount = vertexCount;
7570 local_instanceCount = instanceCount;
7571 local_firstVertex = firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007572 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007573 countingStream->rewind();
7574 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007575 uint64_t cgen_var_537;
7576 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
7577 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007578 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7579 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7580 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7581 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007582 }
7583 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7584 countingStream->rewind();
7585 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
7586 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
7587 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007588 uint64_t cgen_var_538;
7589 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_538, 1);
7590 stream->write((uint64_t*)&cgen_var_538, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007591 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7592 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7593 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7594 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007595 AEMU_SCOPED_TRACE("vkCmdDraw readParams");
7596 AEMU_SCOPED_TRACE("vkCmdDraw returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007597 mImpl->log("finish vkCmdDraw");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007598}
7599
7600void VkEncoder::vkCmdDrawIndexed(
7601 VkCommandBuffer commandBuffer,
7602 uint32_t indexCount,
7603 uint32_t instanceCount,
7604 uint32_t firstIndex,
7605 int32_t vertexOffset,
7606 uint32_t firstInstance)
7607{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007608 AEMU_SCOPED_TRACE("vkCmdDrawIndexed encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007609 mImpl->log("start vkCmdDrawIndexed");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007610 auto stream = mImpl->stream();
7611 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007612 auto resources = mImpl->resources();
7613 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007614 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007615 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007616 uint32_t local_indexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007617 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007618 uint32_t local_firstIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007619 int32_t local_vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007620 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007621 local_commandBuffer = commandBuffer;
7622 local_indexCount = indexCount;
7623 local_instanceCount = instanceCount;
7624 local_firstIndex = firstIndex;
7625 local_vertexOffset = vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007626 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007627 countingStream->rewind();
7628 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007629 uint64_t cgen_var_539;
7630 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
7631 countingStream->write((uint64_t*)&cgen_var_539, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007632 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7633 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7634 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7635 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7636 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007637 }
7638 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7639 countingStream->rewind();
7640 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
7641 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
7642 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007643 uint64_t cgen_var_540;
7644 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_540, 1);
7645 stream->write((uint64_t*)&cgen_var_540, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007646 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7647 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7648 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7649 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7650 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007651 AEMU_SCOPED_TRACE("vkCmdDrawIndexed readParams");
7652 AEMU_SCOPED_TRACE("vkCmdDrawIndexed returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007653 mImpl->log("finish vkCmdDrawIndexed");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007654}
7655
7656void VkEncoder::vkCmdDrawIndirect(
7657 VkCommandBuffer commandBuffer,
7658 VkBuffer buffer,
7659 VkDeviceSize offset,
7660 uint32_t drawCount,
7661 uint32_t stride)
7662{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007663 AEMU_SCOPED_TRACE("vkCmdDrawIndirect encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007664 mImpl->log("start vkCmdDrawIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007665 auto stream = mImpl->stream();
7666 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007667 auto resources = mImpl->resources();
7668 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007669 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007670 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007671 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007672 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007673 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007674 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007675 local_commandBuffer = commandBuffer;
7676 local_buffer = buffer;
7677 local_offset = offset;
7678 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007679 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007680 countingStream->rewind();
7681 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007682 uint64_t cgen_var_541;
7683 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
7684 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
7685 uint64_t cgen_var_542;
7686 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_542, 1);
7687 countingStream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007688 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7689 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7690 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007691 }
7692 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7693 countingStream->rewind();
7694 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
7695 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
7696 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007697 uint64_t cgen_var_543;
7698 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
7699 stream->write((uint64_t*)&cgen_var_543, 1 * 8);
7700 uint64_t cgen_var_544;
7701 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
7702 stream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007703 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7704 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7705 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007706 AEMU_SCOPED_TRACE("vkCmdDrawIndirect readParams");
7707 AEMU_SCOPED_TRACE("vkCmdDrawIndirect returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007708 mImpl->log("finish vkCmdDrawIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007709}
7710
7711void VkEncoder::vkCmdDrawIndexedIndirect(
7712 VkCommandBuffer commandBuffer,
7713 VkBuffer buffer,
7714 VkDeviceSize offset,
7715 uint32_t drawCount,
7716 uint32_t stride)
7717{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007718 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007719 mImpl->log("start vkCmdDrawIndexedIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007720 auto stream = mImpl->stream();
7721 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007722 auto resources = mImpl->resources();
7723 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007724 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007725 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007726 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007727 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007728 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007729 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007730 local_commandBuffer = commandBuffer;
7731 local_buffer = buffer;
7732 local_offset = offset;
7733 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007734 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007735 countingStream->rewind();
7736 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007737 uint64_t cgen_var_545;
7738 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
7739 countingStream->write((uint64_t*)&cgen_var_545, 1 * 8);
7740 uint64_t cgen_var_546;
7741 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
7742 countingStream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007743 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7744 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7745 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007746 }
7747 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7748 countingStream->rewind();
7749 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
7750 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
7751 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007752 uint64_t cgen_var_547;
7753 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
7754 stream->write((uint64_t*)&cgen_var_547, 1 * 8);
7755 uint64_t cgen_var_548;
7756 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_548, 1);
7757 stream->write((uint64_t*)&cgen_var_548, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007758 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7759 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7760 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007761 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect readParams");
7762 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007763 mImpl->log("finish vkCmdDrawIndexedIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007764}
7765
7766void VkEncoder::vkCmdDispatch(
7767 VkCommandBuffer commandBuffer,
7768 uint32_t groupCountX,
7769 uint32_t groupCountY,
7770 uint32_t groupCountZ)
7771{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007772 AEMU_SCOPED_TRACE("vkCmdDispatch encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007773 mImpl->log("start vkCmdDispatch");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007774 auto stream = mImpl->stream();
7775 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007776 auto resources = mImpl->resources();
7777 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007778 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007779 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007780 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007781 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007782 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007783 local_commandBuffer = commandBuffer;
7784 local_groupCountX = groupCountX;
7785 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007786 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007787 countingStream->rewind();
7788 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007789 uint64_t cgen_var_549;
7790 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_549, 1);
7791 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007792 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7793 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7794 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007795 }
7796 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7797 countingStream->rewind();
7798 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
7799 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
7800 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007801 uint64_t cgen_var_550;
7802 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
7803 stream->write((uint64_t*)&cgen_var_550, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007804 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7805 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7806 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007807 AEMU_SCOPED_TRACE("vkCmdDispatch readParams");
7808 AEMU_SCOPED_TRACE("vkCmdDispatch returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007809 mImpl->log("finish vkCmdDispatch");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007810}
7811
7812void VkEncoder::vkCmdDispatchIndirect(
7813 VkCommandBuffer commandBuffer,
7814 VkBuffer buffer,
7815 VkDeviceSize offset)
7816{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007817 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007818 mImpl->log("start vkCmdDispatchIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007819 auto stream = mImpl->stream();
7820 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007821 auto resources = mImpl->resources();
7822 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007823 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007824 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007825 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007826 VkDeviceSize local_offset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007827 local_commandBuffer = commandBuffer;
7828 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007829 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007830 countingStream->rewind();
7831 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007832 uint64_t cgen_var_551;
7833 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_551, 1);
7834 countingStream->write((uint64_t*)&cgen_var_551, 1 * 8);
7835 uint64_t cgen_var_552;
7836 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_552, 1);
7837 countingStream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007838 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007839 }
7840 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7841 countingStream->rewind();
7842 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
7843 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
7844 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007845 uint64_t cgen_var_553;
7846 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
7847 stream->write((uint64_t*)&cgen_var_553, 1 * 8);
7848 uint64_t cgen_var_554;
7849 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_554, 1);
7850 stream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007851 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007852 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect readParams");
7853 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007854 mImpl->log("finish vkCmdDispatchIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007855}
7856
7857void VkEncoder::vkCmdCopyBuffer(
7858 VkCommandBuffer commandBuffer,
7859 VkBuffer srcBuffer,
7860 VkBuffer dstBuffer,
7861 uint32_t regionCount,
7862 const VkBufferCopy* pRegions)
7863{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007864 AEMU_SCOPED_TRACE("vkCmdCopyBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007865 mImpl->log("start vkCmdCopyBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007866 auto stream = mImpl->stream();
7867 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007868 auto resources = mImpl->resources();
7869 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007870 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007871 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007872 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007873 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007874 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007875 VkBufferCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007876 local_commandBuffer = commandBuffer;
7877 local_srcBuffer = srcBuffer;
7878 local_dstBuffer = dstBuffer;
7879 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007880 local_pRegions = nullptr;
7881 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007882 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007883 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007884 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7885 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007886 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
7887 }
7888 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007889 if (local_pRegions)
7890 {
7891 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7892 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007893 transform_tohost_VkBufferCopy(mImpl->resources(), (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007894 }
7895 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007896 countingStream->rewind();
7897 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007898 uint64_t cgen_var_555;
7899 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_555, 1);
7900 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
7901 uint64_t cgen_var_556;
7902 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_556, 1);
7903 countingStream->write((uint64_t*)&cgen_var_556, 1 * 8);
7904 uint64_t cgen_var_557;
7905 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_557, 1);
7906 countingStream->write((uint64_t*)&cgen_var_557, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007907 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7908 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7909 {
7910 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007911 }
7912 }
7913 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7914 countingStream->rewind();
7915 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
7916 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
7917 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007918 uint64_t cgen_var_558;
7919 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_558, 1);
7920 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
7921 uint64_t cgen_var_559;
7922 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_559, 1);
7923 stream->write((uint64_t*)&cgen_var_559, 1 * 8);
7924 uint64_t cgen_var_560;
7925 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_560, 1);
7926 stream->write((uint64_t*)&cgen_var_560, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007927 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007928 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7929 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007930 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007931 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007932 AEMU_SCOPED_TRACE("vkCmdCopyBuffer readParams");
7933 AEMU_SCOPED_TRACE("vkCmdCopyBuffer returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007934 mImpl->log("finish vkCmdCopyBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007935}
7936
7937void VkEncoder::vkCmdCopyImage(
7938 VkCommandBuffer commandBuffer,
7939 VkImage srcImage,
7940 VkImageLayout srcImageLayout,
7941 VkImage dstImage,
7942 VkImageLayout dstImageLayout,
7943 uint32_t regionCount,
7944 const VkImageCopy* pRegions)
7945{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007946 AEMU_SCOPED_TRACE("vkCmdCopyImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007947 mImpl->log("start vkCmdCopyImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007948 auto stream = mImpl->stream();
7949 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007950 auto resources = mImpl->resources();
7951 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007952 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007953 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007954 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007955 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007956 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007957 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007958 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007959 VkImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007960 local_commandBuffer = commandBuffer;
7961 local_srcImage = srcImage;
7962 local_srcImageLayout = srcImageLayout;
7963 local_dstImage = dstImage;
7964 local_dstImageLayout = dstImageLayout;
7965 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007966 local_pRegions = nullptr;
7967 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007968 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007969 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007970 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7971 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007972 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
7973 }
7974 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007975 if (local_pRegions)
7976 {
7977 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7978 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007979 transform_tohost_VkImageCopy(mImpl->resources(), (VkImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007980 }
7981 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007982 countingStream->rewind();
7983 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007984 uint64_t cgen_var_561;
7985 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_561, 1);
7986 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
7987 uint64_t cgen_var_562;
7988 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_562, 1);
7989 countingStream->write((uint64_t*)&cgen_var_562, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08007990 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08007991 uint64_t cgen_var_563;
7992 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_563, 1);
7993 countingStream->write((uint64_t*)&cgen_var_563, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007994 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7995 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7996 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7997 {
7998 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007999 }
8000 }
8001 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8002 countingStream->rewind();
8003 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
8004 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
8005 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008006 uint64_t cgen_var_564;
8007 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_564, 1);
8008 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
8009 uint64_t cgen_var_565;
8010 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_565, 1);
8011 stream->write((uint64_t*)&cgen_var_565, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008012 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008013 uint64_t cgen_var_566;
8014 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_566, 1);
8015 stream->write((uint64_t*)&cgen_var_566, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008016 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8017 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008018 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8019 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008020 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008021 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008022 AEMU_SCOPED_TRACE("vkCmdCopyImage readParams");
8023 AEMU_SCOPED_TRACE("vkCmdCopyImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008024 mImpl->log("finish vkCmdCopyImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008025}
8026
8027void VkEncoder::vkCmdBlitImage(
8028 VkCommandBuffer commandBuffer,
8029 VkImage srcImage,
8030 VkImageLayout srcImageLayout,
8031 VkImage dstImage,
8032 VkImageLayout dstImageLayout,
8033 uint32_t regionCount,
8034 const VkImageBlit* pRegions,
8035 VkFilter filter)
8036{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008037 AEMU_SCOPED_TRACE("vkCmdBlitImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008038 mImpl->log("start vkCmdBlitImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008039 auto stream = mImpl->stream();
8040 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008041 auto resources = mImpl->resources();
8042 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008043 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008044 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008045 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008046 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008047 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008048 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008049 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008050 VkImageBlit* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008051 VkFilter local_filter;
8052 local_commandBuffer = commandBuffer;
8053 local_srcImage = srcImage;
8054 local_srcImageLayout = srcImageLayout;
8055 local_dstImage = dstImage;
8056 local_dstImageLayout = dstImageLayout;
8057 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008058 local_pRegions = nullptr;
8059 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008060 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008061 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008062 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8063 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008064 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008065 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008066 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008067 local_filter = filter;
Lingfeng Yang62b23322018-12-24 12:45:47 -08008068 if (local_pRegions)
8069 {
8070 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8071 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008072 transform_tohost_VkImageBlit(mImpl->resources(), (VkImageBlit*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008073 }
8074 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008075 countingStream->rewind();
8076 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008077 uint64_t cgen_var_567;
8078 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_567, 1);
8079 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
8080 uint64_t cgen_var_568;
8081 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_568, 1);
8082 countingStream->write((uint64_t*)&cgen_var_568, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008083 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008084 uint64_t cgen_var_569;
8085 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_569, 1);
8086 countingStream->write((uint64_t*)&cgen_var_569, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008087 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8088 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8089 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8090 {
8091 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
8092 }
8093 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008094 }
8095 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8096 countingStream->rewind();
8097 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
8098 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
8099 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008100 uint64_t cgen_var_570;
8101 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_570, 1);
8102 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
8103 uint64_t cgen_var_571;
8104 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_571, 1);
8105 stream->write((uint64_t*)&cgen_var_571, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008106 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008107 uint64_t cgen_var_572;
8108 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_572, 1);
8109 stream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008110 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8111 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008112 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8113 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008114 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008115 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008116 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008117 AEMU_SCOPED_TRACE("vkCmdBlitImage readParams");
8118 AEMU_SCOPED_TRACE("vkCmdBlitImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008119 mImpl->log("finish vkCmdBlitImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008120}
8121
8122void VkEncoder::vkCmdCopyBufferToImage(
8123 VkCommandBuffer commandBuffer,
8124 VkBuffer srcBuffer,
8125 VkImage dstImage,
8126 VkImageLayout dstImageLayout,
8127 uint32_t regionCount,
8128 const VkBufferImageCopy* pRegions)
8129{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008130 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008131 mImpl->log("start vkCmdCopyBufferToImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008132 auto stream = mImpl->stream();
8133 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008134 auto resources = mImpl->resources();
8135 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008136 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008137 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008138 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008139 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008140 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008141 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008142 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008143 local_commandBuffer = commandBuffer;
8144 local_srcBuffer = srcBuffer;
8145 local_dstImage = dstImage;
8146 local_dstImageLayout = dstImageLayout;
8147 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008148 local_pRegions = nullptr;
8149 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008150 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008151 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008152 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8153 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008154 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
8155 }
8156 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008157 if (local_pRegions)
8158 {
8159 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8160 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008161 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008162 }
8163 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008164 countingStream->rewind();
8165 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008166 uint64_t cgen_var_573;
8167 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_573, 1);
8168 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
8169 uint64_t cgen_var_574;
8170 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_574, 1);
8171 countingStream->write((uint64_t*)&cgen_var_574, 1 * 8);
8172 uint64_t cgen_var_575;
8173 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_575, 1);
8174 countingStream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008175 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8176 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8177 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8178 {
8179 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008180 }
8181 }
8182 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8183 countingStream->rewind();
8184 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
8185 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
8186 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008187 uint64_t cgen_var_576;
8188 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_576, 1);
8189 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
8190 uint64_t cgen_var_577;
8191 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_577, 1);
8192 stream->write((uint64_t*)&cgen_var_577, 1 * 8);
8193 uint64_t cgen_var_578;
8194 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_578, 1);
8195 stream->write((uint64_t*)&cgen_var_578, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008196 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8197 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008198 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8199 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008200 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008201 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008202 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage readParams");
8203 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008204 mImpl->log("finish vkCmdCopyBufferToImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008205}
8206
8207void VkEncoder::vkCmdCopyImageToBuffer(
8208 VkCommandBuffer commandBuffer,
8209 VkImage srcImage,
8210 VkImageLayout srcImageLayout,
8211 VkBuffer dstBuffer,
8212 uint32_t regionCount,
8213 const VkBufferImageCopy* pRegions)
8214{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008215 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008216 mImpl->log("start vkCmdCopyImageToBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008217 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 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008224 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008225 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008226 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008227 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008228 local_commandBuffer = commandBuffer;
8229 local_srcImage = srcImage;
8230 local_srcImageLayout = srcImageLayout;
8231 local_dstBuffer = dstBuffer;
8232 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008233 local_pRegions = nullptr;
8234 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008235 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008236 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008237 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8238 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008239 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
8240 }
8241 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008242 if (local_pRegions)
8243 {
8244 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8245 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008246 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008247 }
8248 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008249 countingStream->rewind();
8250 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008251 uint64_t cgen_var_579;
8252 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
8253 countingStream->write((uint64_t*)&cgen_var_579, 1 * 8);
8254 uint64_t cgen_var_580;
8255 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_580, 1);
8256 countingStream->write((uint64_t*)&cgen_var_580, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008257 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008258 uint64_t cgen_var_581;
8259 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_581, 1);
8260 countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008261 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8262 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8263 {
8264 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008265 }
8266 }
8267 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8268 countingStream->rewind();
8269 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
8270 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
8271 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008272 uint64_t cgen_var_582;
8273 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_582, 1);
8274 stream->write((uint64_t*)&cgen_var_582, 1 * 8);
8275 uint64_t cgen_var_583;
8276 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_583, 1);
8277 stream->write((uint64_t*)&cgen_var_583, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008278 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008279 uint64_t cgen_var_584;
8280 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
8281 stream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008282 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008283 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8284 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008285 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008286 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008287 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer readParams");
8288 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008289 mImpl->log("finish vkCmdCopyImageToBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008290}
8291
8292void VkEncoder::vkCmdUpdateBuffer(
8293 VkCommandBuffer commandBuffer,
8294 VkBuffer dstBuffer,
8295 VkDeviceSize dstOffset,
8296 VkDeviceSize dataSize,
8297 const void* pData)
8298{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008299 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008300 mImpl->log("start vkCmdUpdateBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008301 auto stream = mImpl->stream();
8302 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008303 auto resources = mImpl->resources();
8304 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008305 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008306 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008307 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008308 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008309 VkDeviceSize local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008310 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008311 local_commandBuffer = commandBuffer;
8312 local_dstBuffer = dstBuffer;
8313 local_dstOffset = dstOffset;
8314 local_dataSize = dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008315 local_pData = nullptr;
8316 if (pData)
8317 {
8318 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
8319 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008320 countingStream->rewind();
8321 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008322 uint64_t cgen_var_585;
8323 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
8324 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
8325 uint64_t cgen_var_586;
8326 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_586, 1);
8327 countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008328 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8329 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
8330 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008331 }
8332 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8333 countingStream->rewind();
8334 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
8335 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
8336 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008337 uint64_t cgen_var_587;
8338 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
8339 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
8340 uint64_t cgen_var_588;
8341 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_588, 1);
8342 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008343 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8344 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
8345 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008346 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer readParams");
8347 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008348 mImpl->log("finish vkCmdUpdateBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008349}
8350
8351void VkEncoder::vkCmdFillBuffer(
8352 VkCommandBuffer commandBuffer,
8353 VkBuffer dstBuffer,
8354 VkDeviceSize dstOffset,
8355 VkDeviceSize size,
8356 uint32_t data)
8357{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008358 AEMU_SCOPED_TRACE("vkCmdFillBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008359 mImpl->log("start vkCmdFillBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008360 auto stream = mImpl->stream();
8361 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008362 auto resources = mImpl->resources();
8363 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008364 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008365 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008366 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008367 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008368 VkDeviceSize local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008369 uint32_t local_data;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008370 local_commandBuffer = commandBuffer;
8371 local_dstBuffer = dstBuffer;
8372 local_dstOffset = dstOffset;
8373 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008374 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008375 countingStream->rewind();
8376 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008377 uint64_t cgen_var_589;
8378 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
8379 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
8380 uint64_t cgen_var_590;
8381 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_590, 1);
8382 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008383 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8384 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
8385 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008386 }
8387 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8388 countingStream->rewind();
8389 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
8390 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
8391 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008392 uint64_t cgen_var_591;
8393 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
8394 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
8395 uint64_t cgen_var_592;
8396 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_592, 1);
8397 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008398 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8399 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
8400 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008401 AEMU_SCOPED_TRACE("vkCmdFillBuffer readParams");
8402 AEMU_SCOPED_TRACE("vkCmdFillBuffer returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008403 mImpl->log("finish vkCmdFillBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008404}
8405
8406void VkEncoder::vkCmdClearColorImage(
8407 VkCommandBuffer commandBuffer,
8408 VkImage image,
8409 VkImageLayout imageLayout,
8410 const VkClearColorValue* pColor,
8411 uint32_t rangeCount,
8412 const VkImageSubresourceRange* pRanges)
8413{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008414 AEMU_SCOPED_TRACE("vkCmdClearColorImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008415 mImpl->log("start vkCmdClearColorImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008416 auto stream = mImpl->stream();
8417 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008418 auto resources = mImpl->resources();
8419 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008420 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008421 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008422 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008423 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008424 VkClearColorValue* local_pColor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008425 uint32_t local_rangeCount;
8426 VkImageSubresourceRange* local_pRanges;
8427 local_commandBuffer = commandBuffer;
8428 local_image = image;
8429 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008430 local_pColor = nullptr;
8431 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008432 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008433 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
8434 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
8435 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008436 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008437 local_pRanges = nullptr;
8438 if (pRanges)
8439 {
8440 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008441 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8442 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008443 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
8444 }
8445 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008446 if (local_pColor)
8447 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008448 transform_tohost_VkClearColorValue(mImpl->resources(), (VkClearColorValue*)(local_pColor));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008449 }
8450 if (local_pRanges)
8451 {
8452 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8453 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008454 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008455 }
8456 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008457 countingStream->rewind();
8458 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008459 uint64_t cgen_var_593;
8460 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
8461 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
8462 uint64_t cgen_var_594;
8463 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_594, 1);
8464 countingStream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008465 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8466 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
8467 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8468 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8469 {
8470 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008471 }
8472 }
8473 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8474 countingStream->rewind();
8475 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
8476 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
8477 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008478 uint64_t cgen_var_595;
8479 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
8480 stream->write((uint64_t*)&cgen_var_595, 1 * 8);
8481 uint64_t cgen_var_596;
8482 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_596, 1);
8483 stream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008484 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8485 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
8486 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008487 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8488 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008489 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008490 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008491 AEMU_SCOPED_TRACE("vkCmdClearColorImage readParams");
8492 AEMU_SCOPED_TRACE("vkCmdClearColorImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008493 mImpl->log("finish vkCmdClearColorImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008494}
8495
8496void VkEncoder::vkCmdClearDepthStencilImage(
8497 VkCommandBuffer commandBuffer,
8498 VkImage image,
8499 VkImageLayout imageLayout,
8500 const VkClearDepthStencilValue* pDepthStencil,
8501 uint32_t rangeCount,
8502 const VkImageSubresourceRange* pRanges)
8503{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008504 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008505 mImpl->log("start vkCmdClearDepthStencilImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008506 auto stream = mImpl->stream();
8507 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008508 auto resources = mImpl->resources();
8509 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008510 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008511 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008512 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008513 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008514 VkClearDepthStencilValue* local_pDepthStencil;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008515 uint32_t local_rangeCount;
8516 VkImageSubresourceRange* local_pRanges;
8517 local_commandBuffer = commandBuffer;
8518 local_image = image;
8519 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008520 local_pDepthStencil = nullptr;
8521 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008522 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008523 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
8524 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
8525 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008526 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008527 local_pRanges = nullptr;
8528 if (pRanges)
8529 {
8530 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008531 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8532 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008533 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
8534 }
8535 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008536 if (local_pDepthStencil)
8537 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008538 transform_tohost_VkClearDepthStencilValue(mImpl->resources(), (VkClearDepthStencilValue*)(local_pDepthStencil));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008539 }
8540 if (local_pRanges)
8541 {
8542 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8543 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008544 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008545 }
8546 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008547 countingStream->rewind();
8548 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008549 uint64_t cgen_var_597;
8550 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_597, 1);
8551 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
8552 uint64_t cgen_var_598;
8553 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_598, 1);
8554 countingStream->write((uint64_t*)&cgen_var_598, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008555 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8556 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8557 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8558 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8559 {
8560 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008561 }
8562 }
8563 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8564 countingStream->rewind();
8565 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
8566 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
8567 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008568 uint64_t cgen_var_599;
8569 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_599, 1);
8570 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
8571 uint64_t cgen_var_600;
8572 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_600, 1);
8573 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008574 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8575 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8576 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008577 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8578 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008579 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008580 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008581 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage readParams");
8582 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008583 mImpl->log("finish vkCmdClearDepthStencilImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008584}
8585
8586void VkEncoder::vkCmdClearAttachments(
8587 VkCommandBuffer commandBuffer,
8588 uint32_t attachmentCount,
8589 const VkClearAttachment* pAttachments,
8590 uint32_t rectCount,
8591 const VkClearRect* pRects)
8592{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008593 AEMU_SCOPED_TRACE("vkCmdClearAttachments encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008594 mImpl->log("start vkCmdClearAttachments");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008595 auto stream = mImpl->stream();
8596 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008597 auto resources = mImpl->resources();
8598 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008599 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008600 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008601 uint32_t local_attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008602 VkClearAttachment* local_pAttachments;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008603 uint32_t local_rectCount;
8604 VkClearRect* local_pRects;
8605 local_commandBuffer = commandBuffer;
8606 local_attachmentCount = attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008607 local_pAttachments = nullptr;
8608 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008609 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008610 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008611 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8612 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008613 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008614 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008615 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008616 local_rectCount = rectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008617 local_pRects = nullptr;
8618 if (pRects)
8619 {
8620 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008621 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8622 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008623 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
8624 }
8625 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008626 if (local_pAttachments)
8627 {
8628 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8629 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008630 transform_tohost_VkClearAttachment(mImpl->resources(), (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008631 }
8632 }
8633 if (local_pRects)
8634 {
8635 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8636 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008637 transform_tohost_VkClearRect(mImpl->resources(), (VkClearRect*)(local_pRects + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008638 }
8639 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008640 countingStream->rewind();
8641 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008642 uint64_t cgen_var_601;
8643 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
8644 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008645 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
8646 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8647 {
8648 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
8649 }
8650 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
8651 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8652 {
8653 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008654 }
8655 }
8656 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8657 countingStream->rewind();
8658 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
8659 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
8660 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008661 uint64_t cgen_var_602;
8662 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_602, 1);
8663 stream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008664 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008665 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8666 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008667 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008668 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008669 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008670 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8671 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008672 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008673 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008674 AEMU_SCOPED_TRACE("vkCmdClearAttachments readParams");
8675 AEMU_SCOPED_TRACE("vkCmdClearAttachments returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008676 mImpl->log("finish vkCmdClearAttachments");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008677}
8678
8679void VkEncoder::vkCmdResolveImage(
8680 VkCommandBuffer commandBuffer,
8681 VkImage srcImage,
8682 VkImageLayout srcImageLayout,
8683 VkImage dstImage,
8684 VkImageLayout dstImageLayout,
8685 uint32_t regionCount,
8686 const VkImageResolve* pRegions)
8687{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008688 AEMU_SCOPED_TRACE("vkCmdResolveImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008689 mImpl->log("start vkCmdResolveImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008690 auto stream = mImpl->stream();
8691 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008692 auto resources = mImpl->resources();
8693 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008694 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008695 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008696 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008697 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008698 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008699 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008700 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008701 VkImageResolve* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008702 local_commandBuffer = commandBuffer;
8703 local_srcImage = srcImage;
8704 local_srcImageLayout = srcImageLayout;
8705 local_dstImage = dstImage;
8706 local_dstImageLayout = dstImageLayout;
8707 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008708 local_pRegions = nullptr;
8709 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008710 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008711 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008712 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8713 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008714 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
8715 }
8716 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008717 if (local_pRegions)
8718 {
8719 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8720 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008721 transform_tohost_VkImageResolve(mImpl->resources(), (VkImageResolve*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008722 }
8723 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008724 countingStream->rewind();
8725 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008726 uint64_t cgen_var_603;
8727 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
8728 countingStream->write((uint64_t*)&cgen_var_603, 1 * 8);
8729 uint64_t cgen_var_604;
8730 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_604, 1);
8731 countingStream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008732 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008733 uint64_t cgen_var_605;
8734 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_605, 1);
8735 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008736 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8737 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8738 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8739 {
8740 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008741 }
8742 }
8743 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8744 countingStream->rewind();
8745 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
8746 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
8747 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008748 uint64_t cgen_var_606;
8749 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_606, 1);
8750 stream->write((uint64_t*)&cgen_var_606, 1 * 8);
8751 uint64_t cgen_var_607;
8752 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_607, 1);
8753 stream->write((uint64_t*)&cgen_var_607, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008754 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008755 uint64_t cgen_var_608;
8756 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_608, 1);
8757 stream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008758 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8759 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008760 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8761 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008762 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008763 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008764 AEMU_SCOPED_TRACE("vkCmdResolveImage readParams");
8765 AEMU_SCOPED_TRACE("vkCmdResolveImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008766 mImpl->log("finish vkCmdResolveImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008767}
8768
8769void VkEncoder::vkCmdSetEvent(
8770 VkCommandBuffer commandBuffer,
8771 VkEvent event,
8772 VkPipelineStageFlags stageMask)
8773{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008774 AEMU_SCOPED_TRACE("vkCmdSetEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008775 mImpl->log("start vkCmdSetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008776 auto stream = mImpl->stream();
8777 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008778 auto resources = mImpl->resources();
8779 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008780 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008781 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008782 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008783 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008784 local_commandBuffer = commandBuffer;
8785 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008786 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008787 countingStream->rewind();
8788 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008789 uint64_t cgen_var_609;
8790 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
8791 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
8792 uint64_t cgen_var_610;
8793 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_610, 1);
8794 countingStream->write((uint64_t*)&cgen_var_610, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008795 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008796 }
8797 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8798 countingStream->rewind();
8799 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
8800 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
8801 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008802 uint64_t cgen_var_611;
8803 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
8804 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
8805 uint64_t cgen_var_612;
8806 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_612, 1);
8807 stream->write((uint64_t*)&cgen_var_612, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008808 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008809 AEMU_SCOPED_TRACE("vkCmdSetEvent readParams");
8810 AEMU_SCOPED_TRACE("vkCmdSetEvent returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008811 mImpl->log("finish vkCmdSetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008812}
8813
8814void VkEncoder::vkCmdResetEvent(
8815 VkCommandBuffer commandBuffer,
8816 VkEvent event,
8817 VkPipelineStageFlags stageMask)
8818{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008819 AEMU_SCOPED_TRACE("vkCmdResetEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008820 mImpl->log("start vkCmdResetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008821 auto stream = mImpl->stream();
8822 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008823 auto resources = mImpl->resources();
8824 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008825 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008826 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008827 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008828 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008829 local_commandBuffer = commandBuffer;
8830 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008831 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008832 countingStream->rewind();
8833 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008834 uint64_t cgen_var_613;
8835 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
8836 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
8837 uint64_t cgen_var_614;
8838 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_614, 1);
8839 countingStream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008840 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008841 }
8842 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8843 countingStream->rewind();
8844 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
8845 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
8846 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008847 uint64_t cgen_var_615;
8848 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
8849 stream->write((uint64_t*)&cgen_var_615, 1 * 8);
8850 uint64_t cgen_var_616;
8851 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_616, 1);
8852 stream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008853 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008854 AEMU_SCOPED_TRACE("vkCmdResetEvent readParams");
8855 AEMU_SCOPED_TRACE("vkCmdResetEvent returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008856 mImpl->log("finish vkCmdResetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008857}
8858
8859void VkEncoder::vkCmdWaitEvents(
8860 VkCommandBuffer commandBuffer,
8861 uint32_t eventCount,
8862 const VkEvent* pEvents,
8863 VkPipelineStageFlags srcStageMask,
8864 VkPipelineStageFlags dstStageMask,
8865 uint32_t memoryBarrierCount,
8866 const VkMemoryBarrier* pMemoryBarriers,
8867 uint32_t bufferMemoryBarrierCount,
8868 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8869 uint32_t imageMemoryBarrierCount,
8870 const VkImageMemoryBarrier* pImageMemoryBarriers)
8871{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008872 AEMU_SCOPED_TRACE("vkCmdWaitEvents encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008873 mImpl->log("start vkCmdWaitEvents");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008874 auto stream = mImpl->stream();
8875 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008876 auto resources = mImpl->resources();
8877 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008878 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008879 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008880 uint32_t local_eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008881 VkEvent* local_pEvents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008882 VkPipelineStageFlags local_srcStageMask;
8883 VkPipelineStageFlags local_dstStageMask;
8884 uint32_t local_memoryBarrierCount;
8885 VkMemoryBarrier* local_pMemoryBarriers;
8886 uint32_t local_bufferMemoryBarrierCount;
8887 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8888 uint32_t local_imageMemoryBarrierCount;
8889 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8890 local_commandBuffer = commandBuffer;
8891 local_eventCount = eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008892 local_pEvents = nullptr;
8893 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008894 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008895 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
8896 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008897 local_srcStageMask = srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008898 local_dstStageMask = dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008899 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008900 local_pMemoryBarriers = nullptr;
8901 if (pMemoryBarriers)
8902 {
8903 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008904 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8905 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008906 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008907 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008908 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008909 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008910 local_pBufferMemoryBarriers = nullptr;
8911 if (pBufferMemoryBarriers)
8912 {
8913 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008914 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8915 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008916 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008917 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008918 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008919 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008920 local_pImageMemoryBarriers = nullptr;
8921 if (pImageMemoryBarriers)
8922 {
8923 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008924 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8925 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008926 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8927 }
8928 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008929 if (local_pMemoryBarriers)
8930 {
8931 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8932 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008933 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008934 }
8935 }
8936 if (local_pBufferMemoryBarriers)
8937 {
8938 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8939 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008940 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008941 }
8942 }
8943 if (local_pImageMemoryBarriers)
8944 {
8945 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8946 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008947 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008948 }
8949 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008950 countingStream->rewind();
8951 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008952 uint64_t cgen_var_617;
8953 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
8954 countingStream->write((uint64_t*)&cgen_var_617, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008955 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008956 if (((eventCount)))
8957 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008958 uint64_t* cgen_var_618;
8959 countingStream->alloc((void**)&cgen_var_618, ((eventCount)) * 8);
8960 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_618, ((eventCount)));
8961 countingStream->write((uint64_t*)cgen_var_618, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008962 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008963 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8964 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8965 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8966 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8967 {
8968 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8969 }
8970 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8971 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8972 {
8973 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8974 }
8975 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8976 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8977 {
8978 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008979 }
8980 }
8981 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8982 countingStream->rewind();
8983 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
8984 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
8985 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008986 uint64_t cgen_var_619;
8987 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
8988 stream->write((uint64_t*)&cgen_var_619, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008989 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008990 if (((eventCount)))
8991 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08008992 uint64_t* cgen_var_620;
8993 stream->alloc((void**)&cgen_var_620, ((eventCount)) * 8);
8994 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_620, ((eventCount)));
8995 stream->write((uint64_t*)cgen_var_620, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008996 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008997 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8998 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8999 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009000 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9001 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009002 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009003 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009004 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009005 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9006 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009007 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009008 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009009 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009010 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9011 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009012 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009013 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009014 AEMU_SCOPED_TRACE("vkCmdWaitEvents readParams");
9015 AEMU_SCOPED_TRACE("vkCmdWaitEvents returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009016 mImpl->log("finish vkCmdWaitEvents");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009017}
9018
9019void VkEncoder::vkCmdPipelineBarrier(
9020 VkCommandBuffer commandBuffer,
9021 VkPipelineStageFlags srcStageMask,
9022 VkPipelineStageFlags dstStageMask,
9023 VkDependencyFlags dependencyFlags,
9024 uint32_t memoryBarrierCount,
9025 const VkMemoryBarrier* pMemoryBarriers,
9026 uint32_t bufferMemoryBarrierCount,
9027 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
9028 uint32_t imageMemoryBarrierCount,
9029 const VkImageMemoryBarrier* pImageMemoryBarriers)
9030{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009031 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009032 mImpl->log("start vkCmdPipelineBarrier");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009033 auto stream = mImpl->stream();
9034 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009035 auto resources = mImpl->resources();
9036 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009037 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009038 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009039 VkPipelineStageFlags local_srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009040 VkPipelineStageFlags local_dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009041 VkDependencyFlags local_dependencyFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009042 uint32_t local_memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009043 VkMemoryBarrier* local_pMemoryBarriers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009044 uint32_t local_bufferMemoryBarrierCount;
9045 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
9046 uint32_t local_imageMemoryBarrierCount;
9047 VkImageMemoryBarrier* local_pImageMemoryBarriers;
9048 local_commandBuffer = commandBuffer;
9049 local_srcStageMask = srcStageMask;
9050 local_dstStageMask = dstStageMask;
9051 local_dependencyFlags = dependencyFlags;
9052 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009053 local_pMemoryBarriers = nullptr;
9054 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009055 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009056 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009057 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9058 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009059 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009060 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009061 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009062 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009063 local_pBufferMemoryBarriers = nullptr;
9064 if (pBufferMemoryBarriers)
9065 {
9066 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009067 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9068 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009069 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009070 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009071 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009072 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009073 local_pImageMemoryBarriers = nullptr;
9074 if (pImageMemoryBarriers)
9075 {
9076 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009077 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9078 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009079 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
9080 }
9081 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009082 if (local_pMemoryBarriers)
9083 {
9084 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9085 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009086 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009087 }
9088 }
9089 if (local_pBufferMemoryBarriers)
9090 {
9091 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9092 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009093 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009094 }
9095 }
9096 if (local_pImageMemoryBarriers)
9097 {
9098 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9099 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009100 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009101 }
9102 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009103 countingStream->rewind();
9104 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009105 uint64_t cgen_var_621;
9106 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
9107 countingStream->write((uint64_t*)&cgen_var_621, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009108 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
9109 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
9110 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
9111 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
9112 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9113 {
9114 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
9115 }
9116 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
9117 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9118 {
9119 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
9120 }
9121 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
9122 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9123 {
9124 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009125 }
9126 }
9127 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9128 countingStream->rewind();
9129 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
9130 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
9131 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009132 uint64_t cgen_var_622;
9133 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_622, 1);
9134 stream->write((uint64_t*)&cgen_var_622, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009135 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
9136 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
9137 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
9138 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009139 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9140 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009141 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009142 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009143 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009144 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9145 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009146 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009147 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009148 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009149 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9150 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009151 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009152 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009153 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier readParams");
9154 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009155 mImpl->log("finish vkCmdPipelineBarrier");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009156}
9157
9158void VkEncoder::vkCmdBeginQuery(
9159 VkCommandBuffer commandBuffer,
9160 VkQueryPool queryPool,
9161 uint32_t query,
9162 VkQueryControlFlags flags)
9163{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009164 AEMU_SCOPED_TRACE("vkCmdBeginQuery encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009165 mImpl->log("start vkCmdBeginQuery");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009166 auto stream = mImpl->stream();
9167 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009168 auto resources = mImpl->resources();
9169 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009170 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009171 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009172 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009173 uint32_t local_query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009174 VkQueryControlFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009175 local_commandBuffer = commandBuffer;
9176 local_queryPool = queryPool;
9177 local_query = query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009178 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009179 countingStream->rewind();
9180 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009181 uint64_t cgen_var_623;
9182 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
9183 countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
9184 uint64_t cgen_var_624;
9185 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
9186 countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009187 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
9188 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009189 }
9190 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9191 countingStream->rewind();
9192 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
9193 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
9194 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009195 uint64_t cgen_var_625;
9196 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
9197 stream->write((uint64_t*)&cgen_var_625, 1 * 8);
9198 uint64_t cgen_var_626;
9199 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
9200 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009201 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
9202 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009203 AEMU_SCOPED_TRACE("vkCmdBeginQuery readParams");
9204 AEMU_SCOPED_TRACE("vkCmdBeginQuery returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009205 mImpl->log("finish vkCmdBeginQuery");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009206}
9207
9208void VkEncoder::vkCmdEndQuery(
9209 VkCommandBuffer commandBuffer,
9210 VkQueryPool queryPool,
9211 uint32_t query)
9212{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009213 AEMU_SCOPED_TRACE("vkCmdEndQuery encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009214 mImpl->log("start vkCmdEndQuery");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009215 auto stream = mImpl->stream();
9216 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009217 auto resources = mImpl->resources();
9218 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009219 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009220 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009221 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009222 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009223 local_commandBuffer = commandBuffer;
9224 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009225 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009226 countingStream->rewind();
9227 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009228 uint64_t cgen_var_627;
9229 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
9230 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
9231 uint64_t cgen_var_628;
9232 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
9233 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009234 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009235 }
9236 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9237 countingStream->rewind();
9238 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
9239 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
9240 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009241 uint64_t cgen_var_629;
9242 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
9243 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
9244 uint64_t cgen_var_630;
9245 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
9246 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009247 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009248 AEMU_SCOPED_TRACE("vkCmdEndQuery readParams");
9249 AEMU_SCOPED_TRACE("vkCmdEndQuery returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009250 mImpl->log("finish vkCmdEndQuery");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009251}
9252
9253void VkEncoder::vkCmdResetQueryPool(
9254 VkCommandBuffer commandBuffer,
9255 VkQueryPool queryPool,
9256 uint32_t firstQuery,
9257 uint32_t queryCount)
9258{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009259 AEMU_SCOPED_TRACE("vkCmdResetQueryPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009260 mImpl->log("start vkCmdResetQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009261 auto stream = mImpl->stream();
9262 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009263 auto resources = mImpl->resources();
9264 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009265 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009266 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009267 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009268 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009269 uint32_t local_queryCount;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009270 local_commandBuffer = commandBuffer;
9271 local_queryPool = queryPool;
9272 local_firstQuery = firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009273 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009274 countingStream->rewind();
9275 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009276 uint64_t cgen_var_631;
9277 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
9278 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
9279 uint64_t cgen_var_632;
9280 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
9281 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009282 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9283 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009284 }
9285 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9286 countingStream->rewind();
9287 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
9288 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
9289 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009290 uint64_t cgen_var_633;
9291 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_633, 1);
9292 stream->write((uint64_t*)&cgen_var_633, 1 * 8);
9293 uint64_t cgen_var_634;
9294 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_634, 1);
9295 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009296 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9297 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009298 AEMU_SCOPED_TRACE("vkCmdResetQueryPool readParams");
9299 AEMU_SCOPED_TRACE("vkCmdResetQueryPool returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009300 mImpl->log("finish vkCmdResetQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009301}
9302
9303void VkEncoder::vkCmdWriteTimestamp(
9304 VkCommandBuffer commandBuffer,
9305 VkPipelineStageFlagBits pipelineStage,
9306 VkQueryPool queryPool,
9307 uint32_t query)
9308{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009309 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009310 mImpl->log("start vkCmdWriteTimestamp");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009311 auto stream = mImpl->stream();
9312 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009313 auto resources = mImpl->resources();
9314 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009315 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009316 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009317 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009318 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009319 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009320 local_commandBuffer = commandBuffer;
9321 local_pipelineStage = pipelineStage;
9322 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009323 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009324 countingStream->rewind();
9325 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009326 uint64_t cgen_var_635;
9327 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_635, 1);
9328 countingStream->write((uint64_t*)&cgen_var_635, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009329 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009330 uint64_t cgen_var_636;
9331 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_636, 1);
9332 countingStream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009333 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009334 }
9335 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9336 countingStream->rewind();
9337 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
9338 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
9339 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009340 uint64_t cgen_var_637;
9341 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
9342 stream->write((uint64_t*)&cgen_var_637, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009343 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009344 uint64_t cgen_var_638;
9345 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_638, 1);
9346 stream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009347 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009348 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp readParams");
9349 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009350 mImpl->log("finish vkCmdWriteTimestamp");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009351}
9352
9353void VkEncoder::vkCmdCopyQueryPoolResults(
9354 VkCommandBuffer commandBuffer,
9355 VkQueryPool queryPool,
9356 uint32_t firstQuery,
9357 uint32_t queryCount,
9358 VkBuffer dstBuffer,
9359 VkDeviceSize dstOffset,
9360 VkDeviceSize stride,
9361 VkQueryResultFlags flags)
9362{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009363 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009364 mImpl->log("start vkCmdCopyQueryPoolResults");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009365 auto stream = mImpl->stream();
9366 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009367 auto resources = mImpl->resources();
9368 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009369 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009370 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009371 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009372 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009373 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009374 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009375 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009376 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009377 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009378 local_commandBuffer = commandBuffer;
9379 local_queryPool = queryPool;
9380 local_firstQuery = firstQuery;
9381 local_queryCount = queryCount;
9382 local_dstBuffer = dstBuffer;
9383 local_dstOffset = dstOffset;
9384 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009385 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009386 countingStream->rewind();
9387 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009388 uint64_t cgen_var_639;
9389 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
9390 countingStream->write((uint64_t*)&cgen_var_639, 1 * 8);
9391 uint64_t cgen_var_640;
9392 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_640, 1);
9393 countingStream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009394 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9395 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009396 uint64_t cgen_var_641;
9397 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_641, 1);
9398 countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009399 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
9400 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
9401 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009402 }
9403 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9404 countingStream->rewind();
9405 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
9406 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
9407 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009408 uint64_t cgen_var_642;
9409 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
9410 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
9411 uint64_t cgen_var_643;
9412 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_643, 1);
9413 stream->write((uint64_t*)&cgen_var_643, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009414 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9415 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009416 uint64_t cgen_var_644;
9417 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_644, 1);
9418 stream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009419 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
9420 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
9421 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009422 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults readParams");
9423 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009424 mImpl->log("finish vkCmdCopyQueryPoolResults");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009425}
9426
9427void VkEncoder::vkCmdPushConstants(
9428 VkCommandBuffer commandBuffer,
9429 VkPipelineLayout layout,
9430 VkShaderStageFlags stageFlags,
9431 uint32_t offset,
9432 uint32_t size,
9433 const void* pValues)
9434{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009435 AEMU_SCOPED_TRACE("vkCmdPushConstants encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009436 mImpl->log("start vkCmdPushConstants");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009437 auto stream = mImpl->stream();
9438 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009439 auto resources = mImpl->resources();
9440 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009441 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009442 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009443 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009444 VkShaderStageFlags local_stageFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009445 uint32_t local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009446 uint32_t local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009447 void* local_pValues;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009448 local_commandBuffer = commandBuffer;
9449 local_layout = layout;
9450 local_stageFlags = stageFlags;
9451 local_offset = offset;
9452 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009453 local_pValues = nullptr;
9454 if (pValues)
9455 {
9456 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
9457 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009458 countingStream->rewind();
9459 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009460 uint64_t cgen_var_645;
9461 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
9462 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
9463 uint64_t cgen_var_646;
9464 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_646, 1);
9465 countingStream->write((uint64_t*)&cgen_var_646, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009466 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
9467 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
9468 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
9469 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009470 }
9471 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9472 countingStream->rewind();
9473 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
9474 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
9475 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009476 uint64_t cgen_var_647;
9477 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
9478 stream->write((uint64_t*)&cgen_var_647, 1 * 8);
9479 uint64_t cgen_var_648;
9480 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_648, 1);
9481 stream->write((uint64_t*)&cgen_var_648, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009482 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
9483 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
9484 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
9485 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009486 AEMU_SCOPED_TRACE("vkCmdPushConstants readParams");
9487 AEMU_SCOPED_TRACE("vkCmdPushConstants returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009488 mImpl->log("finish vkCmdPushConstants");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009489}
9490
9491void VkEncoder::vkCmdBeginRenderPass(
9492 VkCommandBuffer commandBuffer,
9493 const VkRenderPassBeginInfo* pRenderPassBegin,
9494 VkSubpassContents contents)
9495{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009496 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009497 mImpl->log("start vkCmdBeginRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009498 auto stream = mImpl->stream();
9499 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009500 auto resources = mImpl->resources();
9501 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009502 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009503 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009504 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009505 VkSubpassContents local_contents;
9506 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009507 local_pRenderPassBegin = nullptr;
9508 if (pRenderPassBegin)
9509 {
9510 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
9511 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9512 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009513 local_contents = contents;
Lingfeng Yang62b23322018-12-24 12:45:47 -08009514 if (local_pRenderPassBegin)
9515 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009516 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009517 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009518 countingStream->rewind();
9519 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009520 uint64_t cgen_var_649;
9521 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
9522 countingStream->write((uint64_t*)&cgen_var_649, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009523 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9524 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009525 }
9526 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9527 countingStream->rewind();
9528 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
9529 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
9530 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009531 uint64_t cgen_var_650;
9532 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_650, 1);
9533 stream->write((uint64_t*)&cgen_var_650, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009534 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9535 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009536 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass readParams");
9537 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009538 mImpl->log("finish vkCmdBeginRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009539}
9540
9541void VkEncoder::vkCmdNextSubpass(
9542 VkCommandBuffer commandBuffer,
9543 VkSubpassContents contents)
9544{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009545 AEMU_SCOPED_TRACE("vkCmdNextSubpass encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009546 mImpl->log("start vkCmdNextSubpass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009547 auto stream = mImpl->stream();
9548 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009549 auto resources = mImpl->resources();
9550 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009551 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009552 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009553 VkSubpassContents local_contents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009554 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009555 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009556 countingStream->rewind();
9557 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009558 uint64_t cgen_var_651;
9559 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_651, 1);
9560 countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009561 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009562 }
9563 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9564 countingStream->rewind();
9565 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
9566 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
9567 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009568 uint64_t cgen_var_652;
9569 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_652, 1);
9570 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009571 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009572 AEMU_SCOPED_TRACE("vkCmdNextSubpass readParams");
9573 AEMU_SCOPED_TRACE("vkCmdNextSubpass returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009574 mImpl->log("finish vkCmdNextSubpass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009575}
9576
9577void VkEncoder::vkCmdEndRenderPass(
9578 VkCommandBuffer commandBuffer)
9579{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009580 AEMU_SCOPED_TRACE("vkCmdEndRenderPass encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009581 mImpl->log("start vkCmdEndRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009582 auto stream = mImpl->stream();
9583 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009584 auto resources = mImpl->resources();
9585 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009586 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009587 VkCommandBuffer local_commandBuffer;
9588 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009589 countingStream->rewind();
9590 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009591 uint64_t cgen_var_653;
9592 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_653, 1);
9593 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009594 }
9595 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9596 countingStream->rewind();
9597 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
9598 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
9599 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009600 uint64_t cgen_var_654;
9601 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_654, 1);
9602 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009603 AEMU_SCOPED_TRACE("vkCmdEndRenderPass readParams");
9604 AEMU_SCOPED_TRACE("vkCmdEndRenderPass returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009605 mImpl->log("finish vkCmdEndRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009606}
9607
9608void VkEncoder::vkCmdExecuteCommands(
9609 VkCommandBuffer commandBuffer,
9610 uint32_t commandBufferCount,
9611 const VkCommandBuffer* pCommandBuffers)
9612{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009613 AEMU_SCOPED_TRACE("vkCmdExecuteCommands encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009614 mImpl->log("start vkCmdExecuteCommands");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009615 auto stream = mImpl->stream();
9616 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009617 auto resources = mImpl->resources();
9618 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009619 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009620 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009621 uint32_t local_commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009622 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009623 local_commandBuffer = commandBuffer;
9624 local_commandBufferCount = commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009625 local_pCommandBuffers = nullptr;
9626 if (pCommandBuffers)
9627 {
9628 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
9629 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009630 countingStream->rewind();
9631 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009632 uint64_t cgen_var_655;
9633 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_655, 1);
9634 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009635 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009636 if (((commandBufferCount)))
9637 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009638 uint64_t* cgen_var_656;
9639 countingStream->alloc((void**)&cgen_var_656, ((commandBufferCount)) * 8);
9640 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_656, ((commandBufferCount)));
9641 countingStream->write((uint64_t*)cgen_var_656, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08009642 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009643 }
9644 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9645 countingStream->rewind();
9646 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
9647 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
9648 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009649 uint64_t cgen_var_657;
9650 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
9651 stream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009652 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009653 if (((commandBufferCount)))
9654 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009655 uint64_t* cgen_var_658;
9656 stream->alloc((void**)&cgen_var_658, ((commandBufferCount)) * 8);
9657 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_658, ((commandBufferCount)));
9658 stream->write((uint64_t*)cgen_var_658, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08009659 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009660 AEMU_SCOPED_TRACE("vkCmdExecuteCommands readParams");
9661 AEMU_SCOPED_TRACE("vkCmdExecuteCommands returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009662 mImpl->log("finish vkCmdExecuteCommands");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009663}
9664
9665#endif
9666#ifdef VK_VERSION_1_1
9667VkResult VkEncoder::vkEnumerateInstanceVersion(
9668 uint32_t* pApiVersion)
9669{
Lingfeng Yange7391992019-03-15 09:42:13 -07009670 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion encode");
9671 mImpl->log("start vkEnumerateInstanceVersion");
9672 auto stream = mImpl->stream();
9673 auto countingStream = mImpl->countingStream();
9674 auto resources = mImpl->resources();
9675 auto pool = mImpl->pool();
9676 stream->setHandleMapping(resources->unwrapMapping());
9677 countingStream->rewind();
9678 {
9679 countingStream->write((uint32_t*)pApiVersion, sizeof(uint32_t));
9680 }
9681 uint32_t packetSize_vkEnumerateInstanceVersion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9682 countingStream->rewind();
9683 uint32_t opcode_vkEnumerateInstanceVersion = OP_vkEnumerateInstanceVersion;
9684 stream->write(&opcode_vkEnumerateInstanceVersion, sizeof(uint32_t));
9685 stream->write(&packetSize_vkEnumerateInstanceVersion, sizeof(uint32_t));
9686 stream->write((uint32_t*)pApiVersion, sizeof(uint32_t));
9687 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion readParams");
9688 stream->read((uint32_t*)pApiVersion, sizeof(uint32_t));
9689 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009690 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yange7391992019-03-15 09:42:13 -07009691 stream->read(&vkEnumerateInstanceVersion_VkResult_return, sizeof(VkResult));
9692 countingStream->clearPool();
9693 stream->clearPool();
9694 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009695 mImpl->log("finish vkEnumerateInstanceVersion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009696 return vkEnumerateInstanceVersion_VkResult_return;
9697}
9698
9699VkResult VkEncoder::vkBindBufferMemory2(
9700 VkDevice device,
9701 uint32_t bindInfoCount,
9702 const VkBindBufferMemoryInfo* pBindInfos)
9703{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009704 AEMU_SCOPED_TRACE("vkBindBufferMemory2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009705 mImpl->log("start vkBindBufferMemory2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009706 auto stream = mImpl->stream();
9707 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009708 auto resources = mImpl->resources();
9709 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009710 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009711 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009712 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009713 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009714 local_device = device;
9715 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009716 local_pBindInfos = nullptr;
9717 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009718 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009719 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009720 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9721 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009722 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
9723 }
9724 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009725 if (local_pBindInfos)
9726 {
9727 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9728 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009729 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009730 }
9731 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009732 countingStream->rewind();
9733 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009734 uint64_t cgen_var_659;
9735 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_659, 1);
9736 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009737 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9738 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9739 {
9740 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009741 }
9742 }
9743 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9744 countingStream->rewind();
9745 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
9746 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
9747 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009748 uint64_t cgen_var_660;
9749 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_660, 1);
9750 stream->write((uint64_t*)&cgen_var_660, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009751 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009752 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9753 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009754 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009755 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009756 AEMU_SCOPED_TRACE("vkBindBufferMemory2 readParams");
9757 AEMU_SCOPED_TRACE("vkBindBufferMemory2 returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009758 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
9759 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009760 countingStream->clearPool();
9761 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009762 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009763 mImpl->log("finish vkBindBufferMemory2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009764 return vkBindBufferMemory2_VkResult_return;
9765}
9766
9767VkResult VkEncoder::vkBindImageMemory2(
9768 VkDevice device,
9769 uint32_t bindInfoCount,
9770 const VkBindImageMemoryInfo* pBindInfos)
9771{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009772 AEMU_SCOPED_TRACE("vkBindImageMemory2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009773 mImpl->log("start vkBindImageMemory2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009774 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 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009780 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009781 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009782 local_device = device;
9783 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009784 local_pBindInfos = nullptr;
9785 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009786 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009787 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009788 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9789 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009790 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
9791 }
9792 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009793 if (local_pBindInfos)
9794 {
9795 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9796 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009797 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009798 }
9799 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009800 countingStream->rewind();
9801 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009802 uint64_t cgen_var_661;
9803 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_661, 1);
9804 countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009805 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9806 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9807 {
9808 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009809 }
9810 }
9811 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9812 countingStream->rewind();
9813 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
9814 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
9815 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009816 uint64_t cgen_var_662;
9817 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_662, 1);
9818 stream->write((uint64_t*)&cgen_var_662, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009819 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009820 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9821 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009822 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009823 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009824 AEMU_SCOPED_TRACE("vkBindImageMemory2 readParams");
9825 AEMU_SCOPED_TRACE("vkBindImageMemory2 returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009826 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
9827 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009828 countingStream->clearPool();
9829 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009830 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009831 mImpl->log("finish vkBindImageMemory2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009832 return vkBindImageMemory2_VkResult_return;
9833}
9834
9835void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
9836 VkDevice device,
9837 uint32_t heapIndex,
9838 uint32_t localDeviceIndex,
9839 uint32_t remoteDeviceIndex,
9840 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
9841{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009842 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009843 mImpl->log("start vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009844 auto stream = mImpl->stream();
9845 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009846 auto resources = mImpl->resources();
9847 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009848 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009849 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009850 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009851 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009852 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009853 local_device = device;
9854 local_heapIndex = heapIndex;
9855 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009856 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009857 countingStream->rewind();
9858 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009859 uint64_t cgen_var_663;
9860 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_663, 1);
9861 countingStream->write((uint64_t*)&cgen_var_663, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009862 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9863 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9864 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009865 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9866 }
9867 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9868 countingStream->rewind();
9869 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
9870 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
9871 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009872 uint64_t cgen_var_664;
9873 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_664, 1);
9874 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009875 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9876 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9877 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009878 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009879 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009880 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009881 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009882 mImpl->log("finish vkGetDeviceGroupPeerMemoryFeatures");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009883}
9884
9885void VkEncoder::vkCmdSetDeviceMask(
9886 VkCommandBuffer commandBuffer,
9887 uint32_t deviceMask)
9888{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009889 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009890 mImpl->log("start vkCmdSetDeviceMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009891 auto stream = mImpl->stream();
9892 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009893 auto resources = mImpl->resources();
9894 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009895 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009896 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009897 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009898 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009899 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009900 countingStream->rewind();
9901 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009902 uint64_t cgen_var_665;
9903 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_665, 1);
9904 countingStream->write((uint64_t*)&cgen_var_665, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009905 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009906 }
9907 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9908 countingStream->rewind();
9909 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
9910 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
9911 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009912 uint64_t cgen_var_666;
9913 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_666, 1);
9914 stream->write((uint64_t*)&cgen_var_666, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009915 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009916 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask readParams");
9917 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009918 mImpl->log("finish vkCmdSetDeviceMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009919}
9920
9921void VkEncoder::vkCmdDispatchBase(
9922 VkCommandBuffer commandBuffer,
9923 uint32_t baseGroupX,
9924 uint32_t baseGroupY,
9925 uint32_t baseGroupZ,
9926 uint32_t groupCountX,
9927 uint32_t groupCountY,
9928 uint32_t groupCountZ)
9929{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009930 AEMU_SCOPED_TRACE("vkCmdDispatchBase encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009931 mImpl->log("start vkCmdDispatchBase");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009932 auto stream = mImpl->stream();
9933 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009934 auto resources = mImpl->resources();
9935 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009936 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009937 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009938 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009939 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009940 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009941 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009942 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009943 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009944 local_commandBuffer = commandBuffer;
9945 local_baseGroupX = baseGroupX;
9946 local_baseGroupY = baseGroupY;
9947 local_baseGroupZ = baseGroupZ;
9948 local_groupCountX = groupCountX;
9949 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009950 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009951 countingStream->rewind();
9952 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009953 uint64_t cgen_var_667;
9954 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_667, 1);
9955 countingStream->write((uint64_t*)&cgen_var_667, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009956 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9957 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9958 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9959 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9960 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9961 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009962 }
9963 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9964 countingStream->rewind();
9965 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
9966 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
9967 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009968 uint64_t cgen_var_668;
9969 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_668, 1);
9970 stream->write((uint64_t*)&cgen_var_668, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009971 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9972 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9973 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9974 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9975 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9976 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009977 AEMU_SCOPED_TRACE("vkCmdDispatchBase readParams");
9978 AEMU_SCOPED_TRACE("vkCmdDispatchBase returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009979 mImpl->log("finish vkCmdDispatchBase");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009980}
9981
9982VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
9983 VkInstance instance,
9984 uint32_t* pPhysicalDeviceGroupCount,
9985 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
9986{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009987 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009988 mImpl->log("start vkEnumeratePhysicalDeviceGroups");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009989 auto stream = mImpl->stream();
9990 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009991 auto resources = mImpl->resources();
9992 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009993 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009994 VkInstance local_instance;
9995 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009996 countingStream->rewind();
9997 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -08009998 uint64_t cgen_var_669;
9999 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_669, 1);
10000 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010001 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010002 uint64_t cgen_var_670 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
10003 countingStream->putBe64(cgen_var_670);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010004 if (pPhysicalDeviceGroupCount)
10005 {
10006 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
10007 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010008 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010009 uint64_t cgen_var_671 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
10010 countingStream->putBe64(cgen_var_671);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010011 if (pPhysicalDeviceGroupProperties)
10012 {
10013 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10014 {
10015 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10016 }
10017 }
10018 }
10019 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10020 countingStream->rewind();
10021 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
10022 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
10023 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010024 uint64_t cgen_var_672;
10025 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_672, 1);
10026 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010027 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010028 uint64_t cgen_var_673 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
10029 stream->putBe64(cgen_var_673);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010030 if (pPhysicalDeviceGroupCount)
10031 {
10032 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
10033 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010034 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010035 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
10036 stream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010037 if (pPhysicalDeviceGroupProperties)
10038 {
10039 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10040 {
10041 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10042 }
10043 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010044 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010045 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010046 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010047 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010048 if (pPhysicalDeviceGroupCount)
10049 {
10050 if (!(check_pPhysicalDeviceGroupCount))
10051 {
10052 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
10053 }
10054 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
10055 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010056 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010057 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010058 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010059 if (pPhysicalDeviceGroupProperties)
10060 {
10061 if (!(check_pPhysicalDeviceGroupProperties))
10062 {
10063 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
10064 }
10065 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10066 {
10067 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10068 }
10069 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010070 if (pPhysicalDeviceGroupProperties)
10071 {
10072 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10073 {
10074 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10075 }
10076 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010077 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010078 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
10079 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010080 countingStream->clearPool();
10081 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010082 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010083 mImpl->log("finish vkEnumeratePhysicalDeviceGroups");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010084 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
10085}
10086
10087void VkEncoder::vkGetImageMemoryRequirements2(
10088 VkDevice device,
10089 const VkImageMemoryRequirementsInfo2* pInfo,
10090 VkMemoryRequirements2* pMemoryRequirements)
10091{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010092 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010093 mImpl->log("start vkGetImageMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010094 auto stream = mImpl->stream();
10095 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010096 auto resources = mImpl->resources();
10097 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010098 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010099 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010100 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010101 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010102 local_pInfo = nullptr;
10103 if (pInfo)
10104 {
10105 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
10106 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
10107 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010108 if (local_pInfo)
10109 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010110 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010111 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010112 countingStream->rewind();
10113 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010114 uint64_t cgen_var_677;
10115 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_677, 1);
10116 countingStream->write((uint64_t*)&cgen_var_677, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010117 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010118 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
10119 }
10120 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10121 countingStream->rewind();
10122 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
10123 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
10124 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010125 uint64_t cgen_var_678;
10126 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_678, 1);
10127 stream->write((uint64_t*)&cgen_var_678, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010128 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010129 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010130 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010131 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010132 if (pMemoryRequirements)
10133 {
10134 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
10135 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010136 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010137 mImpl->log("finish vkGetImageMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010138}
10139
10140void VkEncoder::vkGetBufferMemoryRequirements2(
10141 VkDevice device,
10142 const VkBufferMemoryRequirementsInfo2* pInfo,
10143 VkMemoryRequirements2* pMemoryRequirements)
10144{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010145 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010146 mImpl->log("start vkGetBufferMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010147 auto stream = mImpl->stream();
10148 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010149 auto resources = mImpl->resources();
10150 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010151 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010152 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010153 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010154 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010155 local_pInfo = nullptr;
10156 if (pInfo)
10157 {
10158 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
10159 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
10160 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010161 if (local_pInfo)
10162 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010163 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010164 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010165 countingStream->rewind();
10166 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010167 uint64_t cgen_var_679;
10168 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_679, 1);
10169 countingStream->write((uint64_t*)&cgen_var_679, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010170 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010171 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
10172 }
10173 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10174 countingStream->rewind();
10175 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
10176 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
10177 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010178 uint64_t cgen_var_680;
10179 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_680, 1);
10180 stream->write((uint64_t*)&cgen_var_680, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010181 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010182 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010183 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010184 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010185 if (pMemoryRequirements)
10186 {
10187 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
10188 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010189 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010190 mImpl->log("finish vkGetBufferMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010191}
10192
10193void VkEncoder::vkGetImageSparseMemoryRequirements2(
10194 VkDevice device,
10195 const VkImageSparseMemoryRequirementsInfo2* pInfo,
10196 uint32_t* pSparseMemoryRequirementCount,
10197 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
10198{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010199 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010200 mImpl->log("start vkGetImageSparseMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010201 auto stream = mImpl->stream();
10202 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010203 auto resources = mImpl->resources();
10204 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010205 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010206 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010207 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010208 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010209 local_pInfo = nullptr;
10210 if (pInfo)
10211 {
10212 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
10213 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
10214 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010215 if (local_pInfo)
10216 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010217 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010218 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010219 countingStream->rewind();
10220 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010221 uint64_t cgen_var_681;
10222 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_681, 1);
10223 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010224 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010225 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010226 uint64_t cgen_var_682 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
10227 countingStream->putBe64(cgen_var_682);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010228 if (pSparseMemoryRequirementCount)
10229 {
10230 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
10231 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010232 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010233 uint64_t cgen_var_683 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
10234 countingStream->putBe64(cgen_var_683);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010235 if (pSparseMemoryRequirements)
10236 {
10237 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10238 {
10239 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10240 }
10241 }
10242 }
10243 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10244 countingStream->rewind();
10245 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
10246 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
10247 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010248 uint64_t cgen_var_684;
10249 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_684, 1);
10250 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010251 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010252 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010253 uint64_t cgen_var_685 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
10254 stream->putBe64(cgen_var_685);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010255 if (pSparseMemoryRequirementCount)
10256 {
10257 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
10258 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010259 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010260 uint64_t cgen_var_686 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
10261 stream->putBe64(cgen_var_686);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010262 if (pSparseMemoryRequirements)
10263 {
10264 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10265 {
10266 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10267 }
10268 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010269 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010270 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010271 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010272 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010273 if (pSparseMemoryRequirementCount)
10274 {
10275 if (!(check_pSparseMemoryRequirementCount))
10276 {
10277 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
10278 }
10279 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
10280 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010281 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010282 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010283 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010284 if (pSparseMemoryRequirements)
10285 {
10286 if (!(check_pSparseMemoryRequirements))
10287 {
10288 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
10289 }
10290 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10291 {
10292 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10293 }
10294 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010295 if (pSparseMemoryRequirements)
10296 {
10297 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10298 {
10299 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10300 }
10301 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010302 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010303 mImpl->log("finish vkGetImageSparseMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010304}
10305
10306void VkEncoder::vkGetPhysicalDeviceFeatures2(
10307 VkPhysicalDevice physicalDevice,
10308 VkPhysicalDeviceFeatures2* pFeatures)
10309{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010310 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010311 mImpl->log("start vkGetPhysicalDeviceFeatures2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010312 auto stream = mImpl->stream();
10313 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010314 auto resources = mImpl->resources();
10315 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010316 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010317 VkPhysicalDevice local_physicalDevice;
10318 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010319 countingStream->rewind();
10320 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010321 uint64_t cgen_var_689;
10322 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_689, 1);
10323 countingStream->write((uint64_t*)&cgen_var_689, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010324 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
10325 }
10326 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10327 countingStream->rewind();
10328 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
10329 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
10330 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010331 uint64_t cgen_var_690;
10332 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
10333 stream->write((uint64_t*)&cgen_var_690, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010334 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010335 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010336 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010337 if (pFeatures)
10338 {
10339 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
10340 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010341 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010342 mImpl->log("finish vkGetPhysicalDeviceFeatures2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010343}
10344
10345void VkEncoder::vkGetPhysicalDeviceProperties2(
10346 VkPhysicalDevice physicalDevice,
10347 VkPhysicalDeviceProperties2* pProperties)
10348{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010349 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 encode");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010350 mImpl->log("start vkGetPhysicalDeviceProperties2");
10351 auto stream = mImpl->stream();
10352 auto countingStream = mImpl->countingStream();
10353 auto resources = mImpl->resources();
10354 auto pool = mImpl->pool();
10355 stream->setHandleMapping(resources->unwrapMapping());
10356 VkPhysicalDevice local_physicalDevice;
10357 local_physicalDevice = physicalDevice;
10358 countingStream->rewind();
10359 {
10360 uint64_t cgen_var_691;
10361 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_691, 1);
10362 countingStream->write((uint64_t*)&cgen_var_691, 1 * 8);
10363 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
10364 }
10365 uint32_t packetSize_vkGetPhysicalDeviceProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10366 countingStream->rewind();
10367 uint32_t opcode_vkGetPhysicalDeviceProperties2 = OP_vkGetPhysicalDeviceProperties2;
10368 stream->write(&opcode_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
10369 stream->write(&packetSize_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
10370 uint64_t cgen_var_692;
10371 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_692, 1);
10372 stream->write((uint64_t*)&cgen_var_692, 1 * 8);
10373 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010374 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010375 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
10376 if (pProperties)
10377 {
10378 transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
10379 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010380 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 returnUnmarshal");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010381 mImpl->log("finish vkGetPhysicalDeviceProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010382}
10383
10384void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
10385 VkPhysicalDevice physicalDevice,
10386 VkFormat format,
10387 VkFormatProperties2* pFormatProperties)
10388{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010389 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010390 mImpl->log("start vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010391 auto stream = mImpl->stream();
10392 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010393 auto resources = mImpl->resources();
10394 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010395 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010396 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010397 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010398 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010399 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010400 countingStream->rewind();
10401 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010402 uint64_t cgen_var_693;
10403 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_693, 1);
10404 countingStream->write((uint64_t*)&cgen_var_693, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010405 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010406 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
10407 }
10408 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10409 countingStream->rewind();
10410 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
10411 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
10412 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010413 uint64_t cgen_var_694;
10414 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_694, 1);
10415 stream->write((uint64_t*)&cgen_var_694, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010416 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010417 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010418 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010419 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010420 if (pFormatProperties)
10421 {
10422 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
10423 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010424 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010425 mImpl->log("finish vkGetPhysicalDeviceFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010426}
10427
10428VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
10429 VkPhysicalDevice physicalDevice,
10430 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
10431 VkImageFormatProperties2* pImageFormatProperties)
10432{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010433 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010434 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010435 auto stream = mImpl->stream();
10436 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010437 auto resources = mImpl->resources();
10438 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010439 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010440 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010441 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010442 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010443 local_pImageFormatInfo = nullptr;
10444 if (pImageFormatInfo)
10445 {
10446 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
10447 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
10448 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010449 if (local_pImageFormatInfo)
10450 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010451 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010452 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010453 countingStream->rewind();
10454 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010455 uint64_t cgen_var_695;
10456 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
10457 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010458 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010459 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
10460 }
10461 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10462 countingStream->rewind();
10463 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
10464 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
10465 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010466 uint64_t cgen_var_696;
10467 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
10468 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010469 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010470 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010471 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010472 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010473 if (pImageFormatProperties)
10474 {
10475 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
10476 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010477 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010478 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
10479 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010480 countingStream->clearPool();
10481 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010482 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010483 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010484 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
10485}
10486
10487void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
10488 VkPhysicalDevice physicalDevice,
10489 uint32_t* pQueueFamilyPropertyCount,
10490 VkQueueFamilyProperties2* pQueueFamilyProperties)
10491{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010492 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010493 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010494 auto stream = mImpl->stream();
10495 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010496 auto resources = mImpl->resources();
10497 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010498 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010499 VkPhysicalDevice local_physicalDevice;
10500 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010501 countingStream->rewind();
10502 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010503 uint64_t cgen_var_697;
10504 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
10505 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010506 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010507 uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
10508 countingStream->putBe64(cgen_var_698);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010509 if (pQueueFamilyPropertyCount)
10510 {
10511 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10512 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010513 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010514 uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
10515 countingStream->putBe64(cgen_var_699);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010516 if (pQueueFamilyProperties)
10517 {
10518 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10519 {
10520 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10521 }
10522 }
10523 }
10524 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10525 countingStream->rewind();
10526 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
10527 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
10528 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010529 uint64_t cgen_var_700;
10530 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
10531 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010532 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010533 uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
10534 stream->putBe64(cgen_var_701);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010535 if (pQueueFamilyPropertyCount)
10536 {
10537 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10538 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010539 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010540 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
10541 stream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010542 if (pQueueFamilyProperties)
10543 {
10544 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10545 {
10546 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10547 }
10548 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010549 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010550 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010551 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010552 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010553 if (pQueueFamilyPropertyCount)
10554 {
10555 if (!(check_pQueueFamilyPropertyCount))
10556 {
10557 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
10558 }
10559 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10560 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010561 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010562 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010563 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010564 if (pQueueFamilyProperties)
10565 {
10566 if (!(check_pQueueFamilyProperties))
10567 {
10568 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
10569 }
10570 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10571 {
10572 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10573 }
10574 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010575 if (pQueueFamilyProperties)
10576 {
10577 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10578 {
10579 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10580 }
10581 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010582 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010583 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010584}
10585
10586void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
10587 VkPhysicalDevice physicalDevice,
10588 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
10589{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010590 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010591 mImpl->log("start vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010592 auto stream = mImpl->stream();
10593 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010594 auto resources = mImpl->resources();
10595 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010596 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010597 VkPhysicalDevice local_physicalDevice;
10598 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010599 countingStream->rewind();
10600 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010601 uint64_t cgen_var_705;
10602 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_705, 1);
10603 countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010604 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10605 }
10606 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10607 countingStream->rewind();
10608 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
10609 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
10610 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010611 uint64_t cgen_var_706;
10612 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_706, 1);
10613 stream->write((uint64_t*)&cgen_var_706, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010614 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010615 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010616 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010617 if (pMemoryProperties)
10618 {
10619 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10620 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010621 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 returnUnmarshal");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010622 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010623 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010624}
10625
10626void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
10627 VkPhysicalDevice physicalDevice,
10628 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
10629 uint32_t* pPropertyCount,
10630 VkSparseImageFormatProperties2* pProperties)
10631{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010632 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010633 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010634 auto stream = mImpl->stream();
10635 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010636 auto resources = mImpl->resources();
10637 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010638 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010639 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010640 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010641 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010642 local_pFormatInfo = nullptr;
10643 if (pFormatInfo)
10644 {
10645 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
10646 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
10647 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010648 if (local_pFormatInfo)
10649 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010650 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010651 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010652 countingStream->rewind();
10653 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010654 uint64_t cgen_var_707;
10655 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_707, 1);
10656 countingStream->write((uint64_t*)&cgen_var_707, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010657 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010658 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010659 uint64_t cgen_var_708 = (uint64_t)(uintptr_t)pPropertyCount;
10660 countingStream->putBe64(cgen_var_708);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010661 if (pPropertyCount)
10662 {
10663 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10664 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010665 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010666 uint64_t cgen_var_709 = (uint64_t)(uintptr_t)pProperties;
10667 countingStream->putBe64(cgen_var_709);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010668 if (pProperties)
10669 {
10670 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10671 {
10672 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
10673 }
10674 }
10675 }
10676 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10677 countingStream->rewind();
10678 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
10679 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
10680 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010681 uint64_t cgen_var_710;
10682 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_710, 1);
10683 stream->write((uint64_t*)&cgen_var_710, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010684 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010685 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010686 uint64_t cgen_var_711 = (uint64_t)(uintptr_t)pPropertyCount;
10687 stream->putBe64(cgen_var_711);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010688 if (pPropertyCount)
10689 {
10690 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10691 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010692 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010693 uint64_t cgen_var_712 = (uint64_t)(uintptr_t)pProperties;
10694 stream->putBe64(cgen_var_712);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010695 if (pProperties)
10696 {
10697 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10698 {
10699 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10700 }
10701 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010702 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010703 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010704 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010705 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010706 if (pPropertyCount)
10707 {
10708 if (!(check_pPropertyCount))
10709 {
10710 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10711 }
10712 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10713 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010714 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010715 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010716 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010717 if (pProperties)
10718 {
10719 if (!(check_pProperties))
10720 {
10721 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10722 }
10723 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10724 {
10725 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10726 }
10727 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010728 if (pProperties)
10729 {
10730 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10731 {
10732 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
10733 }
10734 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010735 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010736 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010737}
10738
10739void VkEncoder::vkTrimCommandPool(
10740 VkDevice device,
10741 VkCommandPool commandPool,
10742 VkCommandPoolTrimFlags flags)
10743{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010744 AEMU_SCOPED_TRACE("vkTrimCommandPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010745 mImpl->log("start vkTrimCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010746 auto stream = mImpl->stream();
10747 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010748 auto resources = mImpl->resources();
10749 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010750 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010751 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010752 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010753 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010754 local_device = device;
10755 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010756 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010757 countingStream->rewind();
10758 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010759 uint64_t cgen_var_715;
10760 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_715, 1);
10761 countingStream->write((uint64_t*)&cgen_var_715, 1 * 8);
10762 uint64_t cgen_var_716;
10763 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_716, 1);
10764 countingStream->write((uint64_t*)&cgen_var_716, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010765 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010766 }
10767 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10768 countingStream->rewind();
10769 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
10770 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
10771 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010772 uint64_t cgen_var_717;
10773 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
10774 stream->write((uint64_t*)&cgen_var_717, 1 * 8);
10775 uint64_t cgen_var_718;
10776 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_718, 1);
10777 stream->write((uint64_t*)&cgen_var_718, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010778 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010779 AEMU_SCOPED_TRACE("vkTrimCommandPool readParams");
10780 AEMU_SCOPED_TRACE("vkTrimCommandPool returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010781 mImpl->log("finish vkTrimCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010782}
10783
10784void VkEncoder::vkGetDeviceQueue2(
10785 VkDevice device,
10786 const VkDeviceQueueInfo2* pQueueInfo,
10787 VkQueue* pQueue)
10788{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010789 AEMU_SCOPED_TRACE("vkGetDeviceQueue2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010790 mImpl->log("start vkGetDeviceQueue2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010791 auto stream = mImpl->stream();
10792 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010793 auto resources = mImpl->resources();
10794 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010795 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010796 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010797 VkDeviceQueueInfo2* local_pQueueInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010798 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010799 local_pQueueInfo = nullptr;
10800 if (pQueueInfo)
10801 {
10802 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
10803 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
10804 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010805 if (local_pQueueInfo)
10806 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010807 transform_tohost_VkDeviceQueueInfo2(mImpl->resources(), (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010808 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010809 countingStream->rewind();
10810 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010811 uint64_t cgen_var_719;
10812 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_719, 1);
10813 countingStream->write((uint64_t*)&cgen_var_719, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010814 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010815 uint64_t cgen_var_720;
10816 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_720, 1);
10817 countingStream->write((uint64_t*)&cgen_var_720, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010818 }
10819 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10820 countingStream->rewind();
10821 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
10822 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
10823 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010824 uint64_t cgen_var_721;
10825 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
10826 stream->write((uint64_t*)&cgen_var_721, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010827 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -080010828 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010829 uint64_t cgen_var_722;
10830 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_722, 1);
10831 stream->write((uint64_t*)&cgen_var_722, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010832 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010833 AEMU_SCOPED_TRACE("vkGetDeviceQueue2 readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010834 uint64_t cgen_var_723;
10835 stream->read((uint64_t*)&cgen_var_723, 8);
10836 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_723, (VkQueue*)pQueue, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010837 AEMU_SCOPED_TRACE("vkGetDeviceQueue2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010838 mImpl->log("finish vkGetDeviceQueue2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010839}
10840
10841VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
10842 VkDevice device,
10843 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
10844 const VkAllocationCallbacks* pAllocator,
10845 VkSamplerYcbcrConversion* pYcbcrConversion)
10846{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010847 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010848 mImpl->log("start vkCreateSamplerYcbcrConversion");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010849 auto stream = mImpl->stream();
10850 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010851 auto resources = mImpl->resources();
10852 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010853 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010854 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010855 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010856 VkAllocationCallbacks* local_pAllocator;
10857 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010858 local_pCreateInfo = nullptr;
10859 if (pCreateInfo)
10860 {
10861 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
10862 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
10863 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010864 local_pAllocator = nullptr;
10865 if (pAllocator)
10866 {
10867 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10868 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10869 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010870 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010871 if (local_pCreateInfo)
10872 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010873 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010874 }
10875 if (local_pAllocator)
10876 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010877 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010878 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010879 countingStream->rewind();
10880 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010881 uint64_t cgen_var_724;
10882 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
10883 countingStream->write((uint64_t*)&cgen_var_724, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010884 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010885 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010886 uint64_t cgen_var_725 = (uint64_t)(uintptr_t)local_pAllocator;
10887 countingStream->putBe64(cgen_var_725);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010888 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010889 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010890 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010891 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010892 uint64_t cgen_var_726;
10893 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_726, 1);
10894 countingStream->write((uint64_t*)&cgen_var_726, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010895 }
10896 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10897 countingStream->rewind();
10898 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
10899 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
10900 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010901 uint64_t cgen_var_727;
10902 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
10903 stream->write((uint64_t*)&cgen_var_727, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010904 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010905 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010906 uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
10907 stream->putBe64(cgen_var_728);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010908 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010909 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010910 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010911 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010912 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010913 uint64_t cgen_var_729;
10914 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_729, 1);
10915 stream->write((uint64_t*)&cgen_var_729, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010916 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010917 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080010918 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010919 uint64_t cgen_var_730;
10920 stream->read((uint64_t*)&cgen_var_730, 8);
10921 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_730, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010922 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010923 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010924 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
10925 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010926 countingStream->clearPool();
10927 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010928 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010929 mImpl->log("finish vkCreateSamplerYcbcrConversion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010930 return vkCreateSamplerYcbcrConversion_VkResult_return;
10931}
10932
10933void VkEncoder::vkDestroySamplerYcbcrConversion(
10934 VkDevice device,
10935 VkSamplerYcbcrConversion ycbcrConversion,
10936 const VkAllocationCallbacks* pAllocator)
10937{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010938 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010939 mImpl->log("start vkDestroySamplerYcbcrConversion");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010940 auto stream = mImpl->stream();
10941 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010942 auto resources = mImpl->resources();
10943 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010944 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010945 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010946 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010947 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010948 local_device = device;
10949 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010950 local_pAllocator = nullptr;
10951 if (pAllocator)
10952 {
10953 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10954 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10955 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010956 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010957 if (local_pAllocator)
10958 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010959 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010960 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010961 countingStream->rewind();
10962 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010963 uint64_t cgen_var_731;
10964 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_731, 1);
10965 countingStream->write((uint64_t*)&cgen_var_731, 1 * 8);
10966 uint64_t cgen_var_732;
10967 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_732, 1);
10968 countingStream->write((uint64_t*)&cgen_var_732, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010969 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010970 uint64_t cgen_var_733 = (uint64_t)(uintptr_t)local_pAllocator;
10971 countingStream->putBe64(cgen_var_733);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010972 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010973 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010974 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010975 }
10976 }
10977 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10978 countingStream->rewind();
10979 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
10980 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
10981 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010982 uint64_t cgen_var_734;
10983 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
10984 stream->write((uint64_t*)&cgen_var_734, 1 * 8);
10985 uint64_t cgen_var_735;
10986 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_735, 1);
10987 stream->write((uint64_t*)&cgen_var_735, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010988 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010989 uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
10990 stream->putBe64(cgen_var_736);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010991 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010992 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010993 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010994 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010995 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion readParams");
10996 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010997 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010998 mImpl->log("finish vkDestroySamplerYcbcrConversion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010999}
11000
11001VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
11002 VkDevice device,
11003 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
11004 const VkAllocationCallbacks* pAllocator,
11005 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
11006{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011007 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011008 mImpl->log("start vkCreateDescriptorUpdateTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011009 auto stream = mImpl->stream();
11010 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011011 auto resources = mImpl->resources();
11012 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011013 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011014 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011015 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011016 VkAllocationCallbacks* local_pAllocator;
11017 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011018 local_pCreateInfo = nullptr;
11019 if (pCreateInfo)
11020 {
11021 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
11022 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
11023 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011024 local_pAllocator = nullptr;
11025 if (pAllocator)
11026 {
11027 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11028 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11029 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011030 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011031 if (local_pCreateInfo)
11032 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011033 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011034 }
11035 if (local_pAllocator)
11036 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011037 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011038 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011039 countingStream->rewind();
11040 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011041 uint64_t cgen_var_737;
11042 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
11043 countingStream->write((uint64_t*)&cgen_var_737, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011044 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011045 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011046 uint64_t cgen_var_738 = (uint64_t)(uintptr_t)local_pAllocator;
11047 countingStream->putBe64(cgen_var_738);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011048 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011049 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011050 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011051 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011052 uint64_t cgen_var_739;
11053 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_739, 1);
11054 countingStream->write((uint64_t*)&cgen_var_739, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011055 }
11056 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11057 countingStream->rewind();
11058 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
11059 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
11060 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011061 uint64_t cgen_var_740;
11062 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
11063 stream->write((uint64_t*)&cgen_var_740, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011064 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011065 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011066 uint64_t cgen_var_741 = (uint64_t)(uintptr_t)local_pAllocator;
11067 stream->putBe64(cgen_var_741);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011068 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011069 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011070 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011071 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011072 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011073 uint64_t cgen_var_742;
11074 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_742, 1);
11075 stream->write((uint64_t*)&cgen_var_742, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011076 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011077 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080011078 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011079 uint64_t cgen_var_743;
11080 stream->read((uint64_t*)&cgen_var_743, 8);
11081 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_743, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011082 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011083 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011084 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
11085 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011086 countingStream->clearPool();
11087 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011088 pool->freeAll();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070011089 mImpl->resources()->on_vkCreateDescriptorUpdateTemplate(this, vkCreateDescriptorUpdateTemplate_VkResult_return, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011090 mImpl->log("finish vkCreateDescriptorUpdateTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011091 return vkCreateDescriptorUpdateTemplate_VkResult_return;
11092}
11093
11094void VkEncoder::vkDestroyDescriptorUpdateTemplate(
11095 VkDevice device,
11096 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
11097 const VkAllocationCallbacks* pAllocator)
11098{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011099 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011100 mImpl->log("start vkDestroyDescriptorUpdateTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011101 auto stream = mImpl->stream();
11102 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011103 auto resources = mImpl->resources();
11104 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011105 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011106 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011107 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011108 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011109 local_device = device;
11110 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011111 local_pAllocator = nullptr;
11112 if (pAllocator)
11113 {
11114 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11115 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11116 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011117 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011118 if (local_pAllocator)
11119 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011120 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011121 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011122 countingStream->rewind();
11123 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011124 uint64_t cgen_var_744;
11125 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
11126 countingStream->write((uint64_t*)&cgen_var_744, 1 * 8);
11127 uint64_t cgen_var_745;
11128 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_745, 1);
11129 countingStream->write((uint64_t*)&cgen_var_745, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011130 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011131 uint64_t cgen_var_746 = (uint64_t)(uintptr_t)local_pAllocator;
11132 countingStream->putBe64(cgen_var_746);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011133 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011134 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011135 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011136 }
11137 }
11138 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11139 countingStream->rewind();
11140 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
11141 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
11142 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011143 uint64_t cgen_var_747;
11144 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_747, 1);
11145 stream->write((uint64_t*)&cgen_var_747, 1 * 8);
11146 uint64_t cgen_var_748;
11147 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_748, 1);
11148 stream->write((uint64_t*)&cgen_var_748, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011149 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011150 uint64_t cgen_var_749 = (uint64_t)(uintptr_t)local_pAllocator;
11151 stream->putBe64(cgen_var_749);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011152 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011153 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011154 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011155 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011156 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate readParams");
11157 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011158 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011159 mImpl->log("finish vkDestroyDescriptorUpdateTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011160}
11161
11162void VkEncoder::vkUpdateDescriptorSetWithTemplate(
11163 VkDevice device,
11164 VkDescriptorSet descriptorSet,
11165 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
11166 const void* pData)
11167{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011168 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011169 mImpl->log("start vkUpdateDescriptorSetWithTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011170 auto stream = mImpl->stream();
11171 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011172 auto resources = mImpl->resources();
11173 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011174 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011175 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011176 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011177 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011178 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011179 local_device = device;
11180 local_descriptorSet = descriptorSet;
11181 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011182 local_pData = nullptr;
11183 if (pData)
11184 {
11185 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
11186 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011187 countingStream->rewind();
11188 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011189 uint64_t cgen_var_750;
11190 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_750, 1);
11191 countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
11192 uint64_t cgen_var_751;
11193 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_751, 1);
11194 countingStream->write((uint64_t*)&cgen_var_751, 1 * 8);
11195 uint64_t cgen_var_752;
11196 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_752, 1);
11197 countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011198 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011199 uint64_t cgen_var_753 = (uint64_t)(uintptr_t)local_pData;
11200 countingStream->putBe64(cgen_var_753);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011201 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011202 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011203 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011204 }
11205 }
11206 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11207 countingStream->rewind();
11208 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
11209 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
11210 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011211 uint64_t cgen_var_754;
11212 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
11213 stream->write((uint64_t*)&cgen_var_754, 1 * 8);
11214 uint64_t cgen_var_755;
11215 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_755, 1);
11216 stream->write((uint64_t*)&cgen_var_755, 1 * 8);
11217 uint64_t cgen_var_756;
11218 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_756, 1);
11219 stream->write((uint64_t*)&cgen_var_756, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011220 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011221 uint64_t cgen_var_757 = (uint64_t)(uintptr_t)local_pData;
11222 stream->putBe64(cgen_var_757);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011223 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011224 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011225 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011226 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011227 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate readParams");
11228 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011229 mImpl->log("finish vkUpdateDescriptorSetWithTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011230}
11231
11232void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
11233 VkPhysicalDevice physicalDevice,
11234 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
11235 VkExternalBufferProperties* pExternalBufferProperties)
11236{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011237 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011238 mImpl->log("start vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011239 auto stream = mImpl->stream();
11240 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011241 auto resources = mImpl->resources();
11242 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011243 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011244 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011245 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011246 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011247 local_pExternalBufferInfo = nullptr;
11248 if (pExternalBufferInfo)
11249 {
11250 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
11251 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
11252 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011253 if (local_pExternalBufferInfo)
11254 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080011255 mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080011256 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011257 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011258 countingStream->rewind();
11259 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011260 uint64_t cgen_var_758;
11261 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_758, 1);
11262 countingStream->write((uint64_t*)&cgen_var_758, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011263 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011264 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
11265 }
11266 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11267 countingStream->rewind();
11268 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
11269 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
11270 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011271 uint64_t cgen_var_759;
11272 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_759, 1);
11273 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011274 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011275 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011276 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011277 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011278 if (pExternalBufferProperties)
11279 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080011280 mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080011281 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
11282 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011283 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011284 mImpl->log("finish vkGetPhysicalDeviceExternalBufferProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011285}
11286
11287void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
11288 VkPhysicalDevice physicalDevice,
11289 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
11290 VkExternalFenceProperties* pExternalFenceProperties)
11291{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011292 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011293 mImpl->log("start vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011294 auto stream = mImpl->stream();
11295 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011296 auto resources = mImpl->resources();
11297 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011298 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011299 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011300 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011301 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011302 local_pExternalFenceInfo = nullptr;
11303 if (pExternalFenceInfo)
11304 {
11305 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
11306 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
11307 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011308 if (local_pExternalFenceInfo)
11309 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011310 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011311 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011312 countingStream->rewind();
11313 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011314 uint64_t cgen_var_760;
11315 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_760, 1);
11316 countingStream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011317 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011318 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
11319 }
11320 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11321 countingStream->rewind();
11322 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
11323 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
11324 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011325 uint64_t cgen_var_761;
11326 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_761, 1);
11327 stream->write((uint64_t*)&cgen_var_761, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011328 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011329 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011330 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011331 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011332 if (pExternalFenceProperties)
11333 {
11334 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
11335 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011336 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011337 mImpl->log("finish vkGetPhysicalDeviceExternalFenceProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011338}
11339
11340void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
11341 VkPhysicalDevice physicalDevice,
11342 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
11343 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
11344{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011345 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011346 mImpl->log("start vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011347 auto stream = mImpl->stream();
11348 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011349 auto resources = mImpl->resources();
11350 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011351 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011352 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011353 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011354 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011355 local_pExternalSemaphoreInfo = nullptr;
11356 if (pExternalSemaphoreInfo)
11357 {
11358 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
11359 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
11360 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011361 if (local_pExternalSemaphoreInfo)
11362 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011363 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011364 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011365 countingStream->rewind();
11366 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011367 uint64_t cgen_var_762;
11368 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
11369 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011370 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011371 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
11372 }
11373 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11374 countingStream->rewind();
11375 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
11376 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
11377 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011378 uint64_t cgen_var_763;
11379 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_763, 1);
11380 stream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011381 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011382 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011383 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011384 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011385 if (pExternalSemaphoreProperties)
11386 {
11387 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
11388 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011389 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011390 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphoreProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011391}
11392
11393void VkEncoder::vkGetDescriptorSetLayoutSupport(
11394 VkDevice device,
11395 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
11396 VkDescriptorSetLayoutSupport* pSupport)
11397{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011398 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011399 mImpl->log("start vkGetDescriptorSetLayoutSupport");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011400 auto stream = mImpl->stream();
11401 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011402 auto resources = mImpl->resources();
11403 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011404 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011405 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011406 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011407 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011408 local_pCreateInfo = nullptr;
11409 if (pCreateInfo)
11410 {
11411 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
11412 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
11413 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011414 if (local_pCreateInfo)
11415 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011416 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011417 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011418 countingStream->rewind();
11419 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011420 uint64_t cgen_var_764;
11421 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_764, 1);
11422 countingStream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011423 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011424 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
11425 }
11426 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11427 countingStream->rewind();
11428 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
11429 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
11430 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011431 uint64_t cgen_var_765;
11432 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_765, 1);
11433 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011434 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011435 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011436 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011437 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011438 if (pSupport)
11439 {
11440 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
11441 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011442 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011443 mImpl->log("finish vkGetDescriptorSetLayoutSupport");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011444}
11445
11446#endif
11447#ifdef VK_KHR_surface
11448void VkEncoder::vkDestroySurfaceKHR(
11449 VkInstance instance,
11450 VkSurfaceKHR surface,
11451 const VkAllocationCallbacks* pAllocator)
11452{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011453 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011454 mImpl->log("start vkDestroySurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011455 auto stream = mImpl->stream();
11456 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011457 auto resources = mImpl->resources();
11458 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011459 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011460 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011461 VkSurfaceKHR local_surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011462 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011463 local_instance = instance;
11464 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011465 local_pAllocator = nullptr;
11466 if (pAllocator)
11467 {
11468 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11469 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11470 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011471 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011472 if (local_pAllocator)
11473 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011474 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011475 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011476 countingStream->rewind();
11477 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011478 uint64_t cgen_var_766;
11479 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_766, 1);
11480 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
11481 uint64_t cgen_var_767;
11482 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
11483 countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011484 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011485 uint64_t cgen_var_768 = (uint64_t)(uintptr_t)local_pAllocator;
11486 countingStream->putBe64(cgen_var_768);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011487 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011488 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011489 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011490 }
11491 }
11492 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11493 countingStream->rewind();
11494 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
11495 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
11496 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011497 uint64_t cgen_var_769;
11498 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_769, 1);
11499 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
11500 uint64_t cgen_var_770;
11501 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_770, 1);
11502 stream->write((uint64_t*)&cgen_var_770, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011503 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011504 uint64_t cgen_var_771 = (uint64_t)(uintptr_t)local_pAllocator;
11505 stream->putBe64(cgen_var_771);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011506 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011507 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011508 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011509 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011510 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR readParams");
11511 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011512 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011513 mImpl->log("finish vkDestroySurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011514}
11515
11516VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
11517 VkPhysicalDevice physicalDevice,
11518 uint32_t queueFamilyIndex,
11519 VkSurfaceKHR surface,
11520 VkBool32* pSupported)
11521{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011522 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011523 mImpl->log("start vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011524 auto stream = mImpl->stream();
11525 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011526 auto resources = mImpl->resources();
11527 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011528 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011529 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011530 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011531 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011532 local_physicalDevice = physicalDevice;
11533 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011534 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011535 countingStream->rewind();
11536 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011537 uint64_t cgen_var_772;
11538 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_772, 1);
11539 countingStream->write((uint64_t*)&cgen_var_772, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011540 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011541 uint64_t cgen_var_773;
11542 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_773, 1);
11543 countingStream->write((uint64_t*)&cgen_var_773, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011544 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
11545 }
11546 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11547 countingStream->rewind();
11548 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
11549 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
11550 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011551 uint64_t cgen_var_774;
11552 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
11553 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011554 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011555 uint64_t cgen_var_775;
11556 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
11557 stream->write((uint64_t*)&cgen_var_775, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011558 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011559 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011560 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011561 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011562 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
11563 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011564 countingStream->clearPool();
11565 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011566 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011567 mImpl->log("finish vkGetPhysicalDeviceSurfaceSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011568 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
11569}
11570
11571VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
11572 VkPhysicalDevice physicalDevice,
11573 VkSurfaceKHR surface,
11574 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
11575{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011576 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011577 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011578 auto stream = mImpl->stream();
11579 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011580 auto resources = mImpl->resources();
11581 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011582 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011583 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011584 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011585 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011586 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011587 countingStream->rewind();
11588 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011589 uint64_t cgen_var_776;
11590 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_776, 1);
11591 countingStream->write((uint64_t*)&cgen_var_776, 1 * 8);
11592 uint64_t cgen_var_777;
11593 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_777, 1);
11594 countingStream->write((uint64_t*)&cgen_var_777, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011595 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11596 }
11597 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11598 countingStream->rewind();
11599 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
11600 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
11601 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011602 uint64_t cgen_var_778;
11603 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_778, 1);
11604 stream->write((uint64_t*)&cgen_var_778, 1 * 8);
11605 uint64_t cgen_var_779;
11606 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_779, 1);
11607 stream->write((uint64_t*)&cgen_var_779, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011608 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011609 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011610 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011611 if (pSurfaceCapabilities)
11612 {
11613 transform_fromhost_VkSurfaceCapabilitiesKHR(mImpl->resources(), (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11614 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011615 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011616 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
11617 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011618 countingStream->clearPool();
11619 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011620 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011621 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011622 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
11623}
11624
11625VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
11626 VkPhysicalDevice physicalDevice,
11627 VkSurfaceKHR surface,
11628 uint32_t* pSurfaceFormatCount,
11629 VkSurfaceFormatKHR* pSurfaceFormats)
11630{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011631 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011632 mImpl->log("start vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011633 auto stream = mImpl->stream();
11634 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011635 auto resources = mImpl->resources();
11636 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011637 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011638 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011639 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011640 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011641 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011642 countingStream->rewind();
11643 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011644 uint64_t cgen_var_780;
11645 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
11646 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
11647 uint64_t cgen_var_781;
11648 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
11649 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011650 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011651 uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11652 countingStream->putBe64(cgen_var_782);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011653 if (pSurfaceFormatCount)
11654 {
11655 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11656 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011657 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011658 uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pSurfaceFormats;
11659 countingStream->putBe64(cgen_var_783);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011660 if (pSurfaceFormats)
11661 {
11662 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11663 {
11664 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11665 }
11666 }
11667 }
11668 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11669 countingStream->rewind();
11670 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
11671 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
11672 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011673 uint64_t cgen_var_784;
11674 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
11675 stream->write((uint64_t*)&cgen_var_784, 1 * 8);
11676 uint64_t cgen_var_785;
11677 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
11678 stream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011679 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011680 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11681 stream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011682 if (pSurfaceFormatCount)
11683 {
11684 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11685 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011686 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011687 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pSurfaceFormats;
11688 stream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011689 if (pSurfaceFormats)
11690 {
11691 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11692 {
11693 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11694 }
11695 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011696 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011697 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011698 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011699 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011700 if (pSurfaceFormatCount)
11701 {
11702 if (!(check_pSurfaceFormatCount))
11703 {
11704 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
11705 }
11706 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11707 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011708 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011709 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011710 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011711 if (pSurfaceFormats)
11712 {
11713 if (!(check_pSurfaceFormats))
11714 {
11715 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
11716 }
11717 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11718 {
11719 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11720 }
11721 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011722 if (pSurfaceFormats)
11723 {
11724 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11725 {
11726 transform_fromhost_VkSurfaceFormatKHR(mImpl->resources(), (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11727 }
11728 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011729 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011730 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
11731 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011732 countingStream->clearPool();
11733 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011734 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011735 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormatsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011736 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
11737}
11738
11739VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
11740 VkPhysicalDevice physicalDevice,
11741 VkSurfaceKHR surface,
11742 uint32_t* pPresentModeCount,
11743 VkPresentModeKHR* pPresentModes)
11744{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011745 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011746 mImpl->log("start vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011747 auto stream = mImpl->stream();
11748 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011749 auto resources = mImpl->resources();
11750 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011751 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011752 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011753 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011754 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011755 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011756 countingStream->rewind();
11757 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011758 uint64_t cgen_var_790;
11759 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_790, 1);
11760 countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
11761 uint64_t cgen_var_791;
11762 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_791, 1);
11763 countingStream->write((uint64_t*)&cgen_var_791, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011764 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011765 uint64_t cgen_var_792 = (uint64_t)(uintptr_t)pPresentModeCount;
11766 countingStream->putBe64(cgen_var_792);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011767 if (pPresentModeCount)
11768 {
11769 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11770 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011771 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011772 uint64_t cgen_var_793 = (uint64_t)(uintptr_t)pPresentModes;
11773 countingStream->putBe64(cgen_var_793);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011774 if (pPresentModes)
11775 {
11776 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11777 }
11778 }
11779 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11780 countingStream->rewind();
11781 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
11782 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
11783 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011784 uint64_t cgen_var_794;
11785 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_794, 1);
11786 stream->write((uint64_t*)&cgen_var_794, 1 * 8);
11787 uint64_t cgen_var_795;
11788 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_795, 1);
11789 stream->write((uint64_t*)&cgen_var_795, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011790 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011791 uint64_t cgen_var_796 = (uint64_t)(uintptr_t)pPresentModeCount;
11792 stream->putBe64(cgen_var_796);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011793 if (pPresentModeCount)
11794 {
11795 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11796 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011797 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011798 uint64_t cgen_var_797 = (uint64_t)(uintptr_t)pPresentModes;
11799 stream->putBe64(cgen_var_797);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011800 if (pPresentModes)
11801 {
11802 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11803 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011804 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011805 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011806 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011807 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011808 if (pPresentModeCount)
11809 {
11810 if (!(check_pPresentModeCount))
11811 {
11812 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
11813 }
11814 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11815 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011816 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011817 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011818 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011819 if (pPresentModes)
11820 {
11821 if (!(check_pPresentModes))
11822 {
11823 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
11824 }
11825 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11826 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011827 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011828 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11829 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011830 countingStream->clearPool();
11831 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011832 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011833 mImpl->log("finish vkGetPhysicalDeviceSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011834 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
11835}
11836
11837#endif
11838#ifdef VK_KHR_swapchain
11839VkResult VkEncoder::vkCreateSwapchainKHR(
11840 VkDevice device,
11841 const VkSwapchainCreateInfoKHR* pCreateInfo,
11842 const VkAllocationCallbacks* pAllocator,
11843 VkSwapchainKHR* pSwapchain)
11844{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011845 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011846 mImpl->log("start vkCreateSwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011847 auto stream = mImpl->stream();
11848 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011849 auto resources = mImpl->resources();
11850 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011851 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011852 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011853 VkSwapchainCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011854 VkAllocationCallbacks* local_pAllocator;
11855 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011856 local_pCreateInfo = nullptr;
11857 if (pCreateInfo)
11858 {
11859 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
11860 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
11861 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011862 local_pAllocator = nullptr;
11863 if (pAllocator)
11864 {
11865 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11866 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11867 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011868 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011869 if (local_pCreateInfo)
11870 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011871 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011872 }
11873 if (local_pAllocator)
11874 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011875 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011876 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011877 countingStream->rewind();
11878 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011879 uint64_t cgen_var_800;
11880 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
11881 countingStream->write((uint64_t*)&cgen_var_800, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011882 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011883 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011884 uint64_t cgen_var_801 = (uint64_t)(uintptr_t)local_pAllocator;
11885 countingStream->putBe64(cgen_var_801);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011886 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011887 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011888 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011889 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011890 uint64_t cgen_var_802;
11891 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_802, 1);
11892 countingStream->write((uint64_t*)&cgen_var_802, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011893 }
11894 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11895 countingStream->rewind();
11896 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
11897 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
11898 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011899 uint64_t cgen_var_803;
11900 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
11901 stream->write((uint64_t*)&cgen_var_803, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011902 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011903 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011904 uint64_t cgen_var_804 = (uint64_t)(uintptr_t)local_pAllocator;
11905 stream->putBe64(cgen_var_804);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011906 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011907 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011908 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011909 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011910 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011911 uint64_t cgen_var_805;
11912 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_805, 1);
11913 stream->write((uint64_t*)&cgen_var_805, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011914 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011915 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080011916 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011917 uint64_t cgen_var_806;
11918 stream->read((uint64_t*)&cgen_var_806, 8);
11919 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_806, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011920 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011921 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011922 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
11923 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011924 countingStream->clearPool();
11925 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011926 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011927 mImpl->log("finish vkCreateSwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011928 return vkCreateSwapchainKHR_VkResult_return;
11929}
11930
11931void VkEncoder::vkDestroySwapchainKHR(
11932 VkDevice device,
11933 VkSwapchainKHR swapchain,
11934 const VkAllocationCallbacks* pAllocator)
11935{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011936 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011937 mImpl->log("start vkDestroySwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011938 auto stream = mImpl->stream();
11939 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011940 auto resources = mImpl->resources();
11941 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011942 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011943 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011944 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011945 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011946 local_device = device;
11947 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011948 local_pAllocator = nullptr;
11949 if (pAllocator)
11950 {
11951 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11952 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11953 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011954 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011955 if (local_pAllocator)
11956 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011957 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011958 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011959 countingStream->rewind();
11960 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011961 uint64_t cgen_var_807;
11962 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_807, 1);
11963 countingStream->write((uint64_t*)&cgen_var_807, 1 * 8);
11964 uint64_t cgen_var_808;
11965 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_808, 1);
11966 countingStream->write((uint64_t*)&cgen_var_808, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011967 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011968 uint64_t cgen_var_809 = (uint64_t)(uintptr_t)local_pAllocator;
11969 countingStream->putBe64(cgen_var_809);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011970 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011971 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011972 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011973 }
11974 }
11975 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11976 countingStream->rewind();
11977 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
11978 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
11979 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011980 uint64_t cgen_var_810;
11981 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_810, 1);
11982 stream->write((uint64_t*)&cgen_var_810, 1 * 8);
11983 uint64_t cgen_var_811;
11984 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_811, 1);
11985 stream->write((uint64_t*)&cgen_var_811, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011986 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080011987 uint64_t cgen_var_812 = (uint64_t)(uintptr_t)local_pAllocator;
11988 stream->putBe64(cgen_var_812);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011989 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011990 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011991 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011992 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011993 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR readParams");
11994 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011995 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011996 mImpl->log("finish vkDestroySwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011997}
11998
11999VkResult VkEncoder::vkGetSwapchainImagesKHR(
12000 VkDevice device,
12001 VkSwapchainKHR swapchain,
12002 uint32_t* pSwapchainImageCount,
12003 VkImage* pSwapchainImages)
12004{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012005 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012006 mImpl->log("start vkGetSwapchainImagesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012007 auto stream = mImpl->stream();
12008 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012009 auto resources = mImpl->resources();
12010 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012011 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012012 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012013 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012014 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012015 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012016 countingStream->rewind();
12017 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012018 uint64_t cgen_var_813;
12019 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_813, 1);
12020 countingStream->write((uint64_t*)&cgen_var_813, 1 * 8);
12021 uint64_t cgen_var_814;
12022 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_814, 1);
12023 countingStream->write((uint64_t*)&cgen_var_814, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012024 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012025 uint64_t cgen_var_815 = (uint64_t)(uintptr_t)pSwapchainImageCount;
12026 countingStream->putBe64(cgen_var_815);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012027 if (pSwapchainImageCount)
12028 {
12029 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
12030 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012031 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012032 uint64_t cgen_var_816 = (uint64_t)(uintptr_t)pSwapchainImages;
12033 countingStream->putBe64(cgen_var_816);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012034 if (pSwapchainImages)
12035 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012036 if ((*(pSwapchainImageCount)))
12037 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012038 uint64_t* cgen_var_817;
12039 countingStream->alloc((void**)&cgen_var_817, (*(pSwapchainImageCount)) * 8);
12040 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_817, (*(pSwapchainImageCount)));
12041 countingStream->write((uint64_t*)cgen_var_817, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012042 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012043 }
12044 }
12045 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12046 countingStream->rewind();
12047 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
12048 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
12049 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012050 uint64_t cgen_var_818;
12051 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_818, 1);
12052 stream->write((uint64_t*)&cgen_var_818, 1 * 8);
12053 uint64_t cgen_var_819;
12054 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_819, 1);
12055 stream->write((uint64_t*)&cgen_var_819, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012056 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012057 uint64_t cgen_var_820 = (uint64_t)(uintptr_t)pSwapchainImageCount;
12058 stream->putBe64(cgen_var_820);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012059 if (pSwapchainImageCount)
12060 {
12061 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
12062 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012063 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012064 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012065 uint64_t cgen_var_821 = (uint64_t)(uintptr_t)pSwapchainImages;
12066 stream->putBe64(cgen_var_821);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012067 if (pSwapchainImages)
12068 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012069 if ((*(pSwapchainImageCount)))
12070 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012071 uint64_t* cgen_var_822;
12072 stream->alloc((void**)&cgen_var_822, (*(pSwapchainImageCount)) * 8);
12073 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_822, (*(pSwapchainImageCount)));
12074 stream->write((uint64_t*)cgen_var_822, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012075 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012076 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012077 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012078 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012079 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012080 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012081 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012082 if (pSwapchainImageCount)
12083 {
12084 if (!(check_pSwapchainImageCount))
12085 {
12086 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
12087 }
12088 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
12089 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012090 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012091 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012092 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012093 if (pSwapchainImages)
12094 {
12095 if (!(check_pSwapchainImages))
12096 {
12097 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
12098 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012099 if ((*(pSwapchainImageCount)))
12100 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012101 uint64_t* cgen_var_825;
12102 stream->alloc((void**)&cgen_var_825, (*(pSwapchainImageCount)) * 8);
12103 stream->read((uint64_t*)cgen_var_825, (*(pSwapchainImageCount)) * 8);
12104 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_825, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012105 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012106 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012107 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012108 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
12109 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012110 countingStream->clearPool();
12111 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012112 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012113 mImpl->log("finish vkGetSwapchainImagesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012114 return vkGetSwapchainImagesKHR_VkResult_return;
12115}
12116
12117VkResult VkEncoder::vkAcquireNextImageKHR(
12118 VkDevice device,
12119 VkSwapchainKHR swapchain,
12120 uint64_t timeout,
12121 VkSemaphore semaphore,
12122 VkFence fence,
12123 uint32_t* pImageIndex)
12124{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012125 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012126 mImpl->log("start vkAcquireNextImageKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012127 auto stream = mImpl->stream();
12128 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012129 auto resources = mImpl->resources();
12130 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012131 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012132 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012133 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012134 uint64_t local_timeout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012135 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012136 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012137 local_device = device;
12138 local_swapchain = swapchain;
12139 local_timeout = timeout;
12140 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012141 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012142 countingStream->rewind();
12143 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012144 uint64_t cgen_var_826;
12145 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
12146 countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
12147 uint64_t cgen_var_827;
12148 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_827, 1);
12149 countingStream->write((uint64_t*)&cgen_var_827, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012150 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012151 uint64_t cgen_var_828;
12152 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_828, 1);
12153 countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
12154 uint64_t cgen_var_829;
12155 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_829, 1);
12156 countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012157 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
12158 }
12159 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12160 countingStream->rewind();
12161 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
12162 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
12163 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012164 uint64_t cgen_var_830;
12165 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_830, 1);
12166 stream->write((uint64_t*)&cgen_var_830, 1 * 8);
12167 uint64_t cgen_var_831;
12168 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_831, 1);
12169 stream->write((uint64_t*)&cgen_var_831, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012170 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012171 uint64_t cgen_var_832;
12172 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_832, 1);
12173 stream->write((uint64_t*)&cgen_var_832, 1 * 8);
12174 uint64_t cgen_var_833;
12175 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_833, 1);
12176 stream->write((uint64_t*)&cgen_var_833, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012177 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012178 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012179 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012180 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012181 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
12182 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012183 countingStream->clearPool();
12184 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012185 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012186 mImpl->log("finish vkAcquireNextImageKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012187 return vkAcquireNextImageKHR_VkResult_return;
12188}
12189
12190VkResult VkEncoder::vkQueuePresentKHR(
12191 VkQueue queue,
12192 const VkPresentInfoKHR* pPresentInfo)
12193{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012194 AEMU_SCOPED_TRACE("vkQueuePresentKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012195 mImpl->log("start vkQueuePresentKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012196 auto stream = mImpl->stream();
12197 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012198 auto resources = mImpl->resources();
12199 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012200 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012201 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012202 VkPresentInfoKHR* local_pPresentInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012203 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012204 local_pPresentInfo = nullptr;
12205 if (pPresentInfo)
12206 {
12207 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
12208 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
12209 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080012210 if (local_pPresentInfo)
12211 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012212 transform_tohost_VkPresentInfoKHR(mImpl->resources(), (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012213 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012214 countingStream->rewind();
12215 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012216 uint64_t cgen_var_834;
12217 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_834, 1);
12218 countingStream->write((uint64_t*)&cgen_var_834, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012219 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012220 }
12221 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12222 countingStream->rewind();
12223 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
12224 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
12225 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012226 uint64_t cgen_var_835;
12227 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_835, 1);
12228 stream->write((uint64_t*)&cgen_var_835, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012229 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012230 AEMU_SCOPED_TRACE("vkQueuePresentKHR readParams");
12231 AEMU_SCOPED_TRACE("vkQueuePresentKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012232 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
12233 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012234 countingStream->clearPool();
12235 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012236 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012237 mImpl->log("finish vkQueuePresentKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012238 return vkQueuePresentKHR_VkResult_return;
12239}
12240
12241VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
12242 VkDevice device,
12243 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
12244{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012245 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012246 mImpl->log("start vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012247 auto stream = mImpl->stream();
12248 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012249 auto resources = mImpl->resources();
12250 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012251 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012252 VkDevice local_device;
12253 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012254 countingStream->rewind();
12255 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012256 uint64_t cgen_var_836;
12257 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_836, 1);
12258 countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012259 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
12260 }
12261 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12262 countingStream->rewind();
12263 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
12264 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
12265 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012266 uint64_t cgen_var_837;
12267 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_837, 1);
12268 stream->write((uint64_t*)&cgen_var_837, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012269 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012270 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012271 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080012272 if (pDeviceGroupPresentCapabilities)
12273 {
12274 transform_fromhost_VkDeviceGroupPresentCapabilitiesKHR(mImpl->resources(), (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
12275 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012276 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012277 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
12278 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012279 countingStream->clearPool();
12280 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012281 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012282 mImpl->log("finish vkGetDeviceGroupPresentCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012283 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
12284}
12285
12286VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
12287 VkDevice device,
12288 VkSurfaceKHR surface,
12289 VkDeviceGroupPresentModeFlagsKHR* pModes)
12290{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012291 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012292 mImpl->log("start vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012293 auto stream = mImpl->stream();
12294 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012295 auto resources = mImpl->resources();
12296 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012297 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012298 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012299 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012300 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012301 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012302 countingStream->rewind();
12303 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012304 uint64_t cgen_var_838;
12305 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_838, 1);
12306 countingStream->write((uint64_t*)&cgen_var_838, 1 * 8);
12307 uint64_t cgen_var_839;
12308 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_839, 1);
12309 countingStream->write((uint64_t*)&cgen_var_839, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012310 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012311 uint64_t cgen_var_840 = (uint64_t)(uintptr_t)pModes;
12312 countingStream->putBe64(cgen_var_840);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012313 if (pModes)
12314 {
12315 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
12316 }
12317 }
12318 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12319 countingStream->rewind();
12320 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
12321 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
12322 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012323 uint64_t cgen_var_841;
12324 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_841, 1);
12325 stream->write((uint64_t*)&cgen_var_841, 1 * 8);
12326 uint64_t cgen_var_842;
12327 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_842, 1);
12328 stream->write((uint64_t*)&cgen_var_842, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012329 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012330 uint64_t cgen_var_843 = (uint64_t)(uintptr_t)pModes;
12331 stream->putBe64(cgen_var_843);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012332 if (pModes)
12333 {
12334 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
12335 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012336 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012337 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012338 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012339 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012340 if (pModes)
12341 {
12342 if (!(check_pModes))
12343 {
12344 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
12345 }
12346 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
12347 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012348 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012349 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
12350 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012351 countingStream->clearPool();
12352 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012353 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012354 mImpl->log("finish vkGetDeviceGroupSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012355 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
12356}
12357
12358VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
12359 VkPhysicalDevice physicalDevice,
12360 VkSurfaceKHR surface,
12361 uint32_t* pRectCount,
12362 VkRect2D* pRects)
12363{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012364 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012365 mImpl->log("start vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012366 auto stream = mImpl->stream();
12367 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012368 auto resources = mImpl->resources();
12369 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012370 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012371 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012372 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012373 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012374 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012375 countingStream->rewind();
12376 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012377 uint64_t cgen_var_845;
12378 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_845, 1);
12379 countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
12380 uint64_t cgen_var_846;
12381 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_846, 1);
12382 countingStream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012383 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012384 uint64_t cgen_var_847 = (uint64_t)(uintptr_t)pRectCount;
12385 countingStream->putBe64(cgen_var_847);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012386 if (pRectCount)
12387 {
12388 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
12389 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012390 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012391 uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pRects;
12392 countingStream->putBe64(cgen_var_848);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012393 if (pRects)
12394 {
12395 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12396 {
12397 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
12398 }
12399 }
12400 }
12401 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12402 countingStream->rewind();
12403 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
12404 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
12405 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012406 uint64_t cgen_var_849;
12407 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_849, 1);
12408 stream->write((uint64_t*)&cgen_var_849, 1 * 8);
12409 uint64_t cgen_var_850;
12410 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_850, 1);
12411 stream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012412 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012413 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pRectCount;
12414 stream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012415 if (pRectCount)
12416 {
12417 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
12418 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012419 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012420 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pRects;
12421 stream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012422 if (pRects)
12423 {
12424 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12425 {
12426 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
12427 }
12428 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012429 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012430 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012431 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012432 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012433 if (pRectCount)
12434 {
12435 if (!(check_pRectCount))
12436 {
12437 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
12438 }
12439 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
12440 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012441 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012442 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012443 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012444 if (pRects)
12445 {
12446 if (!(check_pRects))
12447 {
12448 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
12449 }
12450 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12451 {
12452 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
12453 }
12454 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012455 if (pRects)
12456 {
12457 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12458 {
12459 transform_fromhost_VkRect2D(mImpl->resources(), (VkRect2D*)(pRects + i));
12460 }
12461 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012462 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012463 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
12464 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012465 countingStream->clearPool();
12466 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012467 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012468 mImpl->log("finish vkGetPhysicalDevicePresentRectanglesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012469 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
12470}
12471
12472VkResult VkEncoder::vkAcquireNextImage2KHR(
12473 VkDevice device,
12474 const VkAcquireNextImageInfoKHR* pAcquireInfo,
12475 uint32_t* pImageIndex)
12476{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012477 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012478 mImpl->log("start vkAcquireNextImage2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012479 auto stream = mImpl->stream();
12480 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012481 auto resources = mImpl->resources();
12482 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012483 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012484 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012485 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012486 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012487 local_pAcquireInfo = nullptr;
12488 if (pAcquireInfo)
12489 {
12490 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
12491 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
12492 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080012493 if (local_pAcquireInfo)
12494 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012495 transform_tohost_VkAcquireNextImageInfoKHR(mImpl->resources(), (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012496 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012497 countingStream->rewind();
12498 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012499 uint64_t cgen_var_855;
12500 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_855, 1);
12501 countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012502 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012503 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
12504 }
12505 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12506 countingStream->rewind();
12507 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
12508 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
12509 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012510 uint64_t cgen_var_856;
12511 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_856, 1);
12512 stream->write((uint64_t*)&cgen_var_856, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012513 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012514 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012515 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012516 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012517 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012518 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
12519 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012520 countingStream->clearPool();
12521 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012522 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012523 mImpl->log("finish vkAcquireNextImage2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012524 return vkAcquireNextImage2KHR_VkResult_return;
12525}
12526
12527#endif
12528#ifdef VK_KHR_display
12529VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
12530 VkPhysicalDevice physicalDevice,
12531 uint32_t* pPropertyCount,
12532 VkDisplayPropertiesKHR* pProperties)
12533{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012534 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012535 mImpl->log("start vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012536 auto stream = mImpl->stream();
12537 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012538 auto resources = mImpl->resources();
12539 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012540 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012541 VkPhysicalDevice local_physicalDevice;
12542 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012543 countingStream->rewind();
12544 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012545 uint64_t cgen_var_857;
12546 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_857, 1);
12547 countingStream->write((uint64_t*)&cgen_var_857, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012548 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012549 uint64_t cgen_var_858 = (uint64_t)(uintptr_t)pPropertyCount;
12550 countingStream->putBe64(cgen_var_858);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012551 if (pPropertyCount)
12552 {
12553 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12554 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012555 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012556 uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pProperties;
12557 countingStream->putBe64(cgen_var_859);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012558 if (pProperties)
12559 {
12560 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12561 {
12562 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
12563 }
12564 }
12565 }
12566 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12567 countingStream->rewind();
12568 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
12569 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
12570 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012571 uint64_t cgen_var_860;
12572 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_860, 1);
12573 stream->write((uint64_t*)&cgen_var_860, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012574 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012575 uint64_t cgen_var_861 = (uint64_t)(uintptr_t)pPropertyCount;
12576 stream->putBe64(cgen_var_861);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012577 if (pPropertyCount)
12578 {
12579 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12580 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012581 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012582 uint64_t cgen_var_862 = (uint64_t)(uintptr_t)pProperties;
12583 stream->putBe64(cgen_var_862);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012584 if (pProperties)
12585 {
12586 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12587 {
12588 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12589 }
12590 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012591 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012592 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012593 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012594 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012595 if (pPropertyCount)
12596 {
12597 if (!(check_pPropertyCount))
12598 {
12599 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12600 }
12601 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12602 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012603 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012604 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012605 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012606 if (pProperties)
12607 {
12608 if (!(check_pProperties))
12609 {
12610 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12611 }
12612 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12613 {
12614 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12615 }
12616 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012617 if (pProperties)
12618 {
12619 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12620 {
12621 transform_fromhost_VkDisplayPropertiesKHR(mImpl->resources(), (VkDisplayPropertiesKHR*)(pProperties + i));
12622 }
12623 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012624 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012625 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
12626 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012627 countingStream->clearPool();
12628 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012629 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012630 mImpl->log("finish vkGetPhysicalDeviceDisplayPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012631 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
12632}
12633
12634VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
12635 VkPhysicalDevice physicalDevice,
12636 uint32_t* pPropertyCount,
12637 VkDisplayPlanePropertiesKHR* pProperties)
12638{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012639 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012640 mImpl->log("start vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012641 auto stream = mImpl->stream();
12642 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012643 auto resources = mImpl->resources();
12644 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012645 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012646 VkPhysicalDevice local_physicalDevice;
12647 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012648 countingStream->rewind();
12649 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012650 uint64_t cgen_var_865;
12651 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_865, 1);
12652 countingStream->write((uint64_t*)&cgen_var_865, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012653 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012654 uint64_t cgen_var_866 = (uint64_t)(uintptr_t)pPropertyCount;
12655 countingStream->putBe64(cgen_var_866);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012656 if (pPropertyCount)
12657 {
12658 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12659 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012660 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012661 uint64_t cgen_var_867 = (uint64_t)(uintptr_t)pProperties;
12662 countingStream->putBe64(cgen_var_867);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012663 if (pProperties)
12664 {
12665 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12666 {
12667 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12668 }
12669 }
12670 }
12671 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12672 countingStream->rewind();
12673 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
12674 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
12675 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012676 uint64_t cgen_var_868;
12677 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_868, 1);
12678 stream->write((uint64_t*)&cgen_var_868, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012679 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012680 uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pPropertyCount;
12681 stream->putBe64(cgen_var_869);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012682 if (pPropertyCount)
12683 {
12684 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12685 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012686 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012687 uint64_t cgen_var_870 = (uint64_t)(uintptr_t)pProperties;
12688 stream->putBe64(cgen_var_870);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012689 if (pProperties)
12690 {
12691 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12692 {
12693 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12694 }
12695 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012696 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012697 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012698 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012699 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012700 if (pPropertyCount)
12701 {
12702 if (!(check_pPropertyCount))
12703 {
12704 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12705 }
12706 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12707 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012708 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012709 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012710 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012711 if (pProperties)
12712 {
12713 if (!(check_pProperties))
12714 {
12715 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12716 }
12717 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12718 {
12719 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12720 }
12721 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012722 if (pProperties)
12723 {
12724 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12725 {
12726 transform_fromhost_VkDisplayPlanePropertiesKHR(mImpl->resources(), (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12727 }
12728 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012729 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012730 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
12731 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012732 countingStream->clearPool();
12733 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012734 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012735 mImpl->log("finish vkGetPhysicalDeviceDisplayPlanePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012736 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
12737}
12738
12739VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
12740 VkPhysicalDevice physicalDevice,
12741 uint32_t planeIndex,
12742 uint32_t* pDisplayCount,
12743 VkDisplayKHR* pDisplays)
12744{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012745 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012746 mImpl->log("start vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012747 auto stream = mImpl->stream();
12748 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012749 auto resources = mImpl->resources();
12750 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012751 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012752 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012753 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012754 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012755 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012756 countingStream->rewind();
12757 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012758 uint64_t cgen_var_873;
12759 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_873, 1);
12760 countingStream->write((uint64_t*)&cgen_var_873, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012761 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012762 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012763 uint64_t cgen_var_874 = (uint64_t)(uintptr_t)pDisplayCount;
12764 countingStream->putBe64(cgen_var_874);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012765 if (pDisplayCount)
12766 {
12767 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12768 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012769 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012770 uint64_t cgen_var_875 = (uint64_t)(uintptr_t)pDisplays;
12771 countingStream->putBe64(cgen_var_875);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012772 if (pDisplays)
12773 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012774 if ((*(pDisplayCount)))
12775 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012776 uint64_t* cgen_var_876;
12777 countingStream->alloc((void**)&cgen_var_876, (*(pDisplayCount)) * 8);
12778 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_876, (*(pDisplayCount)));
12779 countingStream->write((uint64_t*)cgen_var_876, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012780 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012781 }
12782 }
12783 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12784 countingStream->rewind();
12785 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
12786 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
12787 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012788 uint64_t cgen_var_877;
12789 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_877, 1);
12790 stream->write((uint64_t*)&cgen_var_877, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012791 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012792 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012793 uint64_t cgen_var_878 = (uint64_t)(uintptr_t)pDisplayCount;
12794 stream->putBe64(cgen_var_878);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012795 if (pDisplayCount)
12796 {
12797 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12798 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012799 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012800 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012801 uint64_t cgen_var_879 = (uint64_t)(uintptr_t)pDisplays;
12802 stream->putBe64(cgen_var_879);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012803 if (pDisplays)
12804 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012805 if ((*(pDisplayCount)))
12806 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012807 uint64_t* cgen_var_880;
12808 stream->alloc((void**)&cgen_var_880, (*(pDisplayCount)) * 8);
12809 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_880, (*(pDisplayCount)));
12810 stream->write((uint64_t*)cgen_var_880, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012811 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012812 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012813 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012814 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012815 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012816 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012817 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012818 if (pDisplayCount)
12819 {
12820 if (!(check_pDisplayCount))
12821 {
12822 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
12823 }
12824 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
12825 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012826 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012827 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012828 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012829 if (pDisplays)
12830 {
12831 if (!(check_pDisplays))
12832 {
12833 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
12834 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012835 if ((*(pDisplayCount)))
12836 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012837 uint64_t* cgen_var_883;
12838 stream->alloc((void**)&cgen_var_883, (*(pDisplayCount)) * 8);
12839 stream->read((uint64_t*)cgen_var_883, (*(pDisplayCount)) * 8);
12840 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_883, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012841 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012842 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012843 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012844 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
12845 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012846 countingStream->clearPool();
12847 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012848 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012849 mImpl->log("finish vkGetDisplayPlaneSupportedDisplaysKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012850 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
12851}
12852
12853VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
12854 VkPhysicalDevice physicalDevice,
12855 VkDisplayKHR display,
12856 uint32_t* pPropertyCount,
12857 VkDisplayModePropertiesKHR* pProperties)
12858{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012859 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012860 mImpl->log("start vkGetDisplayModePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012861 auto stream = mImpl->stream();
12862 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012863 auto resources = mImpl->resources();
12864 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012865 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012866 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012867 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012868 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012869 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012870 countingStream->rewind();
12871 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012872 uint64_t cgen_var_884;
12873 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
12874 countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
12875 uint64_t cgen_var_885;
12876 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
12877 countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012878 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012879 uint64_t cgen_var_886 = (uint64_t)(uintptr_t)pPropertyCount;
12880 countingStream->putBe64(cgen_var_886);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012881 if (pPropertyCount)
12882 {
12883 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12884 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012885 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012886 uint64_t cgen_var_887 = (uint64_t)(uintptr_t)pProperties;
12887 countingStream->putBe64(cgen_var_887);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012888 if (pProperties)
12889 {
12890 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12891 {
12892 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12893 }
12894 }
12895 }
12896 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12897 countingStream->rewind();
12898 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
12899 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
12900 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012901 uint64_t cgen_var_888;
12902 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
12903 stream->write((uint64_t*)&cgen_var_888, 1 * 8);
12904 uint64_t cgen_var_889;
12905 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
12906 stream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012907 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012908 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)pPropertyCount;
12909 stream->putBe64(cgen_var_890);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012910 if (pPropertyCount)
12911 {
12912 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12913 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012914 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080012915 uint64_t cgen_var_891 = (uint64_t)(uintptr_t)pProperties;
12916 stream->putBe64(cgen_var_891);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012917 if (pProperties)
12918 {
12919 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12920 {
12921 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12922 }
12923 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012924 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012925 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012926 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012927 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012928 if (pPropertyCount)
12929 {
12930 if (!(check_pPropertyCount))
12931 {
12932 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12933 }
12934 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12935 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012936 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012937 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012938 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012939 if (pProperties)
12940 {
12941 if (!(check_pProperties))
12942 {
12943 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12944 }
12945 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12946 {
12947 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12948 }
12949 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012950 if (pProperties)
12951 {
12952 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12953 {
12954 transform_fromhost_VkDisplayModePropertiesKHR(mImpl->resources(), (VkDisplayModePropertiesKHR*)(pProperties + i));
12955 }
12956 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012957 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012958 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
12959 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012960 countingStream->clearPool();
12961 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012962 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012963 mImpl->log("finish vkGetDisplayModePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012964 return vkGetDisplayModePropertiesKHR_VkResult_return;
12965}
12966
12967VkResult VkEncoder::vkCreateDisplayModeKHR(
12968 VkPhysicalDevice physicalDevice,
12969 VkDisplayKHR display,
12970 const VkDisplayModeCreateInfoKHR* pCreateInfo,
12971 const VkAllocationCallbacks* pAllocator,
12972 VkDisplayModeKHR* pMode)
12973{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012974 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012975 mImpl->log("start vkCreateDisplayModeKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012976 auto stream = mImpl->stream();
12977 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012978 auto resources = mImpl->resources();
12979 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012980 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012981 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012982 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012983 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012984 VkAllocationCallbacks* local_pAllocator;
12985 local_physicalDevice = physicalDevice;
12986 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012987 local_pCreateInfo = nullptr;
12988 if (pCreateInfo)
12989 {
12990 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
12991 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
12992 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012993 local_pAllocator = nullptr;
12994 if (pAllocator)
12995 {
12996 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12997 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12998 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080012999 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013000 if (local_pCreateInfo)
13001 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013002 transform_tohost_VkDisplayModeCreateInfoKHR(mImpl->resources(), (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013003 }
13004 if (local_pAllocator)
13005 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013006 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013007 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013008 countingStream->rewind();
13009 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013010 uint64_t cgen_var_894;
13011 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_894, 1);
13012 countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
13013 uint64_t cgen_var_895;
13014 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_895, 1);
13015 countingStream->write((uint64_t*)&cgen_var_895, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013016 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013017 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013018 uint64_t cgen_var_896 = (uint64_t)(uintptr_t)local_pAllocator;
13019 countingStream->putBe64(cgen_var_896);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013020 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013021 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013022 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013023 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013024 uint64_t cgen_var_897;
13025 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_897, 1);
13026 countingStream->write((uint64_t*)&cgen_var_897, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013027 }
13028 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13029 countingStream->rewind();
13030 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
13031 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
13032 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013033 uint64_t cgen_var_898;
13034 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_898, 1);
13035 stream->write((uint64_t*)&cgen_var_898, 1 * 8);
13036 uint64_t cgen_var_899;
13037 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_899, 1);
13038 stream->write((uint64_t*)&cgen_var_899, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013039 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013040 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013041 uint64_t cgen_var_900 = (uint64_t)(uintptr_t)local_pAllocator;
13042 stream->putBe64(cgen_var_900);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013043 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013044 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013045 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013046 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013047 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013048 uint64_t cgen_var_901;
13049 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_901, 1);
13050 stream->write((uint64_t*)&cgen_var_901, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013051 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013052 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080013053 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013054 uint64_t cgen_var_902;
13055 stream->read((uint64_t*)&cgen_var_902, 8);
13056 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_902, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013057 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013058 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013059 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
13060 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013061 countingStream->clearPool();
13062 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013063 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013064 mImpl->log("finish vkCreateDisplayModeKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013065 return vkCreateDisplayModeKHR_VkResult_return;
13066}
13067
13068VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
13069 VkPhysicalDevice physicalDevice,
13070 VkDisplayModeKHR mode,
13071 uint32_t planeIndex,
13072 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
13073{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013074 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013075 mImpl->log("start vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013076 auto stream = mImpl->stream();
13077 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013078 auto resources = mImpl->resources();
13079 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013080 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013081 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013082 VkDisplayModeKHR local_mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013083 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013084 local_physicalDevice = physicalDevice;
13085 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013086 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013087 countingStream->rewind();
13088 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013089 uint64_t cgen_var_903;
13090 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_903, 1);
13091 countingStream->write((uint64_t*)&cgen_var_903, 1 * 8);
13092 uint64_t cgen_var_904;
13093 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_904, 1);
13094 countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013095 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013096 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
13097 }
13098 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13099 countingStream->rewind();
13100 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
13101 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
13102 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013103 uint64_t cgen_var_905;
13104 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_905, 1);
13105 stream->write((uint64_t*)&cgen_var_905, 1 * 8);
13106 uint64_t cgen_var_906;
13107 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_906, 1);
13108 stream->write((uint64_t*)&cgen_var_906, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013109 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013110 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013111 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013112 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013113 if (pCapabilities)
13114 {
13115 transform_fromhost_VkDisplayPlaneCapabilitiesKHR(mImpl->resources(), (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
13116 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013117 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013118 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
13119 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013120 countingStream->clearPool();
13121 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013122 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013123 mImpl->log("finish vkGetDisplayPlaneCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013124 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
13125}
13126
13127VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
13128 VkInstance instance,
13129 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
13130 const VkAllocationCallbacks* pAllocator,
13131 VkSurfaceKHR* pSurface)
13132{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013133 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013134 mImpl->log("start vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013135 auto stream = mImpl->stream();
13136 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013137 auto resources = mImpl->resources();
13138 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013139 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013140 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013141 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013142 VkAllocationCallbacks* local_pAllocator;
13143 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013144 local_pCreateInfo = nullptr;
13145 if (pCreateInfo)
13146 {
13147 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
13148 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
13149 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013150 local_pAllocator = nullptr;
13151 if (pAllocator)
13152 {
13153 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13154 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13155 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013156 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013157 if (local_pCreateInfo)
13158 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013159 transform_tohost_VkDisplaySurfaceCreateInfoKHR(mImpl->resources(), (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013160 }
13161 if (local_pAllocator)
13162 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013163 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013164 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013165 countingStream->rewind();
13166 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013167 uint64_t cgen_var_907;
13168 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_907, 1);
13169 countingStream->write((uint64_t*)&cgen_var_907, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013170 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013171 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013172 uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
13173 countingStream->putBe64(cgen_var_908);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013174 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013175 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013176 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013177 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013178 uint64_t cgen_var_909;
13179 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_909, 1);
13180 countingStream->write((uint64_t*)&cgen_var_909, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013181 }
13182 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13183 countingStream->rewind();
13184 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
13185 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
13186 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013187 uint64_t cgen_var_910;
13188 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_910, 1);
13189 stream->write((uint64_t*)&cgen_var_910, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013190 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013191 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013192 uint64_t cgen_var_911 = (uint64_t)(uintptr_t)local_pAllocator;
13193 stream->putBe64(cgen_var_911);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013194 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013195 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013196 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013197 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013198 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013199 uint64_t cgen_var_912;
13200 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_912, 1);
13201 stream->write((uint64_t*)&cgen_var_912, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013202 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013203 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013204 uint64_t cgen_var_913;
13205 stream->read((uint64_t*)&cgen_var_913, 8);
13206 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_913, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013207 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013208 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
13209 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013210 countingStream->clearPool();
13211 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013212 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013213 mImpl->log("finish vkCreateDisplayPlaneSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013214 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
13215}
13216
13217#endif
13218#ifdef VK_KHR_display_swapchain
13219VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
13220 VkDevice device,
13221 uint32_t swapchainCount,
13222 const VkSwapchainCreateInfoKHR* pCreateInfos,
13223 const VkAllocationCallbacks* pAllocator,
13224 VkSwapchainKHR* pSwapchains)
13225{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013226 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013227 mImpl->log("start vkCreateSharedSwapchainsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013228 auto stream = mImpl->stream();
13229 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013230 auto resources = mImpl->resources();
13231 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013232 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013233 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013234 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013235 VkSwapchainCreateInfoKHR* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013236 VkAllocationCallbacks* local_pAllocator;
13237 local_device = device;
13238 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013239 local_pCreateInfos = nullptr;
13240 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013241 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013242 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013243 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13244 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013245 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013246 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013247 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013248 local_pAllocator = nullptr;
13249 if (pAllocator)
13250 {
13251 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13252 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13253 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013254 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013255 if (local_pCreateInfos)
13256 {
13257 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13258 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013259 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013260 }
13261 }
13262 if (local_pAllocator)
13263 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013264 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013265 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013266 countingStream->rewind();
13267 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013268 uint64_t cgen_var_914;
13269 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_914, 1);
13270 countingStream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013271 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
13272 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13273 {
13274 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
13275 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013276 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013277 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
13278 countingStream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013279 if (local_pAllocator)
13280 {
13281 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013282 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080013283 if (((swapchainCount)))
13284 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013285 uint64_t* cgen_var_916;
13286 countingStream->alloc((void**)&cgen_var_916, ((swapchainCount)) * 8);
13287 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_916, ((swapchainCount)));
13288 countingStream->write((uint64_t*)cgen_var_916, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080013289 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013290 }
13291 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13292 countingStream->rewind();
13293 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
13294 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
13295 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013296 uint64_t cgen_var_917;
13297 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_917, 1);
13298 stream->write((uint64_t*)&cgen_var_917, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013299 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013300 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13301 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013302 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013303 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013304 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013305 uint64_t cgen_var_918 = (uint64_t)(uintptr_t)local_pAllocator;
13306 stream->putBe64(cgen_var_918);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013307 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013308 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013309 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013310 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013311 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080013312 if (((swapchainCount)))
13313 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013314 uint64_t* cgen_var_919;
13315 stream->alloc((void**)&cgen_var_919, ((swapchainCount)) * 8);
13316 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_919, ((swapchainCount)));
13317 stream->write((uint64_t*)cgen_var_919, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080013318 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013319 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013320 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR readParams");
Lingfeng Yang2285df12018-11-17 16:25:11 -080013321 if (((swapchainCount)))
13322 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013323 uint64_t* cgen_var_920;
13324 stream->alloc((void**)&cgen_var_920, ((swapchainCount)) * 8);
13325 stream->read((uint64_t*)cgen_var_920, ((swapchainCount)) * 8);
13326 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_920, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013327 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013328 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013329 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
13330 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013331 countingStream->clearPool();
13332 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013333 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013334 mImpl->log("finish vkCreateSharedSwapchainsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013335 return vkCreateSharedSwapchainsKHR_VkResult_return;
13336}
13337
13338#endif
13339#ifdef VK_KHR_xlib_surface
13340VkResult VkEncoder::vkCreateXlibSurfaceKHR(
13341 VkInstance instance,
13342 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
13343 const VkAllocationCallbacks* pAllocator,
13344 VkSurfaceKHR* pSurface)
13345{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013346 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013347 mImpl->log("start vkCreateXlibSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013348 auto stream = mImpl->stream();
13349 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013350 auto resources = mImpl->resources();
13351 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013352 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013353 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013354 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013355 VkAllocationCallbacks* local_pAllocator;
13356 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013357 local_pCreateInfo = nullptr;
13358 if (pCreateInfo)
13359 {
13360 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
13361 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
13362 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013363 local_pAllocator = nullptr;
13364 if (pAllocator)
13365 {
13366 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13367 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13368 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013369 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013370 if (local_pCreateInfo)
13371 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013372 transform_tohost_VkXlibSurfaceCreateInfoKHR(mImpl->resources(), (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013373 }
13374 if (local_pAllocator)
13375 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013376 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013377 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013378 countingStream->rewind();
13379 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013380 uint64_t cgen_var_921;
13381 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_921, 1);
13382 countingStream->write((uint64_t*)&cgen_var_921, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013383 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013384 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013385 uint64_t cgen_var_922 = (uint64_t)(uintptr_t)local_pAllocator;
13386 countingStream->putBe64(cgen_var_922);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013387 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013388 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013389 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013390 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013391 uint64_t cgen_var_923;
13392 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_923, 1);
13393 countingStream->write((uint64_t*)&cgen_var_923, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013394 }
13395 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13396 countingStream->rewind();
13397 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
13398 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
13399 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013400 uint64_t cgen_var_924;
13401 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_924, 1);
13402 stream->write((uint64_t*)&cgen_var_924, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013403 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013404 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013405 uint64_t cgen_var_925 = (uint64_t)(uintptr_t)local_pAllocator;
13406 stream->putBe64(cgen_var_925);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013407 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013408 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013409 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013410 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013411 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013412 uint64_t cgen_var_926;
13413 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_926, 1);
13414 stream->write((uint64_t*)&cgen_var_926, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013415 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013416 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013417 uint64_t cgen_var_927;
13418 stream->read((uint64_t*)&cgen_var_927, 8);
13419 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_927, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013420 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013421 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
13422 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013423 countingStream->clearPool();
13424 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013425 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013426 mImpl->log("finish vkCreateXlibSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013427 return vkCreateXlibSurfaceKHR_VkResult_return;
13428}
13429
13430VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
13431 VkPhysicalDevice physicalDevice,
13432 uint32_t queueFamilyIndex,
13433 Display* dpy,
13434 VisualID visualID)
13435{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013436 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013437 mImpl->log("start vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013438 auto stream = mImpl->stream();
13439 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013440 auto resources = mImpl->resources();
13441 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013442 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013443 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013444 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013445 VisualID local_visualID;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013446 local_physicalDevice = physicalDevice;
13447 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013448 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013449 countingStream->rewind();
13450 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013451 uint64_t cgen_var_928;
13452 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
13453 countingStream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013454 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013455 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013456 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013457 }
13458 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13459 countingStream->rewind();
13460 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
13461 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
13462 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013463 uint64_t cgen_var_929;
13464 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_929, 1);
13465 stream->write((uint64_t*)&cgen_var_929, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013466 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013467 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013468 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013469 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013470 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013471 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013472 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13473 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013474 countingStream->clearPool();
13475 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013476 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013477 mImpl->log("finish vkGetPhysicalDeviceXlibPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013478 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
13479}
13480
13481#endif
13482#ifdef VK_KHR_xcb_surface
13483VkResult VkEncoder::vkCreateXcbSurfaceKHR(
13484 VkInstance instance,
13485 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
13486 const VkAllocationCallbacks* pAllocator,
13487 VkSurfaceKHR* pSurface)
13488{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013489 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013490 mImpl->log("start vkCreateXcbSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013491 auto stream = mImpl->stream();
13492 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013493 auto resources = mImpl->resources();
13494 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013495 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013496 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013497 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013498 VkAllocationCallbacks* local_pAllocator;
13499 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013500 local_pCreateInfo = nullptr;
13501 if (pCreateInfo)
13502 {
13503 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
13504 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
13505 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013506 local_pAllocator = nullptr;
13507 if (pAllocator)
13508 {
13509 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13510 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13511 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013512 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013513 if (local_pCreateInfo)
13514 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013515 transform_tohost_VkXcbSurfaceCreateInfoKHR(mImpl->resources(), (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013516 }
13517 if (local_pAllocator)
13518 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013519 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013520 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013521 countingStream->rewind();
13522 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013523 uint64_t cgen_var_930;
13524 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_930, 1);
13525 countingStream->write((uint64_t*)&cgen_var_930, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013526 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013527 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013528 uint64_t cgen_var_931 = (uint64_t)(uintptr_t)local_pAllocator;
13529 countingStream->putBe64(cgen_var_931);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013530 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013531 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013532 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013533 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013534 uint64_t cgen_var_932;
13535 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_932, 1);
13536 countingStream->write((uint64_t*)&cgen_var_932, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013537 }
13538 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13539 countingStream->rewind();
13540 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
13541 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
13542 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013543 uint64_t cgen_var_933;
13544 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_933, 1);
13545 stream->write((uint64_t*)&cgen_var_933, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013546 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013547 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013548 uint64_t cgen_var_934 = (uint64_t)(uintptr_t)local_pAllocator;
13549 stream->putBe64(cgen_var_934);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013550 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013551 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013552 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013553 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013554 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013555 uint64_t cgen_var_935;
13556 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_935, 1);
13557 stream->write((uint64_t*)&cgen_var_935, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013558 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013559 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013560 uint64_t cgen_var_936;
13561 stream->read((uint64_t*)&cgen_var_936, 8);
13562 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_936, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013563 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013564 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
13565 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013566 countingStream->clearPool();
13567 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013568 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013569 mImpl->log("finish vkCreateXcbSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013570 return vkCreateXcbSurfaceKHR_VkResult_return;
13571}
13572
13573VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
13574 VkPhysicalDevice physicalDevice,
13575 uint32_t queueFamilyIndex,
13576 xcb_connection_t* connection,
13577 xcb_visualid_t visual_id)
13578{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013579 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013580 mImpl->log("start vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013581 auto stream = mImpl->stream();
13582 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013583 auto resources = mImpl->resources();
13584 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013585 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013586 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013587 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013588 xcb_visualid_t local_visual_id;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013589 local_physicalDevice = physicalDevice;
13590 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013591 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013592 countingStream->rewind();
13593 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013594 uint64_t cgen_var_937;
13595 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
13596 countingStream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013597 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013598 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013599 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013600 }
13601 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13602 countingStream->rewind();
13603 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
13604 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
13605 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013606 uint64_t cgen_var_938;
13607 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_938, 1);
13608 stream->write((uint64_t*)&cgen_var_938, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013609 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013610 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013611 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013612 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013613 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013614 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013615 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13616 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013617 countingStream->clearPool();
13618 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013619 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013620 mImpl->log("finish vkGetPhysicalDeviceXcbPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013621 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
13622}
13623
13624#endif
13625#ifdef VK_KHR_wayland_surface
13626VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
13627 VkInstance instance,
13628 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
13629 const VkAllocationCallbacks* pAllocator,
13630 VkSurfaceKHR* pSurface)
13631{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013632 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013633 mImpl->log("start vkCreateWaylandSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013634 auto stream = mImpl->stream();
13635 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013636 auto resources = mImpl->resources();
13637 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013638 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013639 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013640 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013641 VkAllocationCallbacks* local_pAllocator;
13642 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013643 local_pCreateInfo = nullptr;
13644 if (pCreateInfo)
13645 {
13646 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
13647 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
13648 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013649 local_pAllocator = nullptr;
13650 if (pAllocator)
13651 {
13652 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13653 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13654 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013655 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013656 if (local_pCreateInfo)
13657 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013658 transform_tohost_VkWaylandSurfaceCreateInfoKHR(mImpl->resources(), (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013659 }
13660 if (local_pAllocator)
13661 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013662 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013663 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013664 countingStream->rewind();
13665 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013666 uint64_t cgen_var_939;
13667 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_939, 1);
13668 countingStream->write((uint64_t*)&cgen_var_939, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013669 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013670 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013671 uint64_t cgen_var_940 = (uint64_t)(uintptr_t)local_pAllocator;
13672 countingStream->putBe64(cgen_var_940);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013673 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013674 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013675 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013676 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013677 uint64_t cgen_var_941;
13678 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_941, 1);
13679 countingStream->write((uint64_t*)&cgen_var_941, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013680 }
13681 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13682 countingStream->rewind();
13683 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
13684 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
13685 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013686 uint64_t cgen_var_942;
13687 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_942, 1);
13688 stream->write((uint64_t*)&cgen_var_942, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013689 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013690 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013691 uint64_t cgen_var_943 = (uint64_t)(uintptr_t)local_pAllocator;
13692 stream->putBe64(cgen_var_943);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013693 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013694 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013695 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013696 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013697 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013698 uint64_t cgen_var_944;
13699 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_944, 1);
13700 stream->write((uint64_t*)&cgen_var_944, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013701 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013702 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013703 uint64_t cgen_var_945;
13704 stream->read((uint64_t*)&cgen_var_945, 8);
13705 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_945, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013706 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013707 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
13708 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013709 countingStream->clearPool();
13710 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013711 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013712 mImpl->log("finish vkCreateWaylandSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013713 return vkCreateWaylandSurfaceKHR_VkResult_return;
13714}
13715
13716VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
13717 VkPhysicalDevice physicalDevice,
13718 uint32_t queueFamilyIndex,
13719 wl_display* display)
13720{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013721 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013722 mImpl->log("start vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013723 auto stream = mImpl->stream();
13724 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013725 auto resources = mImpl->resources();
13726 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013727 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013728 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013729 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013730 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013731 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013732 countingStream->rewind();
13733 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013734 uint64_t cgen_var_946;
13735 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
13736 countingStream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013737 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013738 countingStream->write((wl_display*)display, sizeof(wl_display));
13739 }
13740 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13741 countingStream->rewind();
13742 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
13743 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
13744 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013745 uint64_t cgen_var_947;
13746 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_947, 1);
13747 stream->write((uint64_t*)&cgen_var_947, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013748 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013749 stream->write((wl_display*)display, sizeof(wl_display));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013750 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013751 stream->read((wl_display*)display, sizeof(wl_display));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013752 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013753 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13754 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013755 countingStream->clearPool();
13756 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013757 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013758 mImpl->log("finish vkGetPhysicalDeviceWaylandPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013759 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
13760}
13761
13762#endif
13763#ifdef VK_KHR_mir_surface
13764VkResult VkEncoder::vkCreateMirSurfaceKHR(
13765 VkInstance instance,
13766 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
13767 const VkAllocationCallbacks* pAllocator,
13768 VkSurfaceKHR* pSurface)
13769{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013770 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013771 mImpl->log("start vkCreateMirSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013772 auto stream = mImpl->stream();
13773 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013774 auto resources = mImpl->resources();
13775 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013776 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013777 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013778 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013779 VkAllocationCallbacks* local_pAllocator;
13780 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013781 local_pCreateInfo = nullptr;
13782 if (pCreateInfo)
13783 {
13784 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
13785 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
13786 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013787 local_pAllocator = nullptr;
13788 if (pAllocator)
13789 {
13790 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13791 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13792 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013793 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013794 if (local_pCreateInfo)
13795 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013796 transform_tohost_VkMirSurfaceCreateInfoKHR(mImpl->resources(), (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013797 }
13798 if (local_pAllocator)
13799 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013800 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013801 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013802 countingStream->rewind();
13803 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013804 uint64_t cgen_var_948;
13805 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_948, 1);
13806 countingStream->write((uint64_t*)&cgen_var_948, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013807 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013808 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013809 uint64_t cgen_var_949 = (uint64_t)(uintptr_t)local_pAllocator;
13810 countingStream->putBe64(cgen_var_949);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013811 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013812 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013813 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013814 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013815 uint64_t cgen_var_950;
13816 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_950, 1);
13817 countingStream->write((uint64_t*)&cgen_var_950, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013818 }
13819 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13820 countingStream->rewind();
13821 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
13822 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
13823 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013824 uint64_t cgen_var_951;
13825 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_951, 1);
13826 stream->write((uint64_t*)&cgen_var_951, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013827 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013828 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013829 uint64_t cgen_var_952 = (uint64_t)(uintptr_t)local_pAllocator;
13830 stream->putBe64(cgen_var_952);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013831 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013832 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013833 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013834 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013835 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013836 uint64_t cgen_var_953;
13837 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_953, 1);
13838 stream->write((uint64_t*)&cgen_var_953, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013839 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013840 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013841 uint64_t cgen_var_954;
13842 stream->read((uint64_t*)&cgen_var_954, 8);
13843 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_954, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013844 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013845 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
13846 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013847 countingStream->clearPool();
13848 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013849 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013850 mImpl->log("finish vkCreateMirSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013851 return vkCreateMirSurfaceKHR_VkResult_return;
13852}
13853
13854VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
13855 VkPhysicalDevice physicalDevice,
13856 uint32_t queueFamilyIndex,
13857 MirConnection* connection)
13858{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013859 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013860 mImpl->log("start vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013861 auto stream = mImpl->stream();
13862 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013863 auto resources = mImpl->resources();
13864 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013865 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013866 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013867 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013868 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013869 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013870 countingStream->rewind();
13871 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013872 uint64_t cgen_var_955;
13873 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_955, 1);
13874 countingStream->write((uint64_t*)&cgen_var_955, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013875 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013876 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
13877 }
13878 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13879 countingStream->rewind();
13880 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
13881 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
13882 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013883 uint64_t cgen_var_956;
13884 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_956, 1);
13885 stream->write((uint64_t*)&cgen_var_956, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013886 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013887 stream->write((MirConnection*)connection, sizeof(MirConnection));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013888 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013889 stream->read((MirConnection*)connection, sizeof(MirConnection));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013890 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013891 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13892 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013893 countingStream->clearPool();
13894 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013895 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013896 mImpl->log("finish vkGetPhysicalDeviceMirPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013897 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
13898}
13899
13900#endif
13901#ifdef VK_KHR_android_surface
13902VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
13903 VkInstance instance,
13904 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
13905 const VkAllocationCallbacks* pAllocator,
13906 VkSurfaceKHR* pSurface)
13907{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013908 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013909 mImpl->log("start vkCreateAndroidSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013910 auto stream = mImpl->stream();
13911 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013912 auto resources = mImpl->resources();
13913 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013914 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013915 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013916 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013917 VkAllocationCallbacks* local_pAllocator;
13918 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013919 local_pCreateInfo = nullptr;
13920 if (pCreateInfo)
13921 {
13922 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
13923 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
13924 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013925 local_pAllocator = nullptr;
13926 if (pAllocator)
13927 {
13928 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13929 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13930 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013931 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013932 if (local_pCreateInfo)
13933 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013934 transform_tohost_VkAndroidSurfaceCreateInfoKHR(mImpl->resources(), (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013935 }
13936 if (local_pAllocator)
13937 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013938 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013939 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013940 countingStream->rewind();
13941 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013942 uint64_t cgen_var_957;
13943 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
13944 countingStream->write((uint64_t*)&cgen_var_957, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013945 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013946 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013947 uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
13948 countingStream->putBe64(cgen_var_958);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013949 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013950 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013951 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013952 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013953 uint64_t cgen_var_959;
13954 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
13955 countingStream->write((uint64_t*)&cgen_var_959, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013956 }
13957 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13958 countingStream->rewind();
13959 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
13960 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
13961 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013962 uint64_t cgen_var_960;
13963 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_960, 1);
13964 stream->write((uint64_t*)&cgen_var_960, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013965 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013966 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013967 uint64_t cgen_var_961 = (uint64_t)(uintptr_t)local_pAllocator;
13968 stream->putBe64(cgen_var_961);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013969 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013970 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013971 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013972 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013973 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013974 uint64_t cgen_var_962;
13975 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_962, 1);
13976 stream->write((uint64_t*)&cgen_var_962, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013977 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013978 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080013979 uint64_t cgen_var_963;
13980 stream->read((uint64_t*)&cgen_var_963, 8);
13981 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_963, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013982 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013983 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
13984 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013985 countingStream->clearPool();
13986 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013987 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013988 mImpl->log("finish vkCreateAndroidSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013989 return vkCreateAndroidSurfaceKHR_VkResult_return;
13990}
13991
13992#endif
13993#ifdef VK_KHR_win32_surface
13994VkResult VkEncoder::vkCreateWin32SurfaceKHR(
13995 VkInstance instance,
13996 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
13997 const VkAllocationCallbacks* pAllocator,
13998 VkSurfaceKHR* pSurface)
13999{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014000 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014001 mImpl->log("start vkCreateWin32SurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014002 auto stream = mImpl->stream();
14003 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014004 auto resources = mImpl->resources();
14005 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014006 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014007 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014008 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014009 VkAllocationCallbacks* local_pAllocator;
14010 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014011 local_pCreateInfo = nullptr;
14012 if (pCreateInfo)
14013 {
14014 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
14015 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
14016 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014017 local_pAllocator = nullptr;
14018 if (pAllocator)
14019 {
14020 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14021 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14022 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014023 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014024 if (local_pCreateInfo)
14025 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014026 transform_tohost_VkWin32SurfaceCreateInfoKHR(mImpl->resources(), (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014027 }
14028 if (local_pAllocator)
14029 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014030 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014031 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014032 countingStream->rewind();
14033 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014034 uint64_t cgen_var_964;
14035 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_964, 1);
14036 countingStream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014037 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014038 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014039 uint64_t cgen_var_965 = (uint64_t)(uintptr_t)local_pAllocator;
14040 countingStream->putBe64(cgen_var_965);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014041 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014042 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014043 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014044 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014045 uint64_t cgen_var_966;
14046 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_966, 1);
14047 countingStream->write((uint64_t*)&cgen_var_966, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014048 }
14049 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14050 countingStream->rewind();
14051 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
14052 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
14053 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014054 uint64_t cgen_var_967;
14055 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_967, 1);
14056 stream->write((uint64_t*)&cgen_var_967, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014057 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014058 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014059 uint64_t cgen_var_968 = (uint64_t)(uintptr_t)local_pAllocator;
14060 stream->putBe64(cgen_var_968);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014061 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014062 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014063 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014064 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014065 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014066 uint64_t cgen_var_969;
14067 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_969, 1);
14068 stream->write((uint64_t*)&cgen_var_969, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014069 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014070 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014071 uint64_t cgen_var_970;
14072 stream->read((uint64_t*)&cgen_var_970, 8);
14073 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_970, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014074 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014075 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
14076 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014077 countingStream->clearPool();
14078 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014079 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014080 mImpl->log("finish vkCreateWin32SurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014081 return vkCreateWin32SurfaceKHR_VkResult_return;
14082}
14083
14084VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
14085 VkPhysicalDevice physicalDevice,
14086 uint32_t queueFamilyIndex)
14087{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014088 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014089 mImpl->log("start vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014090 auto stream = mImpl->stream();
14091 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014092 auto resources = mImpl->resources();
14093 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014094 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014095 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014096 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014097 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014098 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014099 countingStream->rewind();
14100 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014101 uint64_t cgen_var_971;
14102 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
14103 countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014104 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014105 }
14106 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14107 countingStream->rewind();
14108 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
14109 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
14110 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014111 uint64_t cgen_var_972;
14112 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_972, 1);
14113 stream->write((uint64_t*)&cgen_var_972, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014114 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014115 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR readParams");
14116 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014117 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
14118 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014119 countingStream->clearPool();
14120 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014121 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014122 mImpl->log("finish vkGetPhysicalDeviceWin32PresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014123 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
14124}
14125
14126#endif
14127#ifdef VK_KHR_sampler_mirror_clamp_to_edge
14128#endif
14129#ifdef VK_KHR_multiview
14130#endif
14131#ifdef VK_KHR_get_physical_device_properties2
14132void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
14133 VkPhysicalDevice physicalDevice,
14134 VkPhysicalDeviceFeatures2* pFeatures)
14135{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014136 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014137 mImpl->log("start vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014138 auto stream = mImpl->stream();
14139 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014140 auto resources = mImpl->resources();
14141 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014142 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014143 VkPhysicalDevice local_physicalDevice;
14144 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014145 countingStream->rewind();
14146 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014147 uint64_t cgen_var_973;
14148 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_973, 1);
14149 countingStream->write((uint64_t*)&cgen_var_973, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014150 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
14151 }
14152 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14153 countingStream->rewind();
14154 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
14155 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
14156 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014157 uint64_t cgen_var_974;
14158 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
14159 stream->write((uint64_t*)&cgen_var_974, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014160 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014161 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014162 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014163 if (pFeatures)
14164 {
14165 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
14166 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014167 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014168 mImpl->log("finish vkGetPhysicalDeviceFeatures2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014169}
14170
14171void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
14172 VkPhysicalDevice physicalDevice,
14173 VkPhysicalDeviceProperties2* pProperties)
14174{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014175 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014176 mImpl->log("start vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014177 auto stream = mImpl->stream();
14178 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014179 auto resources = mImpl->resources();
14180 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014181 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014182 VkPhysicalDevice local_physicalDevice;
14183 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014184 countingStream->rewind();
14185 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014186 uint64_t cgen_var_975;
14187 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_975, 1);
14188 countingStream->write((uint64_t*)&cgen_var_975, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014189 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
14190 }
14191 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14192 countingStream->rewind();
14193 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
14194 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
14195 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014196 uint64_t cgen_var_976;
14197 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_976, 1);
14198 stream->write((uint64_t*)&cgen_var_976, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014199 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014200 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014201 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014202 if (pProperties)
14203 {
14204 transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
14205 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014206 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014207 mImpl->log("finish vkGetPhysicalDeviceProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014208}
14209
14210void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
14211 VkPhysicalDevice physicalDevice,
14212 VkFormat format,
14213 VkFormatProperties2* pFormatProperties)
14214{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014215 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014216 mImpl->log("start vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014217 auto stream = mImpl->stream();
14218 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014219 auto resources = mImpl->resources();
14220 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014221 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014222 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014223 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014224 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014225 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014226 countingStream->rewind();
14227 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014228 uint64_t cgen_var_977;
14229 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_977, 1);
14230 countingStream->write((uint64_t*)&cgen_var_977, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014231 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014232 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
14233 }
14234 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14235 countingStream->rewind();
14236 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
14237 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
14238 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014239 uint64_t cgen_var_978;
14240 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_978, 1);
14241 stream->write((uint64_t*)&cgen_var_978, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014242 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014243 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014244 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014245 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014246 if (pFormatProperties)
14247 {
14248 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
14249 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014250 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014251 mImpl->log("finish vkGetPhysicalDeviceFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014252}
14253
14254VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
14255 VkPhysicalDevice physicalDevice,
14256 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
14257 VkImageFormatProperties2* pImageFormatProperties)
14258{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014259 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014260 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014261 auto stream = mImpl->stream();
14262 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014263 auto resources = mImpl->resources();
14264 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014265 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014266 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014267 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014268 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014269 local_pImageFormatInfo = nullptr;
14270 if (pImageFormatInfo)
14271 {
14272 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
14273 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
14274 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014275 if (local_pImageFormatInfo)
14276 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014277 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014278 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014279 countingStream->rewind();
14280 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014281 uint64_t cgen_var_979;
14282 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
14283 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014284 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014285 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
14286 }
14287 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14288 countingStream->rewind();
14289 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
14290 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
14291 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014292 uint64_t cgen_var_980;
14293 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
14294 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014295 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014296 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014297 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014298 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014299 if (pImageFormatProperties)
14300 {
14301 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
14302 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014303 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014304 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
14305 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014306 countingStream->clearPool();
14307 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014308 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014309 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014310 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
14311}
14312
14313void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
14314 VkPhysicalDevice physicalDevice,
14315 uint32_t* pQueueFamilyPropertyCount,
14316 VkQueueFamilyProperties2* pQueueFamilyProperties)
14317{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014318 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014319 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014320 auto stream = mImpl->stream();
14321 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014322 auto resources = mImpl->resources();
14323 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014324 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014325 VkPhysicalDevice local_physicalDevice;
14326 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014327 countingStream->rewind();
14328 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014329 uint64_t cgen_var_981;
14330 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
14331 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014332 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014333 uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
14334 countingStream->putBe64(cgen_var_982);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014335 if (pQueueFamilyPropertyCount)
14336 {
14337 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
14338 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014339 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014340 uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
14341 countingStream->putBe64(cgen_var_983);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014342 if (pQueueFamilyProperties)
14343 {
14344 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14345 {
14346 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14347 }
14348 }
14349 }
14350 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14351 countingStream->rewind();
14352 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
14353 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
14354 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014355 uint64_t cgen_var_984;
14356 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
14357 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014358 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014359 uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
14360 stream->putBe64(cgen_var_985);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014361 if (pQueueFamilyPropertyCount)
14362 {
14363 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
14364 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014365 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014366 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
14367 stream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014368 if (pQueueFamilyProperties)
14369 {
14370 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14371 {
14372 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14373 }
14374 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014375 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014376 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014377 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014378 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014379 if (pQueueFamilyPropertyCount)
14380 {
14381 if (!(check_pQueueFamilyPropertyCount))
14382 {
14383 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
14384 }
14385 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
14386 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014387 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014388 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014389 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014390 if (pQueueFamilyProperties)
14391 {
14392 if (!(check_pQueueFamilyProperties))
14393 {
14394 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
14395 }
14396 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14397 {
14398 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14399 }
14400 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080014401 if (pQueueFamilyProperties)
14402 {
14403 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14404 {
14405 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14406 }
14407 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014408 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014409 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014410}
14411
14412void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
14413 VkPhysicalDevice physicalDevice,
14414 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
14415{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014416 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014417 mImpl->log("start vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014418 auto stream = mImpl->stream();
14419 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014420 auto resources = mImpl->resources();
14421 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014422 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014423 VkPhysicalDevice local_physicalDevice;
14424 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014425 countingStream->rewind();
14426 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014427 uint64_t cgen_var_989;
14428 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_989, 1);
14429 countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014430 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
14431 }
14432 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14433 countingStream->rewind();
14434 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
14435 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
14436 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014437 uint64_t cgen_var_990;
14438 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_990, 1);
14439 stream->write((uint64_t*)&cgen_var_990, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014440 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014441 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014442 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014443 if (pMemoryProperties)
14444 {
14445 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
14446 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014447 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR returnUnmarshal");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014448 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2KHR(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014449 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014450}
14451
14452void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
14453 VkPhysicalDevice physicalDevice,
14454 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
14455 uint32_t* pPropertyCount,
14456 VkSparseImageFormatProperties2* pProperties)
14457{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014458 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014459 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014460 auto stream = mImpl->stream();
14461 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014462 auto resources = mImpl->resources();
14463 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014464 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014465 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014466 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014467 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014468 local_pFormatInfo = nullptr;
14469 if (pFormatInfo)
14470 {
14471 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
14472 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
14473 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014474 if (local_pFormatInfo)
14475 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014476 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014477 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014478 countingStream->rewind();
14479 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014480 uint64_t cgen_var_991;
14481 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_991, 1);
14482 countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014483 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014484 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014485 uint64_t cgen_var_992 = (uint64_t)(uintptr_t)pPropertyCount;
14486 countingStream->putBe64(cgen_var_992);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014487 if (pPropertyCount)
14488 {
14489 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14490 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014491 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014492 uint64_t cgen_var_993 = (uint64_t)(uintptr_t)pProperties;
14493 countingStream->putBe64(cgen_var_993);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014494 if (pProperties)
14495 {
14496 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14497 {
14498 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
14499 }
14500 }
14501 }
14502 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14503 countingStream->rewind();
14504 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
14505 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
14506 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014507 uint64_t cgen_var_994;
14508 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_994, 1);
14509 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014510 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014511 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014512 uint64_t cgen_var_995 = (uint64_t)(uintptr_t)pPropertyCount;
14513 stream->putBe64(cgen_var_995);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014514 if (pPropertyCount)
14515 {
14516 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14517 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014518 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014519 uint64_t cgen_var_996 = (uint64_t)(uintptr_t)pProperties;
14520 stream->putBe64(cgen_var_996);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014521 if (pProperties)
14522 {
14523 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14524 {
14525 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
14526 }
14527 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014528 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014529 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014530 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014531 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014532 if (pPropertyCount)
14533 {
14534 if (!(check_pPropertyCount))
14535 {
14536 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14537 }
14538 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14539 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014540 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014541 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014542 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014543 if (pProperties)
14544 {
14545 if (!(check_pProperties))
14546 {
14547 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14548 }
14549 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14550 {
14551 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
14552 }
14553 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080014554 if (pProperties)
14555 {
14556 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14557 {
14558 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
14559 }
14560 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014561 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014562 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014563}
14564
14565#endif
14566#ifdef VK_KHR_device_group
14567void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
14568 VkDevice device,
14569 uint32_t heapIndex,
14570 uint32_t localDeviceIndex,
14571 uint32_t remoteDeviceIndex,
14572 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
14573{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014574 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014575 mImpl->log("start vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014576 auto stream = mImpl->stream();
14577 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014578 auto resources = mImpl->resources();
14579 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014580 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014581 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014582 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014583 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014584 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014585 local_device = device;
14586 local_heapIndex = heapIndex;
14587 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014588 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014589 countingStream->rewind();
14590 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014591 uint64_t cgen_var_999;
14592 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_999, 1);
14593 countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014594 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
14595 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
14596 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014597 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
14598 }
14599 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14600 countingStream->rewind();
14601 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
14602 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
14603 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014604 uint64_t cgen_var_1000;
14605 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1000, 1);
14606 stream->write((uint64_t*)&cgen_var_1000, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014607 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
14608 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
14609 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014610 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014611 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014612 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014613 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014614 mImpl->log("finish vkGetDeviceGroupPeerMemoryFeaturesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014615}
14616
14617void VkEncoder::vkCmdSetDeviceMaskKHR(
14618 VkCommandBuffer commandBuffer,
14619 uint32_t deviceMask)
14620{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014621 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014622 mImpl->log("start vkCmdSetDeviceMaskKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014623 auto stream = mImpl->stream();
14624 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014625 auto resources = mImpl->resources();
14626 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014627 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014628 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014629 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014630 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014631 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014632 countingStream->rewind();
14633 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014634 uint64_t cgen_var_1001;
14635 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1001, 1);
14636 countingStream->write((uint64_t*)&cgen_var_1001, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014637 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014638 }
14639 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14640 countingStream->rewind();
14641 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
14642 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
14643 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014644 uint64_t cgen_var_1002;
14645 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1002, 1);
14646 stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014647 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014648 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR readParams");
14649 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014650 mImpl->log("finish vkCmdSetDeviceMaskKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014651}
14652
14653void VkEncoder::vkCmdDispatchBaseKHR(
14654 VkCommandBuffer commandBuffer,
14655 uint32_t baseGroupX,
14656 uint32_t baseGroupY,
14657 uint32_t baseGroupZ,
14658 uint32_t groupCountX,
14659 uint32_t groupCountY,
14660 uint32_t groupCountZ)
14661{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014662 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014663 mImpl->log("start vkCmdDispatchBaseKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014664 auto stream = mImpl->stream();
14665 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014666 auto resources = mImpl->resources();
14667 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014668 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014669 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014670 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014671 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014672 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014673 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014674 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014675 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014676 local_commandBuffer = commandBuffer;
14677 local_baseGroupX = baseGroupX;
14678 local_baseGroupY = baseGroupY;
14679 local_baseGroupZ = baseGroupZ;
14680 local_groupCountX = groupCountX;
14681 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014682 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014683 countingStream->rewind();
14684 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014685 uint64_t cgen_var_1003;
14686 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1003, 1);
14687 countingStream->write((uint64_t*)&cgen_var_1003, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014688 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14689 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14690 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14691 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14692 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14693 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014694 }
14695 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14696 countingStream->rewind();
14697 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
14698 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
14699 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014700 uint64_t cgen_var_1004;
14701 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1004, 1);
14702 stream->write((uint64_t*)&cgen_var_1004, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014703 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14704 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14705 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14706 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14707 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14708 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014709 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR readParams");
14710 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014711 mImpl->log("finish vkCmdDispatchBaseKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014712}
14713
14714#endif
14715#ifdef VK_KHR_shader_draw_parameters
14716#endif
14717#ifdef VK_KHR_maintenance1
14718void VkEncoder::vkTrimCommandPoolKHR(
14719 VkDevice device,
14720 VkCommandPool commandPool,
14721 VkCommandPoolTrimFlags flags)
14722{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014723 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014724 mImpl->log("start vkTrimCommandPoolKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014725 auto stream = mImpl->stream();
14726 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014727 auto resources = mImpl->resources();
14728 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014729 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014730 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014731 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014732 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014733 local_device = device;
14734 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014735 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014736 countingStream->rewind();
14737 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014738 uint64_t cgen_var_1005;
14739 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1005, 1);
14740 countingStream->write((uint64_t*)&cgen_var_1005, 1 * 8);
14741 uint64_t cgen_var_1006;
14742 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1006, 1);
14743 countingStream->write((uint64_t*)&cgen_var_1006, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014744 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014745 }
14746 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14747 countingStream->rewind();
14748 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
14749 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
14750 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014751 uint64_t cgen_var_1007;
14752 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1007, 1);
14753 stream->write((uint64_t*)&cgen_var_1007, 1 * 8);
14754 uint64_t cgen_var_1008;
14755 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1008, 1);
14756 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014757 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014758 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR readParams");
14759 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014760 mImpl->log("finish vkTrimCommandPoolKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014761}
14762
14763#endif
14764#ifdef VK_KHR_device_group_creation
14765VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
14766 VkInstance instance,
14767 uint32_t* pPhysicalDeviceGroupCount,
14768 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
14769{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014770 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014771 mImpl->log("start vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014772 auto stream = mImpl->stream();
14773 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014774 auto resources = mImpl->resources();
14775 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014776 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014777 VkInstance local_instance;
14778 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014779 countingStream->rewind();
14780 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014781 uint64_t cgen_var_1009;
14782 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1009, 1);
14783 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014784 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014785 uint64_t cgen_var_1010 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14786 countingStream->putBe64(cgen_var_1010);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014787 if (pPhysicalDeviceGroupCount)
14788 {
14789 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14790 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014791 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014792 uint64_t cgen_var_1011 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14793 countingStream->putBe64(cgen_var_1011);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014794 if (pPhysicalDeviceGroupProperties)
14795 {
14796 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14797 {
14798 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14799 }
14800 }
14801 }
14802 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14803 countingStream->rewind();
14804 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
14805 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
14806 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014807 uint64_t cgen_var_1012;
14808 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1012, 1);
14809 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014810 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014811 uint64_t cgen_var_1013 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14812 stream->putBe64(cgen_var_1013);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014813 if (pPhysicalDeviceGroupCount)
14814 {
14815 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14816 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014817 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014818 uint64_t cgen_var_1014 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14819 stream->putBe64(cgen_var_1014);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014820 if (pPhysicalDeviceGroupProperties)
14821 {
14822 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14823 {
14824 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14825 }
14826 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014827 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014828 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014829 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014830 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014831 if (pPhysicalDeviceGroupCount)
14832 {
14833 if (!(check_pPhysicalDeviceGroupCount))
14834 {
14835 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
14836 }
14837 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14838 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014839 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014840 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014841 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014842 if (pPhysicalDeviceGroupProperties)
14843 {
14844 if (!(check_pPhysicalDeviceGroupProperties))
14845 {
14846 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
14847 }
14848 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14849 {
14850 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14851 }
14852 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080014853 if (pPhysicalDeviceGroupProperties)
14854 {
14855 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14856 {
14857 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14858 }
14859 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014860 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014861 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
14862 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014863 countingStream->clearPool();
14864 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014865 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014866 mImpl->log("finish vkEnumeratePhysicalDeviceGroupsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014867 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
14868}
14869
14870#endif
14871#ifdef VK_KHR_external_memory_capabilities
14872void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
14873 VkPhysicalDevice physicalDevice,
14874 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
14875 VkExternalBufferProperties* pExternalBufferProperties)
14876{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014877 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014878 mImpl->log("start vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014879 auto stream = mImpl->stream();
14880 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014881 auto resources = mImpl->resources();
14882 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014883 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014884 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014885 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014886 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014887 local_pExternalBufferInfo = nullptr;
14888 if (pExternalBufferInfo)
14889 {
14890 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
14891 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
14892 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014893 if (local_pExternalBufferInfo)
14894 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080014895 mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080014896 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014897 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014898 countingStream->rewind();
14899 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014900 uint64_t cgen_var_1017;
14901 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
14902 countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014903 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014904 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14905 }
14906 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14907 countingStream->rewind();
14908 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
14909 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
14910 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014911 uint64_t cgen_var_1018;
14912 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
14913 stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014914 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014915 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014916 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014917 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014918 if (pExternalBufferProperties)
14919 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080014920 mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080014921 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
14922 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014923 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014924 mImpl->log("finish vkGetPhysicalDeviceExternalBufferPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014925}
14926
14927#endif
14928#ifdef VK_KHR_external_memory
14929#endif
14930#ifdef VK_KHR_external_memory_win32
14931VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
14932 VkDevice device,
14933 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14934 HANDLE* pHandle)
14935{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014936 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014937 mImpl->log("start vkGetMemoryWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014938 auto stream = mImpl->stream();
14939 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014940 auto resources = mImpl->resources();
14941 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014942 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014943 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014944 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014945 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014946 local_pGetWin32HandleInfo = nullptr;
14947 if (pGetWin32HandleInfo)
14948 {
14949 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
14950 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14951 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014952 if (local_pGetWin32HandleInfo)
14953 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014954 transform_tohost_VkMemoryGetWin32HandleInfoKHR(mImpl->resources(), (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014955 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014956 countingStream->rewind();
14957 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014958 uint64_t cgen_var_1019;
14959 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
14960 countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014961 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014962 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14963 }
14964 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14965 countingStream->rewind();
14966 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
14967 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
14968 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014969 uint64_t cgen_var_1020;
14970 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
14971 stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014972 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014973 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014974 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014975 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014976 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014977 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
14978 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014979 countingStream->clearPool();
14980 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014981 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014982 mImpl->log("finish vkGetMemoryWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014983 return vkGetMemoryWin32HandleKHR_VkResult_return;
14984}
14985
14986VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
14987 VkDevice device,
14988 VkExternalMemoryHandleTypeFlagBits handleType,
14989 HANDLE handle,
14990 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
14991{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014992 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014993 mImpl->log("start vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014994 auto stream = mImpl->stream();
14995 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014996 auto resources = mImpl->resources();
14997 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014998 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014999 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015000 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015001 HANDLE local_handle;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015002 local_device = device;
15003 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015004 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015005 countingStream->rewind();
15006 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015007 uint64_t cgen_var_1021;
15008 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
15009 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015010 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15011 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015012 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
15013 }
15014 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15015 countingStream->rewind();
15016 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
15017 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
15018 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015019 uint64_t cgen_var_1022;
15020 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
15021 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015022 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15023 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015024 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015025 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015026 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015027 if (pMemoryWin32HandleProperties)
15028 {
15029 transform_fromhost_VkMemoryWin32HandlePropertiesKHR(mImpl->resources(), (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
15030 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015031 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015032 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
15033 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015034 countingStream->clearPool();
15035 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015036 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015037 mImpl->log("finish vkGetMemoryWin32HandlePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015038 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
15039}
15040
15041#endif
15042#ifdef VK_KHR_external_memory_fd
15043VkResult VkEncoder::vkGetMemoryFdKHR(
15044 VkDevice device,
15045 const VkMemoryGetFdInfoKHR* pGetFdInfo,
15046 int* pFd)
15047{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015048 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015049 mImpl->log("start vkGetMemoryFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015050 auto stream = mImpl->stream();
15051 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015052 auto resources = mImpl->resources();
15053 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015054 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015055 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015056 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015057 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015058 local_pGetFdInfo = nullptr;
15059 if (pGetFdInfo)
15060 {
15061 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
15062 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
15063 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015064 if (local_pGetFdInfo)
15065 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015066 transform_tohost_VkMemoryGetFdInfoKHR(mImpl->resources(), (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015067 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015068 countingStream->rewind();
15069 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015070 uint64_t cgen_var_1023;
15071 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
15072 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015073 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015074 countingStream->write((int*)pFd, sizeof(int));
15075 }
15076 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15077 countingStream->rewind();
15078 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
15079 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
15080 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015081 uint64_t cgen_var_1024;
15082 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
15083 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015084 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015085 stream->write((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015086 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015087 stream->read((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015088 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015089 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
15090 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015091 countingStream->clearPool();
15092 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015093 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015094 mImpl->log("finish vkGetMemoryFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015095 return vkGetMemoryFdKHR_VkResult_return;
15096}
15097
15098VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
15099 VkDevice device,
15100 VkExternalMemoryHandleTypeFlagBits handleType,
15101 int fd,
15102 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
15103{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015104 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015105 mImpl->log("start vkGetMemoryFdPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015106 auto stream = mImpl->stream();
15107 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015108 auto resources = mImpl->resources();
15109 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015110 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015111 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015112 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015113 int local_fd;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015114 local_device = device;
15115 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015116 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015117 countingStream->rewind();
15118 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015119 uint64_t cgen_var_1025;
15120 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
15121 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015122 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15123 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015124 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
15125 }
15126 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15127 countingStream->rewind();
15128 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
15129 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
15130 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015131 uint64_t cgen_var_1026;
15132 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
15133 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015134 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15135 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015136 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015137 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015138 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015139 if (pMemoryFdProperties)
15140 {
15141 transform_fromhost_VkMemoryFdPropertiesKHR(mImpl->resources(), (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
15142 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015143 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015144 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
15145 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015146 countingStream->clearPool();
15147 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015148 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015149 mImpl->log("finish vkGetMemoryFdPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015150 return vkGetMemoryFdPropertiesKHR_VkResult_return;
15151}
15152
15153#endif
15154#ifdef VK_KHR_win32_keyed_mutex
15155#endif
15156#ifdef VK_KHR_external_semaphore_capabilities
15157void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
15158 VkPhysicalDevice physicalDevice,
15159 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
15160 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
15161{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015162 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015163 mImpl->log("start vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015164 auto stream = mImpl->stream();
15165 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015166 auto resources = mImpl->resources();
15167 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015168 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015169 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015170 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015171 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015172 local_pExternalSemaphoreInfo = nullptr;
15173 if (pExternalSemaphoreInfo)
15174 {
15175 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
15176 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
15177 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015178 if (local_pExternalSemaphoreInfo)
15179 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015180 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015181 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015182 countingStream->rewind();
15183 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015184 uint64_t cgen_var_1027;
15185 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1027, 1);
15186 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015187 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015188 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
15189 }
15190 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15191 countingStream->rewind();
15192 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
15193 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
15194 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015195 uint64_t cgen_var_1028;
15196 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1028, 1);
15197 stream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015198 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015199 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015200 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015201 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015202 if (pExternalSemaphoreProperties)
15203 {
15204 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
15205 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015206 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015207 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015208}
15209
15210#endif
15211#ifdef VK_KHR_external_semaphore
15212#endif
15213#ifdef VK_KHR_external_semaphore_win32
15214VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
15215 VkDevice device,
15216 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
15217{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015218 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015219 mImpl->log("start vkImportSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015220 auto stream = mImpl->stream();
15221 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015222 auto resources = mImpl->resources();
15223 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015224 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015225 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015226 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015227 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015228 local_pImportSemaphoreWin32HandleInfo = nullptr;
15229 if (pImportSemaphoreWin32HandleInfo)
15230 {
15231 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
15232 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
15233 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015234 if (local_pImportSemaphoreWin32HandleInfo)
15235 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015236 transform_tohost_VkImportSemaphoreWin32HandleInfoKHR(mImpl->resources(), (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015237 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015238 countingStream->rewind();
15239 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015240 uint64_t cgen_var_1029;
15241 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1029, 1);
15242 countingStream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015243 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015244 }
15245 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15246 countingStream->rewind();
15247 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
15248 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
15249 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015250 uint64_t cgen_var_1030;
15251 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1030, 1);
15252 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015253 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015254 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR readParams");
15255 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015256 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
15257 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015258 countingStream->clearPool();
15259 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015260 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015261 mImpl->log("finish vkImportSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015262 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
15263}
15264
15265VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
15266 VkDevice device,
15267 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
15268 HANDLE* pHandle)
15269{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015270 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015271 mImpl->log("start vkGetSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015272 auto stream = mImpl->stream();
15273 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015274 auto resources = mImpl->resources();
15275 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015276 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015277 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015278 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015279 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015280 local_pGetWin32HandleInfo = nullptr;
15281 if (pGetWin32HandleInfo)
15282 {
15283 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
15284 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
15285 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015286 if (local_pGetWin32HandleInfo)
15287 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015288 transform_tohost_VkSemaphoreGetWin32HandleInfoKHR(mImpl->resources(), (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015289 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015290 countingStream->rewind();
15291 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015292 uint64_t cgen_var_1031;
15293 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1031, 1);
15294 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015295 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015296 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
15297 }
15298 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15299 countingStream->rewind();
15300 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
15301 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
15302 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015303 uint64_t cgen_var_1032;
15304 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1032, 1);
15305 stream->write((uint64_t*)&cgen_var_1032, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015306 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015307 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015308 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015309 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015310 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015311 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
15312 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015313 countingStream->clearPool();
15314 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015315 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015316 mImpl->log("finish vkGetSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015317 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
15318}
15319
15320#endif
15321#ifdef VK_KHR_external_semaphore_fd
15322VkResult VkEncoder::vkImportSemaphoreFdKHR(
15323 VkDevice device,
15324 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
15325{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015326 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015327 mImpl->log("start vkImportSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015328 auto stream = mImpl->stream();
15329 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015330 auto resources = mImpl->resources();
15331 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015332 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015333 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015334 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015335 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015336 local_pImportSemaphoreFdInfo = nullptr;
15337 if (pImportSemaphoreFdInfo)
15338 {
15339 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
15340 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
15341 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015342 if (local_pImportSemaphoreFdInfo)
15343 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015344 transform_tohost_VkImportSemaphoreFdInfoKHR(mImpl->resources(), (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015345 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015346 countingStream->rewind();
15347 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015348 uint64_t cgen_var_1033;
15349 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1033, 1);
15350 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015351 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015352 }
15353 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15354 countingStream->rewind();
15355 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
15356 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
15357 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015358 uint64_t cgen_var_1034;
15359 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1034, 1);
15360 stream->write((uint64_t*)&cgen_var_1034, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015361 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015362 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR readParams");
15363 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015364 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
15365 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015366 countingStream->clearPool();
15367 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015368 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015369 mImpl->log("finish vkImportSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015370 return vkImportSemaphoreFdKHR_VkResult_return;
15371}
15372
15373VkResult VkEncoder::vkGetSemaphoreFdKHR(
15374 VkDevice device,
15375 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
15376 int* pFd)
15377{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015378 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015379 mImpl->log("start vkGetSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015380 auto stream = mImpl->stream();
15381 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015382 auto resources = mImpl->resources();
15383 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015384 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015385 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015386 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015387 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015388 local_pGetFdInfo = nullptr;
15389 if (pGetFdInfo)
15390 {
15391 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
15392 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
15393 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015394 if (local_pGetFdInfo)
15395 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015396 transform_tohost_VkSemaphoreGetFdInfoKHR(mImpl->resources(), (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015397 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015398 countingStream->rewind();
15399 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015400 uint64_t cgen_var_1035;
15401 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1035, 1);
15402 countingStream->write((uint64_t*)&cgen_var_1035, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015403 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015404 countingStream->write((int*)pFd, sizeof(int));
15405 }
15406 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15407 countingStream->rewind();
15408 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
15409 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
15410 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015411 uint64_t cgen_var_1036;
15412 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1036, 1);
15413 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015414 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015415 stream->write((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015416 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015417 stream->read((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015418 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015419 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
15420 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015421 countingStream->clearPool();
15422 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015423 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015424 mImpl->log("finish vkGetSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015425 return vkGetSemaphoreFdKHR_VkResult_return;
15426}
15427
15428#endif
15429#ifdef VK_KHR_push_descriptor
15430void VkEncoder::vkCmdPushDescriptorSetKHR(
15431 VkCommandBuffer commandBuffer,
15432 VkPipelineBindPoint pipelineBindPoint,
15433 VkPipelineLayout layout,
15434 uint32_t set,
15435 uint32_t descriptorWriteCount,
15436 const VkWriteDescriptorSet* pDescriptorWrites)
15437{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015438 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015439 mImpl->log("start vkCmdPushDescriptorSetKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015440 auto stream = mImpl->stream();
15441 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015442 auto resources = mImpl->resources();
15443 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015444 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015445 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015446 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015447 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015448 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015449 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015450 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015451 local_commandBuffer = commandBuffer;
15452 local_pipelineBindPoint = pipelineBindPoint;
15453 local_layout = layout;
15454 local_set = set;
15455 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015456 local_pDescriptorWrites = nullptr;
15457 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015458 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015459 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015460 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15461 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015462 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
15463 }
15464 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015465 if (local_pDescriptorWrites)
15466 {
15467 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15468 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015469 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015470 }
15471 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015472 countingStream->rewind();
15473 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015474 uint64_t cgen_var_1037;
15475 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1037, 1);
15476 countingStream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015477 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015478 uint64_t cgen_var_1038;
15479 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1038, 1);
15480 countingStream->write((uint64_t*)&cgen_var_1038, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015481 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
15482 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
15483 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15484 {
15485 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015486 }
15487 }
15488 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15489 countingStream->rewind();
15490 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
15491 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
15492 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015493 uint64_t cgen_var_1039;
15494 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1039, 1);
15495 stream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015496 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015497 uint64_t cgen_var_1040;
15498 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1040, 1);
15499 stream->write((uint64_t*)&cgen_var_1040, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015500 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
15501 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015502 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15503 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015504 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015505 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015506 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR readParams");
15507 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015508 mImpl->log("finish vkCmdPushDescriptorSetKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015509}
15510
15511void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
15512 VkCommandBuffer commandBuffer,
15513 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15514 VkPipelineLayout layout,
15515 uint32_t set,
15516 const void* pData)
15517{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015518 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015519 mImpl->log("start vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015520 auto stream = mImpl->stream();
15521 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015522 auto resources = mImpl->resources();
15523 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015524 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015525 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015526 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015527 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015528 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015529 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015530 local_commandBuffer = commandBuffer;
15531 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
15532 local_layout = layout;
15533 local_set = set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015534 local_pData = nullptr;
15535 if (pData)
15536 {
15537 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
15538 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015539 countingStream->rewind();
15540 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015541 uint64_t cgen_var_1041;
15542 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1041, 1);
15543 countingStream->write((uint64_t*)&cgen_var_1041, 1 * 8);
15544 uint64_t cgen_var_1042;
15545 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1042, 1);
15546 countingStream->write((uint64_t*)&cgen_var_1042, 1 * 8);
15547 uint64_t cgen_var_1043;
15548 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1043, 1);
15549 countingStream->write((uint64_t*)&cgen_var_1043, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015550 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015551 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015552 uint64_t cgen_var_1044 = (uint64_t)(uintptr_t)local_pData;
15553 countingStream->putBe64(cgen_var_1044);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015554 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015555 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015556 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015557 }
15558 }
15559 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15560 countingStream->rewind();
15561 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
15562 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
15563 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015564 uint64_t cgen_var_1045;
15565 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1045, 1);
15566 stream->write((uint64_t*)&cgen_var_1045, 1 * 8);
15567 uint64_t cgen_var_1046;
15568 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1046, 1);
15569 stream->write((uint64_t*)&cgen_var_1046, 1 * 8);
15570 uint64_t cgen_var_1047;
15571 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1047, 1);
15572 stream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015573 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015574 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015575 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pData;
15576 stream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015577 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015578 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015579 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015580 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015581 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR readParams");
15582 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015583 mImpl->log("finish vkCmdPushDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015584}
15585
15586#endif
15587#ifdef VK_KHR_16bit_storage
15588#endif
15589#ifdef VK_KHR_incremental_present
15590#endif
15591#ifdef VK_KHR_descriptor_update_template
15592VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
15593 VkDevice device,
15594 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
15595 const VkAllocationCallbacks* pAllocator,
15596 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
15597{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015598 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015599 mImpl->log("start vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015600 auto stream = mImpl->stream();
15601 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015602 auto resources = mImpl->resources();
15603 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015604 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015605 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015606 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015607 VkAllocationCallbacks* local_pAllocator;
15608 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015609 local_pCreateInfo = nullptr;
15610 if (pCreateInfo)
15611 {
15612 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
15613 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
15614 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015615 local_pAllocator = nullptr;
15616 if (pAllocator)
15617 {
15618 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15619 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15620 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015621 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015622 if (local_pCreateInfo)
15623 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015624 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015625 }
15626 if (local_pAllocator)
15627 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015628 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015629 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015630 countingStream->rewind();
15631 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015632 uint64_t cgen_var_1049;
15633 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
15634 countingStream->write((uint64_t*)&cgen_var_1049, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015635 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015636 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015637 uint64_t cgen_var_1050 = (uint64_t)(uintptr_t)local_pAllocator;
15638 countingStream->putBe64(cgen_var_1050);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015639 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015640 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015641 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015642 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015643 uint64_t cgen_var_1051;
15644 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1051, 1);
15645 countingStream->write((uint64_t*)&cgen_var_1051, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015646 }
15647 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15648 countingStream->rewind();
15649 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
15650 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
15651 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015652 uint64_t cgen_var_1052;
15653 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
15654 stream->write((uint64_t*)&cgen_var_1052, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015655 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015656 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015657 uint64_t cgen_var_1053 = (uint64_t)(uintptr_t)local_pAllocator;
15658 stream->putBe64(cgen_var_1053);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015659 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015660 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015661 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015662 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015663 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015664 uint64_t cgen_var_1054;
15665 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1054, 1);
15666 stream->write((uint64_t*)&cgen_var_1054, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015667 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015668 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR readParams");
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080015669 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015670 uint64_t cgen_var_1055;
15671 stream->read((uint64_t*)&cgen_var_1055, 8);
15672 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1055, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080015673 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015674 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015675 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
15676 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015677 countingStream->clearPool();
15678 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015679 pool->freeAll();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070015680 mImpl->resources()->on_vkCreateDescriptorUpdateTemplateKHR(this, vkCreateDescriptorUpdateTemplateKHR_VkResult_return, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015681 mImpl->log("finish vkCreateDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015682 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
15683}
15684
15685void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
15686 VkDevice device,
15687 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15688 const VkAllocationCallbacks* pAllocator)
15689{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015690 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015691 mImpl->log("start vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015692 auto stream = mImpl->stream();
15693 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015694 auto resources = mImpl->resources();
15695 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015696 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015697 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015698 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015699 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015700 local_device = device;
15701 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015702 local_pAllocator = nullptr;
15703 if (pAllocator)
15704 {
15705 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15706 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15707 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015708 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015709 if (local_pAllocator)
15710 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015711 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015712 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015713 countingStream->rewind();
15714 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015715 uint64_t cgen_var_1056;
15716 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
15717 countingStream->write((uint64_t*)&cgen_var_1056, 1 * 8);
15718 uint64_t cgen_var_1057;
15719 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1057, 1);
15720 countingStream->write((uint64_t*)&cgen_var_1057, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015721 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015722 uint64_t cgen_var_1058 = (uint64_t)(uintptr_t)local_pAllocator;
15723 countingStream->putBe64(cgen_var_1058);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015724 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015725 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015726 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015727 }
15728 }
15729 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15730 countingStream->rewind();
15731 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
15732 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
15733 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015734 uint64_t cgen_var_1059;
15735 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1059, 1);
15736 stream->write((uint64_t*)&cgen_var_1059, 1 * 8);
15737 uint64_t cgen_var_1060;
15738 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1060, 1);
15739 stream->write((uint64_t*)&cgen_var_1060, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015740 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015741 uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
15742 stream->putBe64(cgen_var_1061);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015743 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015744 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015745 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015746 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015747 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR readParams");
15748 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR returnUnmarshal");
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080015749 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015750 mImpl->log("finish vkDestroyDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015751}
15752
15753void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
15754 VkDevice device,
15755 VkDescriptorSet descriptorSet,
15756 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15757 const void* pData)
15758{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015759 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015760 mImpl->log("start vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015761 auto stream = mImpl->stream();
15762 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015763 auto resources = mImpl->resources();
15764 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015765 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015766 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015767 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015768 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015769 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015770 local_device = device;
15771 local_descriptorSet = descriptorSet;
15772 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015773 local_pData = nullptr;
15774 if (pData)
15775 {
15776 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
15777 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015778 countingStream->rewind();
15779 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015780 uint64_t cgen_var_1062;
15781 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1062, 1);
15782 countingStream->write((uint64_t*)&cgen_var_1062, 1 * 8);
15783 uint64_t cgen_var_1063;
15784 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1063, 1);
15785 countingStream->write((uint64_t*)&cgen_var_1063, 1 * 8);
15786 uint64_t cgen_var_1064;
15787 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1064, 1);
15788 countingStream->write((uint64_t*)&cgen_var_1064, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015789 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015790 uint64_t cgen_var_1065 = (uint64_t)(uintptr_t)local_pData;
15791 countingStream->putBe64(cgen_var_1065);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015792 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015793 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015794 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015795 }
15796 }
15797 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15798 countingStream->rewind();
15799 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
15800 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
15801 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015802 uint64_t cgen_var_1066;
15803 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1066, 1);
15804 stream->write((uint64_t*)&cgen_var_1066, 1 * 8);
15805 uint64_t cgen_var_1067;
15806 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1067, 1);
15807 stream->write((uint64_t*)&cgen_var_1067, 1 * 8);
15808 uint64_t cgen_var_1068;
15809 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1068, 1);
15810 stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015811 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015812 uint64_t cgen_var_1069 = (uint64_t)(uintptr_t)local_pData;
15813 stream->putBe64(cgen_var_1069);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015814 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015815 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015816 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015817 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015818 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR readParams");
15819 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015820 mImpl->log("finish vkUpdateDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015821}
15822
15823#endif
15824#ifdef VK_KHR_create_renderpass2
15825VkResult VkEncoder::vkCreateRenderPass2KHR(
15826 VkDevice device,
15827 const VkRenderPassCreateInfo2KHR* pCreateInfo,
15828 const VkAllocationCallbacks* pAllocator,
15829 VkRenderPass* pRenderPass)
15830{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015831 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015832 mImpl->log("start vkCreateRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015833 auto stream = mImpl->stream();
15834 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015835 auto resources = mImpl->resources();
15836 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015837 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015838 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015839 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015840 VkAllocationCallbacks* local_pAllocator;
15841 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015842 local_pCreateInfo = nullptr;
15843 if (pCreateInfo)
15844 {
15845 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
15846 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
15847 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015848 local_pAllocator = nullptr;
15849 if (pAllocator)
15850 {
15851 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15852 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15853 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015854 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015855 if (local_pCreateInfo)
15856 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015857 transform_tohost_VkRenderPassCreateInfo2KHR(mImpl->resources(), (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015858 }
15859 if (local_pAllocator)
15860 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015861 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015862 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015863 countingStream->rewind();
15864 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015865 uint64_t cgen_var_1070;
15866 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1070, 1);
15867 countingStream->write((uint64_t*)&cgen_var_1070, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015868 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015869 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015870 uint64_t cgen_var_1071 = (uint64_t)(uintptr_t)local_pAllocator;
15871 countingStream->putBe64(cgen_var_1071);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015872 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015873 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015874 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015875 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015876 uint64_t cgen_var_1072;
15877 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1072, 1);
15878 countingStream->write((uint64_t*)&cgen_var_1072, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015879 }
15880 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15881 countingStream->rewind();
15882 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
15883 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
15884 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015885 uint64_t cgen_var_1073;
15886 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
15887 stream->write((uint64_t*)&cgen_var_1073, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015888 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015889 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015890 uint64_t cgen_var_1074 = (uint64_t)(uintptr_t)local_pAllocator;
15891 stream->putBe64(cgen_var_1074);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015892 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015893 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015894 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015895 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015896 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015897 uint64_t cgen_var_1075;
15898 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1075, 1);
15899 stream->write((uint64_t*)&cgen_var_1075, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015900 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015901 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015902 uint64_t cgen_var_1076;
15903 stream->read((uint64_t*)&cgen_var_1076, 8);
15904 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1076, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015905 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015906 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
15907 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015908 countingStream->clearPool();
15909 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015910 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015911 mImpl->log("finish vkCreateRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015912 return vkCreateRenderPass2KHR_VkResult_return;
15913}
15914
15915void VkEncoder::vkCmdBeginRenderPass2KHR(
15916 VkCommandBuffer commandBuffer,
15917 const VkRenderPassBeginInfo* pRenderPassBegin,
15918 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
15919{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015920 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015921 mImpl->log("start vkCmdBeginRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015922 auto stream = mImpl->stream();
15923 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015924 auto resources = mImpl->resources();
15925 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015926 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015927 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015928 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015929 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
15930 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015931 local_pRenderPassBegin = nullptr;
15932 if (pRenderPassBegin)
15933 {
15934 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
15935 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15936 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015937 local_pSubpassBeginInfo = nullptr;
15938 if (pSubpassBeginInfo)
15939 {
15940 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15941 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15942 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015943 if (local_pRenderPassBegin)
15944 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015945 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015946 }
15947 if (local_pSubpassBeginInfo)
15948 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015949 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015950 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015951 countingStream->rewind();
15952 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015953 uint64_t cgen_var_1077;
15954 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1077, 1);
15955 countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015956 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15957 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015958 }
15959 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15960 countingStream->rewind();
15961 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
15962 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
15963 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080015964 uint64_t cgen_var_1078;
15965 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1078, 1);
15966 stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015967 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15968 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015969 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR readParams");
15970 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015971 mImpl->log("finish vkCmdBeginRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015972}
15973
15974void VkEncoder::vkCmdNextSubpass2KHR(
15975 VkCommandBuffer commandBuffer,
15976 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
15977 const VkSubpassEndInfoKHR* pSubpassEndInfo)
15978{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015979 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015980 mImpl->log("start vkCmdNextSubpass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015981 auto stream = mImpl->stream();
15982 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015983 auto resources = mImpl->resources();
15984 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015985 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015986 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015987 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015988 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
15989 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015990 local_pSubpassBeginInfo = nullptr;
15991 if (pSubpassBeginInfo)
15992 {
15993 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15994 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15995 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015996 local_pSubpassEndInfo = nullptr;
15997 if (pSubpassEndInfo)
15998 {
15999 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
16000 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16001 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016002 if (local_pSubpassBeginInfo)
16003 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016004 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016005 }
16006 if (local_pSubpassEndInfo)
16007 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016008 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016009 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016010 countingStream->rewind();
16011 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016012 uint64_t cgen_var_1079;
16013 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1079, 1);
16014 countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016015 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
16016 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016017 }
16018 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16019 countingStream->rewind();
16020 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
16021 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
16022 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016023 uint64_t cgen_var_1080;
16024 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1080, 1);
16025 stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016026 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
16027 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016028 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR readParams");
16029 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016030 mImpl->log("finish vkCmdNextSubpass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016031}
16032
16033void VkEncoder::vkCmdEndRenderPass2KHR(
16034 VkCommandBuffer commandBuffer,
16035 const VkSubpassEndInfoKHR* pSubpassEndInfo)
16036{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016037 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016038 mImpl->log("start vkCmdEndRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016039 auto stream = mImpl->stream();
16040 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016041 auto resources = mImpl->resources();
16042 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016043 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016044 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016045 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016046 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016047 local_pSubpassEndInfo = nullptr;
16048 if (pSubpassEndInfo)
16049 {
16050 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
16051 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16052 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016053 if (local_pSubpassEndInfo)
16054 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016055 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016056 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016057 countingStream->rewind();
16058 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016059 uint64_t cgen_var_1081;
16060 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1081, 1);
16061 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016062 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016063 }
16064 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16065 countingStream->rewind();
16066 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
16067 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
16068 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016069 uint64_t cgen_var_1082;
16070 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1082, 1);
16071 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016072 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016073 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR readParams");
16074 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016075 mImpl->log("finish vkCmdEndRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016076}
16077
16078#endif
16079#ifdef VK_KHR_shared_presentable_image
16080VkResult VkEncoder::vkGetSwapchainStatusKHR(
16081 VkDevice device,
16082 VkSwapchainKHR swapchain)
16083{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016084 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016085 mImpl->log("start vkGetSwapchainStatusKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016086 auto stream = mImpl->stream();
16087 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016088 auto resources = mImpl->resources();
16089 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016090 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016091 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016092 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016093 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016094 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016095 countingStream->rewind();
16096 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016097 uint64_t cgen_var_1083;
16098 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
16099 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
16100 uint64_t cgen_var_1084;
16101 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1084, 1);
16102 countingStream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016103 }
16104 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16105 countingStream->rewind();
16106 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
16107 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
16108 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016109 uint64_t cgen_var_1085;
16110 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
16111 stream->write((uint64_t*)&cgen_var_1085, 1 * 8);
16112 uint64_t cgen_var_1086;
16113 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1086, 1);
16114 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016115 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR readParams");
16116 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016117 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
16118 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016119 countingStream->clearPool();
16120 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016121 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016122 mImpl->log("finish vkGetSwapchainStatusKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016123 return vkGetSwapchainStatusKHR_VkResult_return;
16124}
16125
16126#endif
16127#ifdef VK_KHR_external_fence_capabilities
16128void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
16129 VkPhysicalDevice physicalDevice,
16130 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
16131 VkExternalFenceProperties* pExternalFenceProperties)
16132{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016133 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016134 mImpl->log("start vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016135 auto stream = mImpl->stream();
16136 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016137 auto resources = mImpl->resources();
16138 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016139 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016140 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016141 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016142 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016143 local_pExternalFenceInfo = nullptr;
16144 if (pExternalFenceInfo)
16145 {
16146 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
16147 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
16148 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016149 if (local_pExternalFenceInfo)
16150 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016151 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016152 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016153 countingStream->rewind();
16154 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016155 uint64_t cgen_var_1087;
16156 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
16157 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016158 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016159 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
16160 }
16161 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16162 countingStream->rewind();
16163 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
16164 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
16165 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016166 uint64_t cgen_var_1088;
16167 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
16168 stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016169 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016170 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016171 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016172 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016173 if (pExternalFenceProperties)
16174 {
16175 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
16176 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016177 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016178 mImpl->log("finish vkGetPhysicalDeviceExternalFencePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016179}
16180
16181#endif
16182#ifdef VK_KHR_external_fence
16183#endif
16184#ifdef VK_KHR_external_fence_win32
16185VkResult VkEncoder::vkImportFenceWin32HandleKHR(
16186 VkDevice device,
16187 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
16188{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016189 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016190 mImpl->log("start vkImportFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016191 auto stream = mImpl->stream();
16192 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016193 auto resources = mImpl->resources();
16194 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016195 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016196 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016197 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016198 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016199 local_pImportFenceWin32HandleInfo = nullptr;
16200 if (pImportFenceWin32HandleInfo)
16201 {
16202 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
16203 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
16204 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016205 if (local_pImportFenceWin32HandleInfo)
16206 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016207 transform_tohost_VkImportFenceWin32HandleInfoKHR(mImpl->resources(), (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016208 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016209 countingStream->rewind();
16210 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016211 uint64_t cgen_var_1089;
16212 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1089, 1);
16213 countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016214 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016215 }
16216 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16217 countingStream->rewind();
16218 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
16219 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
16220 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016221 uint64_t cgen_var_1090;
16222 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1090, 1);
16223 stream->write((uint64_t*)&cgen_var_1090, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016224 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016225 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR readParams");
16226 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016227 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
16228 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016229 countingStream->clearPool();
16230 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016231 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016232 mImpl->log("finish vkImportFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016233 return vkImportFenceWin32HandleKHR_VkResult_return;
16234}
16235
16236VkResult VkEncoder::vkGetFenceWin32HandleKHR(
16237 VkDevice device,
16238 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
16239 HANDLE* pHandle)
16240{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016241 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016242 mImpl->log("start vkGetFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016243 auto stream = mImpl->stream();
16244 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016245 auto resources = mImpl->resources();
16246 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016247 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016248 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016249 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016250 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016251 local_pGetWin32HandleInfo = nullptr;
16252 if (pGetWin32HandleInfo)
16253 {
16254 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
16255 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
16256 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016257 if (local_pGetWin32HandleInfo)
16258 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016259 transform_tohost_VkFenceGetWin32HandleInfoKHR(mImpl->resources(), (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016260 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016261 countingStream->rewind();
16262 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016263 uint64_t cgen_var_1091;
16264 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1091, 1);
16265 countingStream->write((uint64_t*)&cgen_var_1091, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016266 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016267 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
16268 }
16269 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16270 countingStream->rewind();
16271 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
16272 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
16273 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016274 uint64_t cgen_var_1092;
16275 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1092, 1);
16276 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016277 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016278 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016279 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016280 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016281 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016282 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
16283 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016284 countingStream->clearPool();
16285 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016286 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016287 mImpl->log("finish vkGetFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016288 return vkGetFenceWin32HandleKHR_VkResult_return;
16289}
16290
16291#endif
16292#ifdef VK_KHR_external_fence_fd
16293VkResult VkEncoder::vkImportFenceFdKHR(
16294 VkDevice device,
16295 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
16296{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016297 AEMU_SCOPED_TRACE("vkImportFenceFdKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016298 mImpl->log("start vkImportFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016299 auto stream = mImpl->stream();
16300 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016301 auto resources = mImpl->resources();
16302 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016303 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016304 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016305 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016306 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016307 local_pImportFenceFdInfo = nullptr;
16308 if (pImportFenceFdInfo)
16309 {
16310 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
16311 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
16312 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016313 if (local_pImportFenceFdInfo)
16314 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016315 transform_tohost_VkImportFenceFdInfoKHR(mImpl->resources(), (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016316 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016317 countingStream->rewind();
16318 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016319 uint64_t cgen_var_1093;
16320 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1093, 1);
16321 countingStream->write((uint64_t*)&cgen_var_1093, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016322 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016323 }
16324 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16325 countingStream->rewind();
16326 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
16327 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
16328 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016329 uint64_t cgen_var_1094;
16330 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1094, 1);
16331 stream->write((uint64_t*)&cgen_var_1094, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016332 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016333 AEMU_SCOPED_TRACE("vkImportFenceFdKHR readParams");
16334 AEMU_SCOPED_TRACE("vkImportFenceFdKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016335 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
16336 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016337 countingStream->clearPool();
16338 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016339 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016340 mImpl->log("finish vkImportFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016341 return vkImportFenceFdKHR_VkResult_return;
16342}
16343
16344VkResult VkEncoder::vkGetFenceFdKHR(
16345 VkDevice device,
16346 const VkFenceGetFdInfoKHR* pGetFdInfo,
16347 int* pFd)
16348{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016349 AEMU_SCOPED_TRACE("vkGetFenceFdKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016350 mImpl->log("start vkGetFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016351 auto stream = mImpl->stream();
16352 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016353 auto resources = mImpl->resources();
16354 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016355 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016356 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016357 VkFenceGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016358 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016359 local_pGetFdInfo = nullptr;
16360 if (pGetFdInfo)
16361 {
16362 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
16363 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
16364 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016365 if (local_pGetFdInfo)
16366 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016367 transform_tohost_VkFenceGetFdInfoKHR(mImpl->resources(), (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016368 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016369 countingStream->rewind();
16370 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016371 uint64_t cgen_var_1095;
16372 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1095, 1);
16373 countingStream->write((uint64_t*)&cgen_var_1095, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016374 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016375 countingStream->write((int*)pFd, sizeof(int));
16376 }
16377 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16378 countingStream->rewind();
16379 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
16380 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
16381 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016382 uint64_t cgen_var_1096;
16383 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1096, 1);
16384 stream->write((uint64_t*)&cgen_var_1096, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016385 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016386 stream->write((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016387 AEMU_SCOPED_TRACE("vkGetFenceFdKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016388 stream->read((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016389 AEMU_SCOPED_TRACE("vkGetFenceFdKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016390 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
16391 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016392 countingStream->clearPool();
16393 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016394 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016395 mImpl->log("finish vkGetFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016396 return vkGetFenceFdKHR_VkResult_return;
16397}
16398
16399#endif
16400#ifdef VK_KHR_maintenance2
16401#endif
16402#ifdef VK_KHR_get_surface_capabilities2
16403VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
16404 VkPhysicalDevice physicalDevice,
16405 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
16406 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
16407{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016408 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016409 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016410 auto stream = mImpl->stream();
16411 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016412 auto resources = mImpl->resources();
16413 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016414 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016415 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016416 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016417 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016418 local_pSurfaceInfo = nullptr;
16419 if (pSurfaceInfo)
16420 {
16421 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
16422 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16423 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016424 if (local_pSurfaceInfo)
16425 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016426 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016427 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016428 countingStream->rewind();
16429 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016430 uint64_t cgen_var_1097;
16431 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
16432 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016433 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016434 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
16435 }
16436 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16437 countingStream->rewind();
16438 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
16439 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
16440 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016441 uint64_t cgen_var_1098;
16442 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1098, 1);
16443 stream->write((uint64_t*)&cgen_var_1098, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016444 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016445 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016446 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016447 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016448 if (pSurfaceCapabilities)
16449 {
16450 transform_fromhost_VkSurfaceCapabilities2KHR(mImpl->resources(), (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
16451 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016452 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016453 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
16454 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016455 countingStream->clearPool();
16456 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016457 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016458 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016459 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
16460}
16461
16462VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
16463 VkPhysicalDevice physicalDevice,
16464 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
16465 uint32_t* pSurfaceFormatCount,
16466 VkSurfaceFormat2KHR* pSurfaceFormats)
16467{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016468 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016469 mImpl->log("start vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016470 auto stream = mImpl->stream();
16471 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016472 auto resources = mImpl->resources();
16473 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016474 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016475 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016476 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016477 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016478 local_pSurfaceInfo = nullptr;
16479 if (pSurfaceInfo)
16480 {
16481 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
16482 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16483 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016484 if (local_pSurfaceInfo)
16485 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016486 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016487 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016488 countingStream->rewind();
16489 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016490 uint64_t cgen_var_1099;
16491 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1099, 1);
16492 countingStream->write((uint64_t*)&cgen_var_1099, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016493 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016494 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016495 uint64_t cgen_var_1100 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
16496 countingStream->putBe64(cgen_var_1100);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016497 if (pSurfaceFormatCount)
16498 {
16499 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
16500 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016501 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016502 uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pSurfaceFormats;
16503 countingStream->putBe64(cgen_var_1101);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016504 if (pSurfaceFormats)
16505 {
16506 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16507 {
16508 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16509 }
16510 }
16511 }
16512 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16513 countingStream->rewind();
16514 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
16515 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
16516 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016517 uint64_t cgen_var_1102;
16518 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1102, 1);
16519 stream->write((uint64_t*)&cgen_var_1102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016520 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016521 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016522 uint64_t cgen_var_1103 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
16523 stream->putBe64(cgen_var_1103);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016524 if (pSurfaceFormatCount)
16525 {
16526 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
16527 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016528 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016529 uint64_t cgen_var_1104 = (uint64_t)(uintptr_t)pSurfaceFormats;
16530 stream->putBe64(cgen_var_1104);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016531 if (pSurfaceFormats)
16532 {
16533 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16534 {
16535 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16536 }
16537 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016538 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016539 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016540 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016541 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016542 if (pSurfaceFormatCount)
16543 {
16544 if (!(check_pSurfaceFormatCount))
16545 {
16546 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
16547 }
16548 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
16549 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016550 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016551 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016552 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016553 if (pSurfaceFormats)
16554 {
16555 if (!(check_pSurfaceFormats))
16556 {
16557 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
16558 }
16559 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16560 {
16561 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16562 }
16563 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016564 if (pSurfaceFormats)
16565 {
16566 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16567 {
16568 transform_fromhost_VkSurfaceFormat2KHR(mImpl->resources(), (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16569 }
16570 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016571 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016572 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
16573 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016574 countingStream->clearPool();
16575 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016576 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016577 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormats2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016578 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
16579}
16580
16581#endif
16582#ifdef VK_KHR_variable_pointers
16583#endif
16584#ifdef VK_KHR_get_display_properties2
16585VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
16586 VkPhysicalDevice physicalDevice,
16587 uint32_t* pPropertyCount,
16588 VkDisplayProperties2KHR* pProperties)
16589{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016590 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016591 mImpl->log("start vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016592 auto stream = mImpl->stream();
16593 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016594 auto resources = mImpl->resources();
16595 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016596 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016597 VkPhysicalDevice local_physicalDevice;
16598 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016599 countingStream->rewind();
16600 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016601 uint64_t cgen_var_1107;
16602 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1107, 1);
16603 countingStream->write((uint64_t*)&cgen_var_1107, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016604 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016605 uint64_t cgen_var_1108 = (uint64_t)(uintptr_t)pPropertyCount;
16606 countingStream->putBe64(cgen_var_1108);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016607 if (pPropertyCount)
16608 {
16609 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16610 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016611 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016612 uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pProperties;
16613 countingStream->putBe64(cgen_var_1109);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016614 if (pProperties)
16615 {
16616 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16617 {
16618 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
16619 }
16620 }
16621 }
16622 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16623 countingStream->rewind();
16624 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
16625 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
16626 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016627 uint64_t cgen_var_1110;
16628 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1110, 1);
16629 stream->write((uint64_t*)&cgen_var_1110, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016630 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016631 uint64_t cgen_var_1111 = (uint64_t)(uintptr_t)pPropertyCount;
16632 stream->putBe64(cgen_var_1111);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016633 if (pPropertyCount)
16634 {
16635 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16636 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016637 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016638 uint64_t cgen_var_1112 = (uint64_t)(uintptr_t)pProperties;
16639 stream->putBe64(cgen_var_1112);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016640 if (pProperties)
16641 {
16642 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16643 {
16644 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
16645 }
16646 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016647 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016648 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016649 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016650 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016651 if (pPropertyCount)
16652 {
16653 if (!(check_pPropertyCount))
16654 {
16655 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16656 }
16657 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16658 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016659 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016660 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016661 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016662 if (pProperties)
16663 {
16664 if (!(check_pProperties))
16665 {
16666 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16667 }
16668 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16669 {
16670 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
16671 }
16672 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016673 if (pProperties)
16674 {
16675 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16676 {
16677 transform_fromhost_VkDisplayProperties2KHR(mImpl->resources(), (VkDisplayProperties2KHR*)(pProperties + i));
16678 }
16679 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016680 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016681 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
16682 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016683 countingStream->clearPool();
16684 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016685 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016686 mImpl->log("finish vkGetPhysicalDeviceDisplayProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016687 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
16688}
16689
16690VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
16691 VkPhysicalDevice physicalDevice,
16692 uint32_t* pPropertyCount,
16693 VkDisplayPlaneProperties2KHR* pProperties)
16694{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016695 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016696 mImpl->log("start vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016697 auto stream = mImpl->stream();
16698 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016699 auto resources = mImpl->resources();
16700 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016701 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016702 VkPhysicalDevice local_physicalDevice;
16703 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016704 countingStream->rewind();
16705 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016706 uint64_t cgen_var_1115;
16707 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1115, 1);
16708 countingStream->write((uint64_t*)&cgen_var_1115, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016709 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016710 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pPropertyCount;
16711 countingStream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016712 if (pPropertyCount)
16713 {
16714 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16715 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016716 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016717 uint64_t cgen_var_1117 = (uint64_t)(uintptr_t)pProperties;
16718 countingStream->putBe64(cgen_var_1117);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016719 if (pProperties)
16720 {
16721 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16722 {
16723 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16724 }
16725 }
16726 }
16727 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16728 countingStream->rewind();
16729 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
16730 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
16731 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016732 uint64_t cgen_var_1118;
16733 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1118, 1);
16734 stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016735 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016736 uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
16737 stream->putBe64(cgen_var_1119);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016738 if (pPropertyCount)
16739 {
16740 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16741 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016742 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016743 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
16744 stream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016745 if (pProperties)
16746 {
16747 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16748 {
16749 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16750 }
16751 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016752 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016753 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016754 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016755 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016756 if (pPropertyCount)
16757 {
16758 if (!(check_pPropertyCount))
16759 {
16760 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16761 }
16762 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16763 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016764 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016765 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016766 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016767 if (pProperties)
16768 {
16769 if (!(check_pProperties))
16770 {
16771 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16772 }
16773 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16774 {
16775 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16776 }
16777 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016778 if (pProperties)
16779 {
16780 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16781 {
16782 transform_fromhost_VkDisplayPlaneProperties2KHR(mImpl->resources(), (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16783 }
16784 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016785 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016786 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
16787 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016788 countingStream->clearPool();
16789 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016790 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016791 mImpl->log("finish vkGetPhysicalDeviceDisplayPlaneProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016792 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
16793}
16794
16795VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
16796 VkPhysicalDevice physicalDevice,
16797 VkDisplayKHR display,
16798 uint32_t* pPropertyCount,
16799 VkDisplayModeProperties2KHR* pProperties)
16800{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016801 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016802 mImpl->log("start vkGetDisplayModeProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016803 auto stream = mImpl->stream();
16804 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016805 auto resources = mImpl->resources();
16806 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016807 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016808 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016809 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016810 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016811 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016812 countingStream->rewind();
16813 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016814 uint64_t cgen_var_1123;
16815 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
16816 countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
16817 uint64_t cgen_var_1124;
16818 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1124, 1);
16819 countingStream->write((uint64_t*)&cgen_var_1124, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016820 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016821 uint64_t cgen_var_1125 = (uint64_t)(uintptr_t)pPropertyCount;
16822 countingStream->putBe64(cgen_var_1125);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016823 if (pPropertyCount)
16824 {
16825 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16826 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016827 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016828 uint64_t cgen_var_1126 = (uint64_t)(uintptr_t)pProperties;
16829 countingStream->putBe64(cgen_var_1126);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016830 if (pProperties)
16831 {
16832 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16833 {
16834 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16835 }
16836 }
16837 }
16838 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16839 countingStream->rewind();
16840 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
16841 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
16842 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016843 uint64_t cgen_var_1127;
16844 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1127, 1);
16845 stream->write((uint64_t*)&cgen_var_1127, 1 * 8);
16846 uint64_t cgen_var_1128;
16847 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1128, 1);
16848 stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016849 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016850 uint64_t cgen_var_1129 = (uint64_t)(uintptr_t)pPropertyCount;
16851 stream->putBe64(cgen_var_1129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016852 if (pPropertyCount)
16853 {
16854 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16855 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016856 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016857 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pProperties;
16858 stream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016859 if (pProperties)
16860 {
16861 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16862 {
16863 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16864 }
16865 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016866 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016867 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016868 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016869 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016870 if (pPropertyCount)
16871 {
16872 if (!(check_pPropertyCount))
16873 {
16874 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16875 }
16876 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16877 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016878 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016879 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016880 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016881 if (pProperties)
16882 {
16883 if (!(check_pProperties))
16884 {
16885 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16886 }
16887 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16888 {
16889 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16890 }
16891 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016892 if (pProperties)
16893 {
16894 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16895 {
16896 transform_fromhost_VkDisplayModeProperties2KHR(mImpl->resources(), (VkDisplayModeProperties2KHR*)(pProperties + i));
16897 }
16898 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016899 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016900 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
16901 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016902 countingStream->clearPool();
16903 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016904 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016905 mImpl->log("finish vkGetDisplayModeProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016906 return vkGetDisplayModeProperties2KHR_VkResult_return;
16907}
16908
16909VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
16910 VkPhysicalDevice physicalDevice,
16911 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
16912 VkDisplayPlaneCapabilities2KHR* pCapabilities)
16913{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016914 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016915 mImpl->log("start vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016916 auto stream = mImpl->stream();
16917 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016918 auto resources = mImpl->resources();
16919 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016920 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016921 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016922 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016923 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016924 local_pDisplayPlaneInfo = nullptr;
16925 if (pDisplayPlaneInfo)
16926 {
16927 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
16928 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
16929 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016930 if (local_pDisplayPlaneInfo)
16931 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016932 transform_tohost_VkDisplayPlaneInfo2KHR(mImpl->resources(), (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016933 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016934 countingStream->rewind();
16935 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016936 uint64_t cgen_var_1133;
16937 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1133, 1);
16938 countingStream->write((uint64_t*)&cgen_var_1133, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016939 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016940 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16941 }
16942 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16943 countingStream->rewind();
16944 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
16945 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
16946 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080016947 uint64_t cgen_var_1134;
16948 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1134, 1);
16949 stream->write((uint64_t*)&cgen_var_1134, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016950 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016951 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016952 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016953 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016954 if (pCapabilities)
16955 {
16956 transform_fromhost_VkDisplayPlaneCapabilities2KHR(mImpl->resources(), (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16957 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016958 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016959 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
16960 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016961 countingStream->clearPool();
16962 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016963 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016964 mImpl->log("finish vkGetDisplayPlaneCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016965 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
16966}
16967
16968#endif
16969#ifdef VK_KHR_dedicated_allocation
16970#endif
16971#ifdef VK_KHR_storage_buffer_storage_class
16972#endif
16973#ifdef VK_KHR_relaxed_block_layout
16974#endif
16975#ifdef VK_KHR_get_memory_requirements2
16976void VkEncoder::vkGetImageMemoryRequirements2KHR(
16977 VkDevice device,
16978 const VkImageMemoryRequirementsInfo2* pInfo,
16979 VkMemoryRequirements2* pMemoryRequirements)
16980{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016981 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016982 mImpl->log("start vkGetImageMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016983 auto stream = mImpl->stream();
16984 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016985 auto resources = mImpl->resources();
16986 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016987 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016988 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016989 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016990 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016991 local_pInfo = nullptr;
16992 if (pInfo)
16993 {
16994 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
16995 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
16996 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016997 if (local_pInfo)
16998 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016999 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017000 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017001 countingStream->rewind();
17002 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017003 uint64_t cgen_var_1135;
17004 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1135, 1);
17005 countingStream->write((uint64_t*)&cgen_var_1135, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017006 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017007 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
17008 }
17009 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17010 countingStream->rewind();
17011 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
17012 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
17013 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017014 uint64_t cgen_var_1136;
17015 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1136, 1);
17016 stream->write((uint64_t*)&cgen_var_1136, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017017 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017018 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017019 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017020 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017021 if (pMemoryRequirements)
17022 {
17023 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
17024 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017025 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017026 mImpl->log("finish vkGetImageMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017027}
17028
17029void VkEncoder::vkGetBufferMemoryRequirements2KHR(
17030 VkDevice device,
17031 const VkBufferMemoryRequirementsInfo2* pInfo,
17032 VkMemoryRequirements2* pMemoryRequirements)
17033{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017034 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017035 mImpl->log("start vkGetBufferMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017036 auto stream = mImpl->stream();
17037 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017038 auto resources = mImpl->resources();
17039 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017040 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017041 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017042 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017043 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017044 local_pInfo = nullptr;
17045 if (pInfo)
17046 {
17047 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
17048 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
17049 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017050 if (local_pInfo)
17051 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017052 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017053 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017054 countingStream->rewind();
17055 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017056 uint64_t cgen_var_1137;
17057 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
17058 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017059 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017060 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
17061 }
17062 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17063 countingStream->rewind();
17064 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
17065 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
17066 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017067 uint64_t cgen_var_1138;
17068 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1138, 1);
17069 stream->write((uint64_t*)&cgen_var_1138, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017070 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017071 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017072 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017073 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017074 if (pMemoryRequirements)
17075 {
17076 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
17077 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017078 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017079 mImpl->log("finish vkGetBufferMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017080}
17081
17082void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
17083 VkDevice device,
17084 const VkImageSparseMemoryRequirementsInfo2* pInfo,
17085 uint32_t* pSparseMemoryRequirementCount,
17086 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
17087{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017088 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017089 mImpl->log("start vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017090 auto stream = mImpl->stream();
17091 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017092 auto resources = mImpl->resources();
17093 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017094 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017095 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017096 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017097 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017098 local_pInfo = nullptr;
17099 if (pInfo)
17100 {
17101 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
17102 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
17103 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017104 if (local_pInfo)
17105 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017106 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017107 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017108 countingStream->rewind();
17109 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017110 uint64_t cgen_var_1139;
17111 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1139, 1);
17112 countingStream->write((uint64_t*)&cgen_var_1139, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017113 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017114 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017115 uint64_t cgen_var_1140 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
17116 countingStream->putBe64(cgen_var_1140);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017117 if (pSparseMemoryRequirementCount)
17118 {
17119 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
17120 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017121 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017122 uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
17123 countingStream->putBe64(cgen_var_1141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017124 if (pSparseMemoryRequirements)
17125 {
17126 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17127 {
17128 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17129 }
17130 }
17131 }
17132 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17133 countingStream->rewind();
17134 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
17135 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
17136 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017137 uint64_t cgen_var_1142;
17138 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1142, 1);
17139 stream->write((uint64_t*)&cgen_var_1142, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017140 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017141 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017142 uint64_t cgen_var_1143 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
17143 stream->putBe64(cgen_var_1143);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017144 if (pSparseMemoryRequirementCount)
17145 {
17146 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
17147 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017148 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017149 uint64_t cgen_var_1144 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
17150 stream->putBe64(cgen_var_1144);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017151 if (pSparseMemoryRequirements)
17152 {
17153 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17154 {
17155 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17156 }
17157 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017158 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017159 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017160 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017161 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017162 if (pSparseMemoryRequirementCount)
17163 {
17164 if (!(check_pSparseMemoryRequirementCount))
17165 {
17166 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
17167 }
17168 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
17169 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017170 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017171 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017172 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017173 if (pSparseMemoryRequirements)
17174 {
17175 if (!(check_pSparseMemoryRequirements))
17176 {
17177 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
17178 }
17179 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17180 {
17181 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17182 }
17183 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080017184 if (pSparseMemoryRequirements)
17185 {
17186 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17187 {
17188 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17189 }
17190 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017191 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017192 mImpl->log("finish vkGetImageSparseMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017193}
17194
17195#endif
17196#ifdef VK_KHR_image_format_list
17197#endif
17198#ifdef VK_KHR_sampler_ycbcr_conversion
17199VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
17200 VkDevice device,
17201 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
17202 const VkAllocationCallbacks* pAllocator,
17203 VkSamplerYcbcrConversion* pYcbcrConversion)
17204{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017205 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017206 mImpl->log("start vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017207 auto stream = mImpl->stream();
17208 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017209 auto resources = mImpl->resources();
17210 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017211 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017212 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017213 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017214 VkAllocationCallbacks* local_pAllocator;
17215 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017216 local_pCreateInfo = nullptr;
17217 if (pCreateInfo)
17218 {
17219 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
17220 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
17221 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017222 local_pAllocator = nullptr;
17223 if (pAllocator)
17224 {
17225 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17226 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17227 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017228 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017229 if (local_pCreateInfo)
17230 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017231 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017232 }
17233 if (local_pAllocator)
17234 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017235 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017236 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017237 countingStream->rewind();
17238 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017239 uint64_t cgen_var_1147;
17240 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
17241 countingStream->write((uint64_t*)&cgen_var_1147, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017242 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017243 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017244 uint64_t cgen_var_1148 = (uint64_t)(uintptr_t)local_pAllocator;
17245 countingStream->putBe64(cgen_var_1148);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017246 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017247 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017248 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017249 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017250 uint64_t cgen_var_1149;
17251 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1149, 1);
17252 countingStream->write((uint64_t*)&cgen_var_1149, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017253 }
17254 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17255 countingStream->rewind();
17256 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
17257 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
17258 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017259 uint64_t cgen_var_1150;
17260 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
17261 stream->write((uint64_t*)&cgen_var_1150, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017262 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017263 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017264 uint64_t cgen_var_1151 = (uint64_t)(uintptr_t)local_pAllocator;
17265 stream->putBe64(cgen_var_1151);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017266 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017267 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017268 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017269 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017270 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017271 uint64_t cgen_var_1152;
17272 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1152, 1);
17273 stream->write((uint64_t*)&cgen_var_1152, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017274 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017275 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR readParams");
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080017276 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017277 uint64_t cgen_var_1153;
17278 stream->read((uint64_t*)&cgen_var_1153, 8);
17279 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1153, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080017280 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017281 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017282 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
17283 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017284 countingStream->clearPool();
17285 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017286 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017287 mImpl->log("finish vkCreateSamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017288 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
17289}
17290
17291void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
17292 VkDevice device,
17293 VkSamplerYcbcrConversion ycbcrConversion,
17294 const VkAllocationCallbacks* pAllocator)
17295{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017296 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017297 mImpl->log("start vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017298 auto stream = mImpl->stream();
17299 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017300 auto resources = mImpl->resources();
17301 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017302 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017303 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017304 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017305 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017306 local_device = device;
17307 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017308 local_pAllocator = nullptr;
17309 if (pAllocator)
17310 {
17311 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17312 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17313 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017314 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017315 if (local_pAllocator)
17316 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017317 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017318 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017319 countingStream->rewind();
17320 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017321 uint64_t cgen_var_1154;
17322 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
17323 countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
17324 uint64_t cgen_var_1155;
17325 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1155, 1);
17326 countingStream->write((uint64_t*)&cgen_var_1155, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017327 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017328 uint64_t cgen_var_1156 = (uint64_t)(uintptr_t)local_pAllocator;
17329 countingStream->putBe64(cgen_var_1156);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017330 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017331 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017332 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017333 }
17334 }
17335 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17336 countingStream->rewind();
17337 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
17338 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
17339 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017340 uint64_t cgen_var_1157;
17341 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1157, 1);
17342 stream->write((uint64_t*)&cgen_var_1157, 1 * 8);
17343 uint64_t cgen_var_1158;
17344 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1158, 1);
17345 stream->write((uint64_t*)&cgen_var_1158, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017346 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017347 uint64_t cgen_var_1159 = (uint64_t)(uintptr_t)local_pAllocator;
17348 stream->putBe64(cgen_var_1159);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017349 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017350 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017351 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017352 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017353 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR readParams");
17354 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR returnUnmarshal");
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080017355 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017356 mImpl->log("finish vkDestroySamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017357}
17358
17359#endif
17360#ifdef VK_KHR_bind_memory2
17361VkResult VkEncoder::vkBindBufferMemory2KHR(
17362 VkDevice device,
17363 uint32_t bindInfoCount,
17364 const VkBindBufferMemoryInfo* pBindInfos)
17365{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017366 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017367 mImpl->log("start vkBindBufferMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017368 auto stream = mImpl->stream();
17369 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017370 auto resources = mImpl->resources();
17371 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017372 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017373 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017374 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017375 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017376 local_device = device;
17377 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017378 local_pBindInfos = nullptr;
17379 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017380 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017381 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017382 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17383 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017384 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
17385 }
17386 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017387 if (local_pBindInfos)
17388 {
17389 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17390 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017391 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017392 }
17393 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017394 countingStream->rewind();
17395 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017396 uint64_t cgen_var_1160;
17397 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1160, 1);
17398 countingStream->write((uint64_t*)&cgen_var_1160, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017399 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
17400 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17401 {
17402 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017403 }
17404 }
17405 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17406 countingStream->rewind();
17407 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
17408 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
17409 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017410 uint64_t cgen_var_1161;
17411 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1161, 1);
17412 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017413 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017414 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17415 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017416 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017417 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017418 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR readParams");
17419 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017420 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
17421 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017422 countingStream->clearPool();
17423 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017424 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017425 mImpl->log("finish vkBindBufferMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017426 return vkBindBufferMemory2KHR_VkResult_return;
17427}
17428
17429VkResult VkEncoder::vkBindImageMemory2KHR(
17430 VkDevice device,
17431 uint32_t bindInfoCount,
17432 const VkBindImageMemoryInfo* pBindInfos)
17433{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017434 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017435 mImpl->log("start vkBindImageMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017436 auto stream = mImpl->stream();
17437 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017438 auto resources = mImpl->resources();
17439 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017440 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017441 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017442 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017443 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017444 local_device = device;
17445 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017446 local_pBindInfos = nullptr;
17447 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017448 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017449 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017450 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17451 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017452 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
17453 }
17454 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017455 if (local_pBindInfos)
17456 {
17457 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17458 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017459 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017460 }
17461 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017462 countingStream->rewind();
17463 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017464 uint64_t cgen_var_1162;
17465 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1162, 1);
17466 countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017467 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
17468 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17469 {
17470 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017471 }
17472 }
17473 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17474 countingStream->rewind();
17475 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
17476 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
17477 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017478 uint64_t cgen_var_1163;
17479 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1163, 1);
17480 stream->write((uint64_t*)&cgen_var_1163, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017481 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017482 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17483 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017484 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017485 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017486 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR readParams");
17487 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017488 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
17489 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017490 countingStream->clearPool();
17491 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017492 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017493 mImpl->log("finish vkBindImageMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017494 return vkBindImageMemory2KHR_VkResult_return;
17495}
17496
17497#endif
17498#ifdef VK_KHR_maintenance3
17499void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
17500 VkDevice device,
17501 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
17502 VkDescriptorSetLayoutSupport* pSupport)
17503{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017504 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017505 mImpl->log("start vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017506 auto stream = mImpl->stream();
17507 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017508 auto resources = mImpl->resources();
17509 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017510 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017511 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017512 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017513 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017514 local_pCreateInfo = nullptr;
17515 if (pCreateInfo)
17516 {
17517 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
17518 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
17519 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017520 if (local_pCreateInfo)
17521 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017522 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017523 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017524 countingStream->rewind();
17525 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017526 uint64_t cgen_var_1164;
17527 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1164, 1);
17528 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017529 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017530 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
17531 }
17532 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17533 countingStream->rewind();
17534 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
17535 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
17536 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017537 uint64_t cgen_var_1165;
17538 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1165, 1);
17539 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017540 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017541 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017542 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017543 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017544 if (pSupport)
17545 {
17546 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
17547 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017548 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017549 mImpl->log("finish vkGetDescriptorSetLayoutSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017550}
17551
17552#endif
17553#ifdef VK_KHR_draw_indirect_count
17554void VkEncoder::vkCmdDrawIndirectCountKHR(
17555 VkCommandBuffer commandBuffer,
17556 VkBuffer buffer,
17557 VkDeviceSize offset,
17558 VkBuffer countBuffer,
17559 VkDeviceSize countBufferOffset,
17560 uint32_t maxDrawCount,
17561 uint32_t stride)
17562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017563 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017564 mImpl->log("start vkCmdDrawIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017565 auto stream = mImpl->stream();
17566 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017567 auto resources = mImpl->resources();
17568 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017569 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017570 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017571 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017572 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017573 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017574 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017575 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017576 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017577 local_commandBuffer = commandBuffer;
17578 local_buffer = buffer;
17579 local_offset = offset;
17580 local_countBuffer = countBuffer;
17581 local_countBufferOffset = countBufferOffset;
17582 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017583 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017584 countingStream->rewind();
17585 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017586 uint64_t cgen_var_1166;
17587 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1166, 1);
17588 countingStream->write((uint64_t*)&cgen_var_1166, 1 * 8);
17589 uint64_t cgen_var_1167;
17590 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1167, 1);
17591 countingStream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017592 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017593 uint64_t cgen_var_1168;
17594 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1168, 1);
17595 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017596 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17597 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17598 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017599 }
17600 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17601 countingStream->rewind();
17602 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
17603 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
17604 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017605 uint64_t cgen_var_1169;
17606 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1169, 1);
17607 stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
17608 uint64_t cgen_var_1170;
17609 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1170, 1);
17610 stream->write((uint64_t*)&cgen_var_1170, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017611 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017612 uint64_t cgen_var_1171;
17613 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1171, 1);
17614 stream->write((uint64_t*)&cgen_var_1171, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017615 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17616 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17617 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017618 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR readParams");
17619 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017620 mImpl->log("finish vkCmdDrawIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017621}
17622
17623void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
17624 VkCommandBuffer commandBuffer,
17625 VkBuffer buffer,
17626 VkDeviceSize offset,
17627 VkBuffer countBuffer,
17628 VkDeviceSize countBufferOffset,
17629 uint32_t maxDrawCount,
17630 uint32_t stride)
17631{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017632 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017633 mImpl->log("start vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017634 auto stream = mImpl->stream();
17635 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017636 auto resources = mImpl->resources();
17637 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017638 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017639 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017640 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017641 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017642 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017643 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017644 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017645 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017646 local_commandBuffer = commandBuffer;
17647 local_buffer = buffer;
17648 local_offset = offset;
17649 local_countBuffer = countBuffer;
17650 local_countBufferOffset = countBufferOffset;
17651 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017652 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017653 countingStream->rewind();
17654 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017655 uint64_t cgen_var_1172;
17656 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1172, 1);
17657 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
17658 uint64_t cgen_var_1173;
17659 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1173, 1);
17660 countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017661 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017662 uint64_t cgen_var_1174;
17663 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1174, 1);
17664 countingStream->write((uint64_t*)&cgen_var_1174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017665 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17666 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17667 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017668 }
17669 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17670 countingStream->rewind();
17671 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
17672 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
17673 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017674 uint64_t cgen_var_1175;
17675 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1175, 1);
17676 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
17677 uint64_t cgen_var_1176;
17678 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1176, 1);
17679 stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017680 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017681 uint64_t cgen_var_1177;
17682 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1177, 1);
17683 stream->write((uint64_t*)&cgen_var_1177, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017684 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17685 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17686 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017687 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR readParams");
17688 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017689 mImpl->log("finish vkCmdDrawIndexedIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017690}
17691
17692#endif
17693#ifdef VK_KHR_8bit_storage
17694#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080017695#ifdef VK_ANDROID_native_buffer
17696VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
17697 VkDevice device,
17698 VkFormat format,
17699 VkImageUsageFlags imageUsage,
17700 int* grallocUsage)
17701{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017702 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017703 mImpl->log("start vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017704 auto stream = mImpl->stream();
17705 auto countingStream = mImpl->countingStream();
17706 auto resources = mImpl->resources();
17707 auto pool = mImpl->pool();
17708 stream->setHandleMapping(resources->unwrapMapping());
17709 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017710 VkFormat local_format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017711 VkImageUsageFlags local_imageUsage;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017712 local_device = device;
17713 local_format = format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017714 local_imageUsage = imageUsage;
17715 countingStream->rewind();
17716 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017717 uint64_t cgen_var_1178;
17718 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1178, 1);
17719 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017720 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
17721 countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
17722 countingStream->write((int*)grallocUsage, sizeof(int));
17723 }
17724 uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17725 countingStream->rewind();
17726 uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
17727 stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
17728 stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017729 uint64_t cgen_var_1179;
17730 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1179, 1);
17731 stream->write((uint64_t*)&cgen_var_1179, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017732 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
17733 stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
17734 stream->write((int*)grallocUsage, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017735 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID readParams");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017736 stream->read((int*)grallocUsage, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017737 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID returnUnmarshal");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017738 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
17739 stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
17740 countingStream->clearPool();
17741 stream->clearPool();
17742 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017743 mImpl->log("finish vkGetSwapchainGrallocUsageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017744 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
17745}
17746
17747VkResult VkEncoder::vkAcquireImageANDROID(
17748 VkDevice device,
17749 VkImage image,
17750 int nativeFenceFd,
17751 VkSemaphore semaphore,
17752 VkFence fence)
17753{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017754 AEMU_SCOPED_TRACE("vkAcquireImageANDROID encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017755 mImpl->log("start vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017756 auto stream = mImpl->stream();
17757 auto countingStream = mImpl->countingStream();
17758 auto resources = mImpl->resources();
17759 auto pool = mImpl->pool();
17760 stream->setHandleMapping(resources->unwrapMapping());
17761 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017762 VkImage local_image;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017763 int local_nativeFenceFd;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017764 VkSemaphore local_semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017765 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017766 local_device = device;
17767 local_image = image;
17768 local_nativeFenceFd = nativeFenceFd;
17769 local_semaphore = semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017770 local_fence = fence;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -080017771 mImpl->resources()->unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017772 countingStream->rewind();
17773 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017774 uint64_t cgen_var_1180;
17775 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1180, 1);
17776 countingStream->write((uint64_t*)&cgen_var_1180, 1 * 8);
17777 uint64_t cgen_var_1181;
17778 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1181, 1);
17779 countingStream->write((uint64_t*)&cgen_var_1181, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017780 countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017781 uint64_t cgen_var_1182;
17782 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1182, 1);
17783 countingStream->write((uint64_t*)&cgen_var_1182, 1 * 8);
17784 uint64_t cgen_var_1183;
17785 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1183, 1);
17786 countingStream->write((uint64_t*)&cgen_var_1183, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017787 }
17788 uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17789 countingStream->rewind();
17790 uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
17791 stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
17792 stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017793 uint64_t cgen_var_1184;
17794 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1184, 1);
17795 stream->write((uint64_t*)&cgen_var_1184, 1 * 8);
17796 uint64_t cgen_var_1185;
17797 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1185, 1);
17798 stream->write((uint64_t*)&cgen_var_1185, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017799 stream->write((int*)&local_nativeFenceFd, sizeof(int));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017800 uint64_t cgen_var_1186;
17801 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1186, 1);
17802 stream->write((uint64_t*)&cgen_var_1186, 1 * 8);
17803 uint64_t cgen_var_1187;
17804 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1187, 1);
17805 stream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017806 AEMU_SCOPED_TRACE("vkAcquireImageANDROID readParams");
17807 AEMU_SCOPED_TRACE("vkAcquireImageANDROID returnUnmarshal");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017808 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
17809 stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
17810 countingStream->clearPool();
17811 stream->clearPool();
17812 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017813 mImpl->log("finish vkAcquireImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017814 return vkAcquireImageANDROID_VkResult_return;
17815}
17816
17817VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
17818 VkQueue queue,
17819 uint32_t waitSemaphoreCount,
17820 const VkSemaphore* pWaitSemaphores,
17821 VkImage image,
17822 int* pNativeFenceFd)
17823{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017824 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017825 mImpl->log("start vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017826 auto stream = mImpl->stream();
17827 auto countingStream = mImpl->countingStream();
17828 auto resources = mImpl->resources();
17829 auto pool = mImpl->pool();
17830 stream->setHandleMapping(resources->unwrapMapping());
17831 VkQueue local_queue;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017832 uint32_t local_waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017833 VkSemaphore* local_pWaitSemaphores;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017834 VkImage local_image;
17835 local_queue = queue;
17836 local_waitSemaphoreCount = waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017837 local_pWaitSemaphores = nullptr;
17838 if (pWaitSemaphores)
17839 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017840 local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, ((waitSemaphoreCount)) * sizeof(const VkSemaphore));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017841 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017842 local_image = image;
17843 countingStream->rewind();
17844 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017845 uint64_t cgen_var_1188;
17846 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1188, 1);
17847 countingStream->write((uint64_t*)&cgen_var_1188, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017848 countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017849 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017850 uint64_t cgen_var_1189 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17851 countingStream->putBe64(cgen_var_1189);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017852 if (local_pWaitSemaphores)
17853 {
17854 if (((waitSemaphoreCount)))
17855 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017856 uint64_t* cgen_var_1190;
17857 countingStream->alloc((void**)&cgen_var_1190, ((waitSemaphoreCount)) * 8);
17858 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1190, ((waitSemaphoreCount)));
17859 countingStream->write((uint64_t*)cgen_var_1190, ((waitSemaphoreCount)) * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017860 }
17861 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017862 uint64_t cgen_var_1191;
17863 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1191, 1);
17864 countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017865 countingStream->write((int*)pNativeFenceFd, sizeof(int));
17866 }
17867 uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17868 countingStream->rewind();
17869 uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
17870 stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
17871 stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017872 uint64_t cgen_var_1192;
17873 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1192, 1);
17874 stream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017875 stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
17876 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017877 uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17878 stream->putBe64(cgen_var_1193);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017879 if (local_pWaitSemaphores)
17880 {
17881 if (((waitSemaphoreCount)))
17882 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017883 uint64_t* cgen_var_1194;
17884 stream->alloc((void**)&cgen_var_1194, ((waitSemaphoreCount)) * 8);
17885 stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1194, ((waitSemaphoreCount)));
17886 stream->write((uint64_t*)cgen_var_1194, ((waitSemaphoreCount)) * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017887 }
17888 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017889 uint64_t cgen_var_1195;
17890 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1195, 1);
17891 stream->write((uint64_t*)&cgen_var_1195, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017892 stream->write((int*)pNativeFenceFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017893 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID readParams");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017894 stream->read((int*)pNativeFenceFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017895 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID returnUnmarshal");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017896 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
17897 stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
17898 countingStream->clearPool();
17899 stream->clearPool();
17900 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017901 mImpl->log("finish vkQueueSignalReleaseImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017902 return vkQueueSignalReleaseImageANDROID_VkResult_return;
17903}
17904
17905#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017906#ifdef VK_EXT_debug_report
17907VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
17908 VkInstance instance,
17909 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
17910 const VkAllocationCallbacks* pAllocator,
17911 VkDebugReportCallbackEXT* pCallback)
17912{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017913 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017914 mImpl->log("start vkCreateDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017915 auto stream = mImpl->stream();
17916 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017917 auto resources = mImpl->resources();
17918 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017919 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017920 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017921 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017922 VkAllocationCallbacks* local_pAllocator;
17923 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017924 local_pCreateInfo = nullptr;
17925 if (pCreateInfo)
17926 {
17927 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
17928 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
17929 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017930 local_pAllocator = nullptr;
17931 if (pAllocator)
17932 {
17933 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17934 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17935 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017936 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017937 if (local_pCreateInfo)
17938 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017939 transform_tohost_VkDebugReportCallbackCreateInfoEXT(mImpl->resources(), (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017940 }
17941 if (local_pAllocator)
17942 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017943 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017944 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017945 countingStream->rewind();
17946 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017947 uint64_t cgen_var_1196;
17948 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1196, 1);
17949 countingStream->write((uint64_t*)&cgen_var_1196, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017950 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017951 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017952 uint64_t cgen_var_1197 = (uint64_t)(uintptr_t)local_pAllocator;
17953 countingStream->putBe64(cgen_var_1197);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017954 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017955 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017956 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017957 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017958 uint64_t cgen_var_1198;
17959 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1198, 1);
17960 countingStream->write((uint64_t*)&cgen_var_1198, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017961 }
17962 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17963 countingStream->rewind();
17964 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
17965 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
17966 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017967 uint64_t cgen_var_1199;
17968 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1199, 1);
17969 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017970 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017971 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017972 uint64_t cgen_var_1200 = (uint64_t)(uintptr_t)local_pAllocator;
17973 stream->putBe64(cgen_var_1200);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017974 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017975 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017976 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017977 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017978 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017979 uint64_t cgen_var_1201;
17980 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1201, 1);
17981 stream->write((uint64_t*)&cgen_var_1201, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017982 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017983 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080017984 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080017985 uint64_t cgen_var_1202;
17986 stream->read((uint64_t*)&cgen_var_1202, 8);
17987 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1202, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017988 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017989 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017990 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
17991 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017992 countingStream->clearPool();
17993 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017994 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017995 mImpl->log("finish vkCreateDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017996 return vkCreateDebugReportCallbackEXT_VkResult_return;
17997}
17998
17999void VkEncoder::vkDestroyDebugReportCallbackEXT(
18000 VkInstance instance,
18001 VkDebugReportCallbackEXT callback,
18002 const VkAllocationCallbacks* pAllocator)
18003{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018004 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018005 mImpl->log("start vkDestroyDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018006 auto stream = mImpl->stream();
18007 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018008 auto resources = mImpl->resources();
18009 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018010 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018011 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018012 VkDebugReportCallbackEXT local_callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018013 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018014 local_instance = instance;
18015 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018016 local_pAllocator = nullptr;
18017 if (pAllocator)
18018 {
18019 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18020 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18021 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018022 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018023 if (local_pAllocator)
18024 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018025 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018026 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018027 countingStream->rewind();
18028 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018029 uint64_t cgen_var_1203;
18030 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1203, 1);
18031 countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
18032 uint64_t cgen_var_1204;
18033 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1204, 1);
18034 countingStream->write((uint64_t*)&cgen_var_1204, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018035 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018036 uint64_t cgen_var_1205 = (uint64_t)(uintptr_t)local_pAllocator;
18037 countingStream->putBe64(cgen_var_1205);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018038 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018039 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018040 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018041 }
18042 }
18043 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18044 countingStream->rewind();
18045 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
18046 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
18047 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018048 uint64_t cgen_var_1206;
18049 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1206, 1);
18050 stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
18051 uint64_t cgen_var_1207;
18052 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1207, 1);
18053 stream->write((uint64_t*)&cgen_var_1207, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018054 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018055 uint64_t cgen_var_1208 = (uint64_t)(uintptr_t)local_pAllocator;
18056 stream->putBe64(cgen_var_1208);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018057 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018058 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018059 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018060 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018061 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT readParams");
18062 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018063 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018064 mImpl->log("finish vkDestroyDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018065}
18066
18067void VkEncoder::vkDebugReportMessageEXT(
18068 VkInstance instance,
18069 VkDebugReportFlagsEXT flags,
18070 VkDebugReportObjectTypeEXT objectType,
18071 uint64_t object,
18072 size_t location,
18073 int32_t messageCode,
18074 const char* pLayerPrefix,
18075 const char* pMessage)
18076{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018077 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018078 mImpl->log("start vkDebugReportMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018079 auto stream = mImpl->stream();
18080 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018081 auto resources = mImpl->resources();
18082 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018083 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018084 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018085 VkDebugReportFlagsEXT local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018086 VkDebugReportObjectTypeEXT local_objectType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018087 uint64_t local_object;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018088 size_t local_location;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018089 int32_t local_messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018090 char* local_pLayerPrefix;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018091 char* local_pMessage;
18092 local_instance = instance;
18093 local_flags = flags;
18094 local_objectType = objectType;
18095 local_object = object;
18096 local_location = location;
18097 local_messageCode = messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018098 local_pLayerPrefix = nullptr;
18099 if (pLayerPrefix)
18100 {
18101 local_pLayerPrefix = pool->strDup(pLayerPrefix);
18102 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018103 local_pMessage = nullptr;
18104 if (pMessage)
18105 {
18106 local_pMessage = pool->strDup(pMessage);
18107 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018108 countingStream->rewind();
18109 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018110 uint64_t cgen_var_1209;
18111 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1209, 1);
18112 countingStream->write((uint64_t*)&cgen_var_1209, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018113 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
18114 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
18115 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018116 uint64_t cgen_var_1210 = (uint64_t)local_location;
18117 countingStream->putBe64(cgen_var_1210);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018118 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
18119 countingStream->putString(local_pLayerPrefix);
18120 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018121 }
18122 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18123 countingStream->rewind();
18124 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
18125 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
18126 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018127 uint64_t cgen_var_1211;
18128 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1211, 1);
18129 stream->write((uint64_t*)&cgen_var_1211, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018130 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
18131 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
18132 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018133 uint64_t cgen_var_1212 = (uint64_t)local_location;
18134 stream->putBe64(cgen_var_1212);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018135 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
18136 stream->putString(local_pLayerPrefix);
18137 stream->putString(local_pMessage);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018138 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT readParams");
18139 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018140 mImpl->log("finish vkDebugReportMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018141}
18142
18143#endif
18144#ifdef VK_NV_glsl_shader
18145#endif
18146#ifdef VK_EXT_depth_range_unrestricted
18147#endif
18148#ifdef VK_IMG_filter_cubic
18149#endif
18150#ifdef VK_AMD_rasterization_order
18151#endif
18152#ifdef VK_AMD_shader_trinary_minmax
18153#endif
18154#ifdef VK_AMD_shader_explicit_vertex_parameter
18155#endif
18156#ifdef VK_EXT_debug_marker
18157VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
18158 VkDevice device,
18159 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
18160{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018161 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018162 mImpl->log("start vkDebugMarkerSetObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018163 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 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018169 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018170 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018171 local_pTagInfo = nullptr;
18172 if (pTagInfo)
18173 {
18174 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
18175 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
18176 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018177 if (local_pTagInfo)
18178 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018179 transform_tohost_VkDebugMarkerObjectTagInfoEXT(mImpl->resources(), (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018180 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018181 countingStream->rewind();
18182 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018183 uint64_t cgen_var_1213;
18184 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1213, 1);
18185 countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018186 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018187 }
18188 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18189 countingStream->rewind();
18190 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
18191 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
18192 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018193 uint64_t cgen_var_1214;
18194 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1214, 1);
18195 stream->write((uint64_t*)&cgen_var_1214, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018196 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018197 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT readParams");
18198 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018199 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
18200 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018201 countingStream->clearPool();
18202 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018203 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018204 mImpl->log("finish vkDebugMarkerSetObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018205 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
18206}
18207
18208VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
18209 VkDevice device,
18210 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
18211{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018212 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018213 mImpl->log("start vkDebugMarkerSetObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018214 auto stream = mImpl->stream();
18215 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018216 auto resources = mImpl->resources();
18217 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018218 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018219 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018220 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018221 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018222 local_pNameInfo = nullptr;
18223 if (pNameInfo)
18224 {
18225 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
18226 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
18227 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018228 if (local_pNameInfo)
18229 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018230 transform_tohost_VkDebugMarkerObjectNameInfoEXT(mImpl->resources(), (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018231 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018232 countingStream->rewind();
18233 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018234 uint64_t cgen_var_1215;
18235 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1215, 1);
18236 countingStream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018237 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018238 }
18239 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18240 countingStream->rewind();
18241 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
18242 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
18243 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018244 uint64_t cgen_var_1216;
18245 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1216, 1);
18246 stream->write((uint64_t*)&cgen_var_1216, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018247 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018248 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT readParams");
18249 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018250 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
18251 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018252 countingStream->clearPool();
18253 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018254 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018255 mImpl->log("finish vkDebugMarkerSetObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018256 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
18257}
18258
18259void VkEncoder::vkCmdDebugMarkerBeginEXT(
18260 VkCommandBuffer commandBuffer,
18261 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
18262{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018263 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018264 mImpl->log("start vkCmdDebugMarkerBeginEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018265 auto stream = mImpl->stream();
18266 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018267 auto resources = mImpl->resources();
18268 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018269 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018270 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018271 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018272 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018273 local_pMarkerInfo = nullptr;
18274 if (pMarkerInfo)
18275 {
18276 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
18277 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18278 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018279 if (local_pMarkerInfo)
18280 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018281 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018282 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018283 countingStream->rewind();
18284 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018285 uint64_t cgen_var_1217;
18286 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1217, 1);
18287 countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018288 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018289 }
18290 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18291 countingStream->rewind();
18292 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
18293 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
18294 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018295 uint64_t cgen_var_1218;
18296 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1218, 1);
18297 stream->write((uint64_t*)&cgen_var_1218, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018298 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018299 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT readParams");
18300 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018301 mImpl->log("finish vkCmdDebugMarkerBeginEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018302}
18303
18304void VkEncoder::vkCmdDebugMarkerEndEXT(
18305 VkCommandBuffer commandBuffer)
18306{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018307 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018308 mImpl->log("start vkCmdDebugMarkerEndEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018309 auto stream = mImpl->stream();
18310 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018311 auto resources = mImpl->resources();
18312 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018313 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018314 VkCommandBuffer local_commandBuffer;
18315 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018316 countingStream->rewind();
18317 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018318 uint64_t cgen_var_1219;
18319 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1219, 1);
18320 countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018321 }
18322 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18323 countingStream->rewind();
18324 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
18325 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
18326 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018327 uint64_t cgen_var_1220;
18328 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1220, 1);
18329 stream->write((uint64_t*)&cgen_var_1220, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018330 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT readParams");
18331 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018332 mImpl->log("finish vkCmdDebugMarkerEndEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018333}
18334
18335void VkEncoder::vkCmdDebugMarkerInsertEXT(
18336 VkCommandBuffer commandBuffer,
18337 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
18338{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018339 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018340 mImpl->log("start vkCmdDebugMarkerInsertEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018341 auto stream = mImpl->stream();
18342 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018343 auto resources = mImpl->resources();
18344 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018345 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018346 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018347 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018348 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018349 local_pMarkerInfo = nullptr;
18350 if (pMarkerInfo)
18351 {
18352 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
18353 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18354 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018355 if (local_pMarkerInfo)
18356 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018357 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018358 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018359 countingStream->rewind();
18360 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018361 uint64_t cgen_var_1221;
18362 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1221, 1);
18363 countingStream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018364 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018365 }
18366 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18367 countingStream->rewind();
18368 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
18369 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
18370 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018371 uint64_t cgen_var_1222;
18372 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1222, 1);
18373 stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018374 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018375 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT readParams");
18376 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018377 mImpl->log("finish vkCmdDebugMarkerInsertEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018378}
18379
18380#endif
18381#ifdef VK_AMD_gcn_shader
18382#endif
18383#ifdef VK_NV_dedicated_allocation
18384#endif
18385#ifdef VK_AMD_draw_indirect_count
18386void VkEncoder::vkCmdDrawIndirectCountAMD(
18387 VkCommandBuffer commandBuffer,
18388 VkBuffer buffer,
18389 VkDeviceSize offset,
18390 VkBuffer countBuffer,
18391 VkDeviceSize countBufferOffset,
18392 uint32_t maxDrawCount,
18393 uint32_t stride)
18394{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018395 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018396 mImpl->log("start vkCmdDrawIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018397 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 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018403 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018404 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018405 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018406 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018407 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018408 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018409 local_commandBuffer = commandBuffer;
18410 local_buffer = buffer;
18411 local_offset = offset;
18412 local_countBuffer = countBuffer;
18413 local_countBufferOffset = countBufferOffset;
18414 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018415 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018416 countingStream->rewind();
18417 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018418 uint64_t cgen_var_1223;
18419 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1223, 1);
18420 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
18421 uint64_t cgen_var_1224;
18422 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1224, 1);
18423 countingStream->write((uint64_t*)&cgen_var_1224, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018424 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018425 uint64_t cgen_var_1225;
18426 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1225, 1);
18427 countingStream->write((uint64_t*)&cgen_var_1225, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018428 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18429 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18430 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018431 }
18432 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18433 countingStream->rewind();
18434 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
18435 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
18436 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018437 uint64_t cgen_var_1226;
18438 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1226, 1);
18439 stream->write((uint64_t*)&cgen_var_1226, 1 * 8);
18440 uint64_t cgen_var_1227;
18441 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1227, 1);
18442 stream->write((uint64_t*)&cgen_var_1227, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018443 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018444 uint64_t cgen_var_1228;
18445 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1228, 1);
18446 stream->write((uint64_t*)&cgen_var_1228, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018447 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18448 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18449 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018450 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD readParams");
18451 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018452 mImpl->log("finish vkCmdDrawIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018453}
18454
18455void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
18456 VkCommandBuffer commandBuffer,
18457 VkBuffer buffer,
18458 VkDeviceSize offset,
18459 VkBuffer countBuffer,
18460 VkDeviceSize countBufferOffset,
18461 uint32_t maxDrawCount,
18462 uint32_t stride)
18463{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018464 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018465 mImpl->log("start vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018466 auto stream = mImpl->stream();
18467 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018468 auto resources = mImpl->resources();
18469 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018470 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018471 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018472 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018473 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018474 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018475 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018476 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018477 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018478 local_commandBuffer = commandBuffer;
18479 local_buffer = buffer;
18480 local_offset = offset;
18481 local_countBuffer = countBuffer;
18482 local_countBufferOffset = countBufferOffset;
18483 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018484 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018485 countingStream->rewind();
18486 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018487 uint64_t cgen_var_1229;
18488 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1229, 1);
18489 countingStream->write((uint64_t*)&cgen_var_1229, 1 * 8);
18490 uint64_t cgen_var_1230;
18491 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1230, 1);
18492 countingStream->write((uint64_t*)&cgen_var_1230, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018493 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018494 uint64_t cgen_var_1231;
18495 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1231, 1);
18496 countingStream->write((uint64_t*)&cgen_var_1231, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018497 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18498 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18499 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018500 }
18501 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18502 countingStream->rewind();
18503 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
18504 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
18505 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018506 uint64_t cgen_var_1232;
18507 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1232, 1);
18508 stream->write((uint64_t*)&cgen_var_1232, 1 * 8);
18509 uint64_t cgen_var_1233;
18510 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1233, 1);
18511 stream->write((uint64_t*)&cgen_var_1233, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018512 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018513 uint64_t cgen_var_1234;
18514 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1234, 1);
18515 stream->write((uint64_t*)&cgen_var_1234, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018516 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18517 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18518 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018519 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD readParams");
18520 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018521 mImpl->log("finish vkCmdDrawIndexedIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018522}
18523
18524#endif
18525#ifdef VK_AMD_negative_viewport_height
18526#endif
18527#ifdef VK_AMD_gpu_shader_half_float
18528#endif
18529#ifdef VK_AMD_shader_ballot
18530#endif
18531#ifdef VK_AMD_texture_gather_bias_lod
18532#endif
18533#ifdef VK_AMD_shader_info
18534VkResult VkEncoder::vkGetShaderInfoAMD(
18535 VkDevice device,
18536 VkPipeline pipeline,
18537 VkShaderStageFlagBits shaderStage,
18538 VkShaderInfoTypeAMD infoType,
18539 size_t* pInfoSize,
18540 void* pInfo)
18541{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018542 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018543 mImpl->log("start vkGetShaderInfoAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018544 auto stream = mImpl->stream();
18545 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018546 auto resources = mImpl->resources();
18547 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018548 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018549 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018550 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018551 VkShaderStageFlagBits local_shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018552 VkShaderInfoTypeAMD local_infoType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018553 local_device = device;
18554 local_pipeline = pipeline;
18555 local_shaderStage = shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018556 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018557 countingStream->rewind();
18558 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018559 uint64_t cgen_var_1235;
18560 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1235, 1);
18561 countingStream->write((uint64_t*)&cgen_var_1235, 1 * 8);
18562 uint64_t cgen_var_1236;
18563 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1236, 1);
18564 countingStream->write((uint64_t*)&cgen_var_1236, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018565 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
18566 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018567 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018568 uint64_t cgen_var_1237 = (uint64_t)(uintptr_t)pInfoSize;
18569 countingStream->putBe64(cgen_var_1237);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018570 if (pInfoSize)
18571 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018572 uint64_t cgen_var_1238 = (uint64_t)(*pInfoSize);
18573 countingStream->putBe64(cgen_var_1238);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018574 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018575 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018576 uint64_t cgen_var_1239 = (uint64_t)(uintptr_t)pInfo;
18577 countingStream->putBe64(cgen_var_1239);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018578 if (pInfo)
18579 {
18580 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
18581 }
18582 }
18583 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18584 countingStream->rewind();
18585 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
18586 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
18587 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018588 uint64_t cgen_var_1240;
18589 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1240, 1);
18590 stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
18591 uint64_t cgen_var_1241;
18592 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1241, 1);
18593 stream->write((uint64_t*)&cgen_var_1241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018594 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
18595 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018596 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018597 uint64_t cgen_var_1242 = (uint64_t)(uintptr_t)pInfoSize;
18598 stream->putBe64(cgen_var_1242);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018599 if (pInfoSize)
18600 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018601 uint64_t cgen_var_1243 = (uint64_t)(*pInfoSize);
18602 stream->putBe64(cgen_var_1243);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018603 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018604 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018605 uint64_t cgen_var_1244 = (uint64_t)(uintptr_t)pInfo;
18606 stream->putBe64(cgen_var_1244);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018607 if (pInfo)
18608 {
18609 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
18610 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018611 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018612 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018613 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018614 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018615 if (pInfoSize)
18616 {
18617 if (!(check_pInfoSize))
18618 {
18619 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
18620 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018621 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018622 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018623 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018624 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018625 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018626 if (pInfo)
18627 {
18628 if (!(check_pInfo))
18629 {
18630 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
18631 }
18632 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
18633 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018634 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018635 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
18636 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018637 countingStream->clearPool();
18638 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018639 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018640 mImpl->log("finish vkGetShaderInfoAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018641 return vkGetShaderInfoAMD_VkResult_return;
18642}
18643
18644#endif
18645#ifdef VK_AMD_shader_image_load_store_lod
18646#endif
18647#ifdef VK_IMG_format_pvrtc
18648#endif
18649#ifdef VK_NV_external_memory_capabilities
18650VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
18651 VkPhysicalDevice physicalDevice,
18652 VkFormat format,
18653 VkImageType type,
18654 VkImageTiling tiling,
18655 VkImageUsageFlags usage,
18656 VkImageCreateFlags flags,
18657 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
18658 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
18659{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018660 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018661 mImpl->log("start vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018662 auto stream = mImpl->stream();
18663 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018664 auto resources = mImpl->resources();
18665 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018666 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018667 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018668 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018669 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018670 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018671 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018672 VkImageCreateFlags local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018673 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018674 local_physicalDevice = physicalDevice;
18675 local_format = format;
18676 local_type = type;
18677 local_tiling = tiling;
18678 local_usage = usage;
18679 local_flags = flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018680 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018681 countingStream->rewind();
18682 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018683 uint64_t cgen_var_1248;
18684 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1248, 1);
18685 countingStream->write((uint64_t*)&cgen_var_1248, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018686 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
18687 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
18688 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
18689 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
18690 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
18691 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018692 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
18693 }
18694 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18695 countingStream->rewind();
18696 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
18697 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
18698 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018699 uint64_t cgen_var_1249;
18700 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1249, 1);
18701 stream->write((uint64_t*)&cgen_var_1249, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018702 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
18703 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
18704 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
18705 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
18706 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
18707 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018708 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018709 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018710 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018711 if (pExternalImageFormatProperties)
18712 {
18713 transform_fromhost_VkExternalImageFormatPropertiesNV(mImpl->resources(), (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
18714 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018715 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018716 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
18717 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018718 countingStream->clearPool();
18719 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018720 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018721 mImpl->log("finish vkGetPhysicalDeviceExternalImageFormatPropertiesNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018722 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
18723}
18724
18725#endif
18726#ifdef VK_NV_external_memory
18727#endif
18728#ifdef VK_NV_external_memory_win32
18729VkResult VkEncoder::vkGetMemoryWin32HandleNV(
18730 VkDevice device,
18731 VkDeviceMemory memory,
18732 VkExternalMemoryHandleTypeFlagsNV handleType,
18733 HANDLE* pHandle)
18734{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018735 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018736 mImpl->log("start vkGetMemoryWin32HandleNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018737 auto stream = mImpl->stream();
18738 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018739 auto resources = mImpl->resources();
18740 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018741 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018742 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018743 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018744 VkExternalMemoryHandleTypeFlagsNV local_handleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018745 local_device = device;
18746 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018747 local_handleType = handleType;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080018748 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018749 countingStream->rewind();
18750 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018751 uint64_t cgen_var_1250;
18752 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1250, 1);
18753 countingStream->write((uint64_t*)&cgen_var_1250, 1 * 8);
18754 uint64_t cgen_var_1251;
18755 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1251, 1);
18756 countingStream->write((uint64_t*)&cgen_var_1251, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018757 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018758 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
18759 }
18760 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18761 countingStream->rewind();
18762 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
18763 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
18764 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018765 uint64_t cgen_var_1252;
18766 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1252, 1);
18767 stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
18768 uint64_t cgen_var_1253;
18769 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1253, 1);
18770 stream->write((uint64_t*)&cgen_var_1253, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018771 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018772 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018773 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018774 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018775 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018776 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
18777 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018778 countingStream->clearPool();
18779 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018780 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018781 mImpl->log("finish vkGetMemoryWin32HandleNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018782 return vkGetMemoryWin32HandleNV_VkResult_return;
18783}
18784
18785#endif
18786#ifdef VK_NV_win32_keyed_mutex
18787#endif
18788#ifdef VK_EXT_validation_flags
18789#endif
18790#ifdef VK_NN_vi_surface
18791VkResult VkEncoder::vkCreateViSurfaceNN(
18792 VkInstance instance,
18793 const VkViSurfaceCreateInfoNN* pCreateInfo,
18794 const VkAllocationCallbacks* pAllocator,
18795 VkSurfaceKHR* pSurface)
18796{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018797 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018798 mImpl->log("start vkCreateViSurfaceNN");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018799 auto stream = mImpl->stream();
18800 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018801 auto resources = mImpl->resources();
18802 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018803 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018804 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018805 VkViSurfaceCreateInfoNN* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018806 VkAllocationCallbacks* local_pAllocator;
18807 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018808 local_pCreateInfo = nullptr;
18809 if (pCreateInfo)
18810 {
18811 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
18812 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
18813 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018814 local_pAllocator = nullptr;
18815 if (pAllocator)
18816 {
18817 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18818 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18819 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018820 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018821 if (local_pCreateInfo)
18822 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018823 transform_tohost_VkViSurfaceCreateInfoNN(mImpl->resources(), (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018824 }
18825 if (local_pAllocator)
18826 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018827 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018828 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018829 countingStream->rewind();
18830 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018831 uint64_t cgen_var_1254;
18832 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1254, 1);
18833 countingStream->write((uint64_t*)&cgen_var_1254, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018834 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018835 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018836 uint64_t cgen_var_1255 = (uint64_t)(uintptr_t)local_pAllocator;
18837 countingStream->putBe64(cgen_var_1255);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018838 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018839 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018840 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018841 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018842 uint64_t cgen_var_1256;
18843 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1256, 1);
18844 countingStream->write((uint64_t*)&cgen_var_1256, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018845 }
18846 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18847 countingStream->rewind();
18848 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
18849 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
18850 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018851 uint64_t cgen_var_1257;
18852 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1257, 1);
18853 stream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018854 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018855 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018856 uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
18857 stream->putBe64(cgen_var_1258);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018858 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018859 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018860 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018861 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018862 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018863 uint64_t cgen_var_1259;
18864 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1259, 1);
18865 stream->write((uint64_t*)&cgen_var_1259, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018866 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018867 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018868 uint64_t cgen_var_1260;
18869 stream->read((uint64_t*)&cgen_var_1260, 8);
18870 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1260, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018871 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018872 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
18873 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018874 countingStream->clearPool();
18875 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018876 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018877 mImpl->log("finish vkCreateViSurfaceNN");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018878 return vkCreateViSurfaceNN_VkResult_return;
18879}
18880
18881#endif
18882#ifdef VK_EXT_shader_subgroup_ballot
18883#endif
18884#ifdef VK_EXT_shader_subgroup_vote
18885#endif
18886#ifdef VK_EXT_conditional_rendering
18887void VkEncoder::vkCmdBeginConditionalRenderingEXT(
18888 VkCommandBuffer commandBuffer,
18889 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
18890{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018891 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018892 mImpl->log("start vkCmdBeginConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018893 auto stream = mImpl->stream();
18894 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018895 auto resources = mImpl->resources();
18896 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018897 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018898 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018899 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018900 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018901 local_pConditionalRenderingBegin = nullptr;
18902 if (pConditionalRenderingBegin)
18903 {
18904 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
18905 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
18906 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018907 if (local_pConditionalRenderingBegin)
18908 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018909 transform_tohost_VkConditionalRenderingBeginInfoEXT(mImpl->resources(), (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018910 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018911 countingStream->rewind();
18912 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018913 uint64_t cgen_var_1261;
18914 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1261, 1);
18915 countingStream->write((uint64_t*)&cgen_var_1261, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018916 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018917 }
18918 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18919 countingStream->rewind();
18920 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
18921 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
18922 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018923 uint64_t cgen_var_1262;
18924 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1262, 1);
18925 stream->write((uint64_t*)&cgen_var_1262, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018926 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018927 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT readParams");
18928 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018929 mImpl->log("finish vkCmdBeginConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018930}
18931
18932void VkEncoder::vkCmdEndConditionalRenderingEXT(
18933 VkCommandBuffer commandBuffer)
18934{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018935 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018936 mImpl->log("start vkCmdEndConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018937 auto stream = mImpl->stream();
18938 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018939 auto resources = mImpl->resources();
18940 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018941 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018942 VkCommandBuffer local_commandBuffer;
18943 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018944 countingStream->rewind();
18945 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018946 uint64_t cgen_var_1263;
18947 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1263, 1);
18948 countingStream->write((uint64_t*)&cgen_var_1263, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018949 }
18950 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18951 countingStream->rewind();
18952 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
18953 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
18954 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018955 uint64_t cgen_var_1264;
18956 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1264, 1);
18957 stream->write((uint64_t*)&cgen_var_1264, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018958 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT readParams");
18959 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018960 mImpl->log("finish vkCmdEndConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018961}
18962
18963#endif
18964#ifdef VK_NVX_device_generated_commands
18965void VkEncoder::vkCmdProcessCommandsNVX(
18966 VkCommandBuffer commandBuffer,
18967 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
18968{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018969 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018970 mImpl->log("start vkCmdProcessCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018971 auto stream = mImpl->stream();
18972 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018973 auto resources = mImpl->resources();
18974 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018975 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018976 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018977 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018978 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018979 local_pProcessCommandsInfo = nullptr;
18980 if (pProcessCommandsInfo)
18981 {
18982 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
18983 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
18984 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018985 if (local_pProcessCommandsInfo)
18986 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018987 transform_tohost_VkCmdProcessCommandsInfoNVX(mImpl->resources(), (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018988 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018989 countingStream->rewind();
18990 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080018991 uint64_t cgen_var_1265;
18992 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1265, 1);
18993 countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018994 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018995 }
18996 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18997 countingStream->rewind();
18998 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
18999 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
19000 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019001 uint64_t cgen_var_1266;
19002 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1266, 1);
19003 stream->write((uint64_t*)&cgen_var_1266, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019004 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019005 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX readParams");
19006 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019007 mImpl->log("finish vkCmdProcessCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019008}
19009
19010void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
19011 VkCommandBuffer commandBuffer,
19012 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
19013{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019014 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019015 mImpl->log("start vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019016 auto stream = mImpl->stream();
19017 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019018 auto resources = mImpl->resources();
19019 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019020 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019021 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019022 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019023 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019024 local_pReserveSpaceInfo = nullptr;
19025 if (pReserveSpaceInfo)
19026 {
19027 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
19028 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
19029 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019030 if (local_pReserveSpaceInfo)
19031 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019032 transform_tohost_VkCmdReserveSpaceForCommandsInfoNVX(mImpl->resources(), (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019033 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019034 countingStream->rewind();
19035 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019036 uint64_t cgen_var_1267;
19037 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1267, 1);
19038 countingStream->write((uint64_t*)&cgen_var_1267, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019039 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019040 }
19041 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19042 countingStream->rewind();
19043 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
19044 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
19045 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019046 uint64_t cgen_var_1268;
19047 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1268, 1);
19048 stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019049 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019050 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX readParams");
19051 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019052 mImpl->log("finish vkCmdReserveSpaceForCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019053}
19054
19055VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
19056 VkDevice device,
19057 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
19058 const VkAllocationCallbacks* pAllocator,
19059 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
19060{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019061 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019062 mImpl->log("start vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019063 auto stream = mImpl->stream();
19064 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019065 auto resources = mImpl->resources();
19066 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019067 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019068 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019069 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019070 VkAllocationCallbacks* local_pAllocator;
19071 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019072 local_pCreateInfo = nullptr;
19073 if (pCreateInfo)
19074 {
19075 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
19076 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
19077 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019078 local_pAllocator = nullptr;
19079 if (pAllocator)
19080 {
19081 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19082 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19083 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019084 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019085 if (local_pCreateInfo)
19086 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019087 transform_tohost_VkIndirectCommandsLayoutCreateInfoNVX(mImpl->resources(), (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019088 }
19089 if (local_pAllocator)
19090 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019091 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019092 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019093 countingStream->rewind();
19094 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019095 uint64_t cgen_var_1269;
19096 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1269, 1);
19097 countingStream->write((uint64_t*)&cgen_var_1269, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019098 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019099 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019100 uint64_t cgen_var_1270 = (uint64_t)(uintptr_t)local_pAllocator;
19101 countingStream->putBe64(cgen_var_1270);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019102 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019103 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019104 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019105 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019106 uint64_t cgen_var_1271;
19107 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1271, 1);
19108 countingStream->write((uint64_t*)&cgen_var_1271, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019109 }
19110 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19111 countingStream->rewind();
19112 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
19113 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
19114 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019115 uint64_t cgen_var_1272;
19116 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1272, 1);
19117 stream->write((uint64_t*)&cgen_var_1272, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019118 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019119 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019120 uint64_t cgen_var_1273 = (uint64_t)(uintptr_t)local_pAllocator;
19121 stream->putBe64(cgen_var_1273);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019122 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019123 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019124 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019125 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019126 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019127 uint64_t cgen_var_1274;
19128 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1274, 1);
19129 stream->write((uint64_t*)&cgen_var_1274, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019130 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019131 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080019132 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019133 uint64_t cgen_var_1275;
19134 stream->read((uint64_t*)&cgen_var_1275, 8);
19135 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1275, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019136 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019137 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019138 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
19139 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019140 countingStream->clearPool();
19141 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019142 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019143 mImpl->log("finish vkCreateIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019144 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
19145}
19146
19147void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
19148 VkDevice device,
19149 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
19150 const VkAllocationCallbacks* pAllocator)
19151{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019152 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019153 mImpl->log("start vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019154 auto stream = mImpl->stream();
19155 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019156 auto resources = mImpl->resources();
19157 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019158 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019159 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019160 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019161 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019162 local_device = device;
19163 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019164 local_pAllocator = nullptr;
19165 if (pAllocator)
19166 {
19167 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19168 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19169 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019170 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019171 if (local_pAllocator)
19172 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019173 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019174 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019175 countingStream->rewind();
19176 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019177 uint64_t cgen_var_1276;
19178 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1276, 1);
19179 countingStream->write((uint64_t*)&cgen_var_1276, 1 * 8);
19180 uint64_t cgen_var_1277;
19181 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1277, 1);
19182 countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019183 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019184 uint64_t cgen_var_1278 = (uint64_t)(uintptr_t)local_pAllocator;
19185 countingStream->putBe64(cgen_var_1278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019186 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019187 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019188 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019189 }
19190 }
19191 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19192 countingStream->rewind();
19193 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
19194 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
19195 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019196 uint64_t cgen_var_1279;
19197 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1279, 1);
19198 stream->write((uint64_t*)&cgen_var_1279, 1 * 8);
19199 uint64_t cgen_var_1280;
19200 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1280, 1);
19201 stream->write((uint64_t*)&cgen_var_1280, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019202 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019203 uint64_t cgen_var_1281 = (uint64_t)(uintptr_t)local_pAllocator;
19204 stream->putBe64(cgen_var_1281);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019205 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019206 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019207 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019208 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019209 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX readParams");
19210 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019211 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019212 mImpl->log("finish vkDestroyIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019213}
19214
19215VkResult VkEncoder::vkCreateObjectTableNVX(
19216 VkDevice device,
19217 const VkObjectTableCreateInfoNVX* pCreateInfo,
19218 const VkAllocationCallbacks* pAllocator,
19219 VkObjectTableNVX* pObjectTable)
19220{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019221 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019222 mImpl->log("start vkCreateObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019223 auto stream = mImpl->stream();
19224 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019225 auto resources = mImpl->resources();
19226 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019227 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019228 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019229 VkObjectTableCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019230 VkAllocationCallbacks* local_pAllocator;
19231 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019232 local_pCreateInfo = nullptr;
19233 if (pCreateInfo)
19234 {
19235 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
19236 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
19237 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019238 local_pAllocator = nullptr;
19239 if (pAllocator)
19240 {
19241 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19242 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19243 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019244 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019245 if (local_pCreateInfo)
19246 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019247 transform_tohost_VkObjectTableCreateInfoNVX(mImpl->resources(), (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019248 }
19249 if (local_pAllocator)
19250 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019251 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019252 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019253 countingStream->rewind();
19254 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019255 uint64_t cgen_var_1282;
19256 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1282, 1);
19257 countingStream->write((uint64_t*)&cgen_var_1282, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019258 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019259 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019260 uint64_t cgen_var_1283 = (uint64_t)(uintptr_t)local_pAllocator;
19261 countingStream->putBe64(cgen_var_1283);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019262 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019263 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019264 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019265 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019266 uint64_t cgen_var_1284;
19267 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1284, 1);
19268 countingStream->write((uint64_t*)&cgen_var_1284, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019269 }
19270 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19271 countingStream->rewind();
19272 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
19273 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
19274 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019275 uint64_t cgen_var_1285;
19276 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1285, 1);
19277 stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019278 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019279 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019280 uint64_t cgen_var_1286 = (uint64_t)(uintptr_t)local_pAllocator;
19281 stream->putBe64(cgen_var_1286);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019282 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019283 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019284 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019285 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019286 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019287 uint64_t cgen_var_1287;
19288 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1287, 1);
19289 stream->write((uint64_t*)&cgen_var_1287, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019290 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019291 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080019292 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019293 uint64_t cgen_var_1288;
19294 stream->read((uint64_t*)&cgen_var_1288, 8);
19295 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1288, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019296 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019297 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019298 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
19299 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019300 countingStream->clearPool();
19301 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019302 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019303 mImpl->log("finish vkCreateObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019304 return vkCreateObjectTableNVX_VkResult_return;
19305}
19306
19307void VkEncoder::vkDestroyObjectTableNVX(
19308 VkDevice device,
19309 VkObjectTableNVX objectTable,
19310 const VkAllocationCallbacks* pAllocator)
19311{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019312 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019313 mImpl->log("start vkDestroyObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019314 auto stream = mImpl->stream();
19315 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019316 auto resources = mImpl->resources();
19317 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019318 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019319 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019320 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019321 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019322 local_device = device;
19323 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019324 local_pAllocator = nullptr;
19325 if (pAllocator)
19326 {
19327 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19328 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19329 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019330 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019331 if (local_pAllocator)
19332 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019333 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019334 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019335 countingStream->rewind();
19336 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019337 uint64_t cgen_var_1289;
19338 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
19339 countingStream->write((uint64_t*)&cgen_var_1289, 1 * 8);
19340 uint64_t cgen_var_1290;
19341 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1290, 1);
19342 countingStream->write((uint64_t*)&cgen_var_1290, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019343 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019344 uint64_t cgen_var_1291 = (uint64_t)(uintptr_t)local_pAllocator;
19345 countingStream->putBe64(cgen_var_1291);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019346 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019347 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019348 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019349 }
19350 }
19351 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19352 countingStream->rewind();
19353 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
19354 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
19355 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019356 uint64_t cgen_var_1292;
19357 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1292, 1);
19358 stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
19359 uint64_t cgen_var_1293;
19360 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1293, 1);
19361 stream->write((uint64_t*)&cgen_var_1293, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019362 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019363 uint64_t cgen_var_1294 = (uint64_t)(uintptr_t)local_pAllocator;
19364 stream->putBe64(cgen_var_1294);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019365 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019366 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019367 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019368 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019369 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX readParams");
19370 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019371 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019372 mImpl->log("finish vkDestroyObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019373}
19374
19375VkResult VkEncoder::vkRegisterObjectsNVX(
19376 VkDevice device,
19377 VkObjectTableNVX objectTable,
19378 uint32_t objectCount,
19379 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
19380 const uint32_t* pObjectIndices)
19381{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019382 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019383 mImpl->log("start vkRegisterObjectsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019384 auto stream = mImpl->stream();
19385 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019386 auto resources = mImpl->resources();
19387 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019388 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019389 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019390 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019391 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019392 VkObjectTableEntryNVX** local_ppObjectTableEntries;
19393 uint32_t* local_pObjectIndices;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019394 local_device = device;
19395 local_objectTable = objectTable;
19396 local_objectCount = objectCount;
19397 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019398 local_pObjectIndices = nullptr;
19399 if (pObjectIndices)
19400 {
19401 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
19402 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019403 (void)local_ppObjectTableEntries;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019404 countingStream->rewind();
19405 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019406 uint64_t cgen_var_1295;
19407 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1295, 1);
19408 countingStream->write((uint64_t*)&cgen_var_1295, 1 * 8);
19409 uint64_t cgen_var_1296;
19410 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1296, 1);
19411 countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019412 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080019413 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019414 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019415 }
19416 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19417 countingStream->rewind();
19418 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
19419 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
19420 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019421 uint64_t cgen_var_1297;
19422 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1297, 1);
19423 stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
19424 uint64_t cgen_var_1298;
19425 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1298, 1);
19426 stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019427 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080019428 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019429 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019430 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX readParams");
19431 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019432 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
19433 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019434 countingStream->clearPool();
19435 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019436 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019437 mImpl->log("finish vkRegisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019438 return vkRegisterObjectsNVX_VkResult_return;
19439}
19440
19441VkResult VkEncoder::vkUnregisterObjectsNVX(
19442 VkDevice device,
19443 VkObjectTableNVX objectTable,
19444 uint32_t objectCount,
19445 const VkObjectEntryTypeNVX* pObjectEntryTypes,
19446 const uint32_t* pObjectIndices)
19447{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019448 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019449 mImpl->log("start vkUnregisterObjectsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019450 auto stream = mImpl->stream();
19451 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019452 auto resources = mImpl->resources();
19453 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019454 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019455 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019456 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019457 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019458 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019459 uint32_t* local_pObjectIndices;
19460 local_device = device;
19461 local_objectTable = objectTable;
19462 local_objectCount = objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019463 local_pObjectEntryTypes = nullptr;
19464 if (pObjectEntryTypes)
19465 {
19466 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
19467 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019468 local_pObjectIndices = nullptr;
19469 if (pObjectIndices)
19470 {
19471 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
19472 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019473 countingStream->rewind();
19474 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019475 uint64_t cgen_var_1299;
19476 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1299, 1);
19477 countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8);
19478 uint64_t cgen_var_1300;
19479 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1300, 1);
19480 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019481 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
19482 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
19483 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019484 }
19485 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19486 countingStream->rewind();
19487 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
19488 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
19489 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019490 uint64_t cgen_var_1301;
19491 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1301, 1);
19492 stream->write((uint64_t*)&cgen_var_1301, 1 * 8);
19493 uint64_t cgen_var_1302;
19494 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1302, 1);
19495 stream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019496 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
19497 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
19498 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019499 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX readParams");
19500 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019501 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
19502 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019503 countingStream->clearPool();
19504 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019505 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019506 mImpl->log("finish vkUnregisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019507 return vkUnregisterObjectsNVX_VkResult_return;
19508}
19509
19510void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
19511 VkPhysicalDevice physicalDevice,
19512 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
19513 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
19514{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019515 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019516 mImpl->log("start vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019517 auto stream = mImpl->stream();
19518 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019519 auto resources = mImpl->resources();
19520 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019521 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019522 VkPhysicalDevice local_physicalDevice;
19523 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019524 countingStream->rewind();
19525 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019526 uint64_t cgen_var_1303;
19527 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1303, 1);
19528 countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019529 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
19530 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
19531 }
19532 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19533 countingStream->rewind();
19534 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
19535 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
19536 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019537 uint64_t cgen_var_1304;
19538 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1304, 1);
19539 stream->write((uint64_t*)&cgen_var_1304, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019540 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
19541 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019542 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019543 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019544 if (pFeatures)
19545 {
19546 transform_fromhost_VkDeviceGeneratedCommandsFeaturesNVX(mImpl->resources(), (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
19547 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019548 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019549 if (pLimits)
19550 {
19551 transform_fromhost_VkDeviceGeneratedCommandsLimitsNVX(mImpl->resources(), (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
19552 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019553 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019554 mImpl->log("finish vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019555}
19556
19557#endif
19558#ifdef VK_NV_clip_space_w_scaling
19559void VkEncoder::vkCmdSetViewportWScalingNV(
19560 VkCommandBuffer commandBuffer,
19561 uint32_t firstViewport,
19562 uint32_t viewportCount,
19563 const VkViewportWScalingNV* pViewportWScalings)
19564{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019565 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019566 mImpl->log("start vkCmdSetViewportWScalingNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019567 auto stream = mImpl->stream();
19568 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019569 auto resources = mImpl->resources();
19570 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019571 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019572 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019573 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019574 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019575 VkViewportWScalingNV* local_pViewportWScalings;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019576 local_commandBuffer = commandBuffer;
19577 local_firstViewport = firstViewport;
19578 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019579 local_pViewportWScalings = nullptr;
19580 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019581 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019582 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019583 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19584 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019585 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
19586 }
19587 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019588 if (local_pViewportWScalings)
19589 {
19590 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19591 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019592 transform_tohost_VkViewportWScalingNV(mImpl->resources(), (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019593 }
19594 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019595 countingStream->rewind();
19596 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019597 uint64_t cgen_var_1305;
19598 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1305, 1);
19599 countingStream->write((uint64_t*)&cgen_var_1305, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019600 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
19601 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
19602 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19603 {
19604 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019605 }
19606 }
19607 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19608 countingStream->rewind();
19609 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
19610 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
19611 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019612 uint64_t cgen_var_1306;
19613 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1306, 1);
19614 stream->write((uint64_t*)&cgen_var_1306, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019615 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
19616 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019617 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19618 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019619 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019620 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019621 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV readParams");
19622 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019623 mImpl->log("finish vkCmdSetViewportWScalingNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019624}
19625
19626#endif
19627#ifdef VK_EXT_direct_mode_display
19628VkResult VkEncoder::vkReleaseDisplayEXT(
19629 VkPhysicalDevice physicalDevice,
19630 VkDisplayKHR display)
19631{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019632 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019633 mImpl->log("start vkReleaseDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019634 auto stream = mImpl->stream();
19635 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019636 auto resources = mImpl->resources();
19637 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019638 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019639 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019640 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019641 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019642 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019643 countingStream->rewind();
19644 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019645 uint64_t cgen_var_1307;
19646 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1307, 1);
19647 countingStream->write((uint64_t*)&cgen_var_1307, 1 * 8);
19648 uint64_t cgen_var_1308;
19649 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1308, 1);
19650 countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019651 }
19652 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19653 countingStream->rewind();
19654 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
19655 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
19656 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019657 uint64_t cgen_var_1309;
19658 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1309, 1);
19659 stream->write((uint64_t*)&cgen_var_1309, 1 * 8);
19660 uint64_t cgen_var_1310;
19661 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1310, 1);
19662 stream->write((uint64_t*)&cgen_var_1310, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019663 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT readParams");
19664 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019665 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
19666 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019667 countingStream->clearPool();
19668 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019669 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019670 mImpl->log("finish vkReleaseDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019671 return vkReleaseDisplayEXT_VkResult_return;
19672}
19673
19674#endif
19675#ifdef VK_EXT_acquire_xlib_display
19676VkResult VkEncoder::vkAcquireXlibDisplayEXT(
19677 VkPhysicalDevice physicalDevice,
19678 Display* dpy,
19679 VkDisplayKHR display)
19680{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019681 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019682 mImpl->log("start vkAcquireXlibDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019683 auto stream = mImpl->stream();
19684 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019685 auto resources = mImpl->resources();
19686 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019687 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019688 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019689 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019690 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019691 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019692 countingStream->rewind();
19693 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019694 uint64_t cgen_var_1311;
19695 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1311, 1);
19696 countingStream->write((uint64_t*)&cgen_var_1311, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019697 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019698 uint64_t cgen_var_1312;
19699 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1312, 1);
19700 countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019701 }
19702 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19703 countingStream->rewind();
19704 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
19705 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
19706 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019707 uint64_t cgen_var_1313;
19708 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1313, 1);
19709 stream->write((uint64_t*)&cgen_var_1313, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019710 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019711 uint64_t cgen_var_1314;
19712 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1314, 1);
19713 stream->write((uint64_t*)&cgen_var_1314, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019714 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019715 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019716 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019717 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
19718 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019719 countingStream->clearPool();
19720 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019721 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019722 mImpl->log("finish vkAcquireXlibDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019723 return vkAcquireXlibDisplayEXT_VkResult_return;
19724}
19725
19726VkResult VkEncoder::vkGetRandROutputDisplayEXT(
19727 VkPhysicalDevice physicalDevice,
19728 Display* dpy,
19729 RROutput rrOutput,
19730 VkDisplayKHR* pDisplay)
19731{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019732 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019733 mImpl->log("start vkGetRandROutputDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019734 auto stream = mImpl->stream();
19735 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019736 auto resources = mImpl->resources();
19737 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019738 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019739 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019740 RROutput local_rrOutput;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019741 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019742 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019743 countingStream->rewind();
19744 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019745 uint64_t cgen_var_1315;
19746 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1315, 1);
19747 countingStream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019748 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019749 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019750 uint64_t cgen_var_1316;
19751 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1316, 1);
19752 countingStream->write((uint64_t*)&cgen_var_1316, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019753 }
19754 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19755 countingStream->rewind();
19756 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
19757 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
19758 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019759 uint64_t cgen_var_1317;
19760 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1317, 1);
19761 stream->write((uint64_t*)&cgen_var_1317, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019762 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019763 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080019764 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019765 uint64_t cgen_var_1318;
19766 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1318, 1);
19767 stream->write((uint64_t*)&cgen_var_1318, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019768 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019769 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019770 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019771 uint64_t cgen_var_1319;
19772 stream->read((uint64_t*)&cgen_var_1319, 8);
19773 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1319, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019774 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019775 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
19776 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019777 countingStream->clearPool();
19778 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019779 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019780 mImpl->log("finish vkGetRandROutputDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019781 return vkGetRandROutputDisplayEXT_VkResult_return;
19782}
19783
19784#endif
19785#ifdef VK_EXT_display_surface_counter
19786VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
19787 VkPhysicalDevice physicalDevice,
19788 VkSurfaceKHR surface,
19789 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
19790{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019791 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019792 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019793 auto stream = mImpl->stream();
19794 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019795 auto resources = mImpl->resources();
19796 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019797 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019798 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019799 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019800 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019801 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019802 countingStream->rewind();
19803 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019804 uint64_t cgen_var_1320;
19805 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1320, 1);
19806 countingStream->write((uint64_t*)&cgen_var_1320, 1 * 8);
19807 uint64_t cgen_var_1321;
19808 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1321, 1);
19809 countingStream->write((uint64_t*)&cgen_var_1321, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019810 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
19811 }
19812 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19813 countingStream->rewind();
19814 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
19815 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
19816 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019817 uint64_t cgen_var_1322;
19818 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1322, 1);
19819 stream->write((uint64_t*)&cgen_var_1322, 1 * 8);
19820 uint64_t cgen_var_1323;
19821 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1323, 1);
19822 stream->write((uint64_t*)&cgen_var_1323, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019823 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019824 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019825 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019826 if (pSurfaceCapabilities)
19827 {
19828 transform_fromhost_VkSurfaceCapabilities2EXT(mImpl->resources(), (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
19829 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019830 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019831 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
19832 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019833 countingStream->clearPool();
19834 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019835 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019836 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2EXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019837 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
19838}
19839
19840#endif
19841#ifdef VK_EXT_display_control
19842VkResult VkEncoder::vkDisplayPowerControlEXT(
19843 VkDevice device,
19844 VkDisplayKHR display,
19845 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
19846{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019847 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019848 mImpl->log("start vkDisplayPowerControlEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019849 auto stream = mImpl->stream();
19850 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019851 auto resources = mImpl->resources();
19852 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019853 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019854 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019855 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019856 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019857 local_device = device;
19858 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019859 local_pDisplayPowerInfo = nullptr;
19860 if (pDisplayPowerInfo)
19861 {
19862 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
19863 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
19864 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019865 if (local_pDisplayPowerInfo)
19866 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019867 transform_tohost_VkDisplayPowerInfoEXT(mImpl->resources(), (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019868 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019869 countingStream->rewind();
19870 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019871 uint64_t cgen_var_1324;
19872 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1324, 1);
19873 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
19874 uint64_t cgen_var_1325;
19875 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1325, 1);
19876 countingStream->write((uint64_t*)&cgen_var_1325, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019877 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019878 }
19879 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19880 countingStream->rewind();
19881 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
19882 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
19883 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019884 uint64_t cgen_var_1326;
19885 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1326, 1);
19886 stream->write((uint64_t*)&cgen_var_1326, 1 * 8);
19887 uint64_t cgen_var_1327;
19888 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1327, 1);
19889 stream->write((uint64_t*)&cgen_var_1327, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019890 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019891 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT readParams");
19892 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019893 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
19894 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019895 countingStream->clearPool();
19896 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019897 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019898 mImpl->log("finish vkDisplayPowerControlEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019899 return vkDisplayPowerControlEXT_VkResult_return;
19900}
19901
19902VkResult VkEncoder::vkRegisterDeviceEventEXT(
19903 VkDevice device,
19904 const VkDeviceEventInfoEXT* pDeviceEventInfo,
19905 const VkAllocationCallbacks* pAllocator,
19906 VkFence* pFence)
19907{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019908 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019909 mImpl->log("start vkRegisterDeviceEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019910 auto stream = mImpl->stream();
19911 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019912 auto resources = mImpl->resources();
19913 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019914 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019915 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019916 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019917 VkAllocationCallbacks* local_pAllocator;
19918 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019919 local_pDeviceEventInfo = nullptr;
19920 if (pDeviceEventInfo)
19921 {
19922 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
19923 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
19924 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019925 local_pAllocator = nullptr;
19926 if (pAllocator)
19927 {
19928 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19929 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19930 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019931 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019932 if (local_pDeviceEventInfo)
19933 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019934 transform_tohost_VkDeviceEventInfoEXT(mImpl->resources(), (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019935 }
19936 if (local_pAllocator)
19937 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019938 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019939 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019940 countingStream->rewind();
19941 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019942 uint64_t cgen_var_1328;
19943 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1328, 1);
19944 countingStream->write((uint64_t*)&cgen_var_1328, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019945 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019946 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019947 uint64_t cgen_var_1329 = (uint64_t)(uintptr_t)local_pAllocator;
19948 countingStream->putBe64(cgen_var_1329);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019949 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019950 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019951 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019952 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019953 uint64_t cgen_var_1330;
19954 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1330, 1);
19955 countingStream->write((uint64_t*)&cgen_var_1330, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019956 }
19957 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19958 countingStream->rewind();
19959 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
19960 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
19961 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019962 uint64_t cgen_var_1331;
19963 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1331, 1);
19964 stream->write((uint64_t*)&cgen_var_1331, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019965 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019966 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019967 uint64_t cgen_var_1332 = (uint64_t)(uintptr_t)local_pAllocator;
19968 stream->putBe64(cgen_var_1332);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019969 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019970 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019971 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019972 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019973 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019974 uint64_t cgen_var_1333;
19975 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1333, 1);
19976 stream->write((uint64_t*)&cgen_var_1333, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019977 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019978 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080019979 uint64_t cgen_var_1334;
19980 stream->read((uint64_t*)&cgen_var_1334, 8);
19981 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1334, (VkFence*)pFence, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019982 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019983 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
19984 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019985 countingStream->clearPool();
19986 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019987 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019988 mImpl->log("finish vkRegisterDeviceEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019989 return vkRegisterDeviceEventEXT_VkResult_return;
19990}
19991
19992VkResult VkEncoder::vkRegisterDisplayEventEXT(
19993 VkDevice device,
19994 VkDisplayKHR display,
19995 const VkDisplayEventInfoEXT* pDisplayEventInfo,
19996 const VkAllocationCallbacks* pAllocator,
19997 VkFence* pFence)
19998{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019999 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020000 mImpl->log("start vkRegisterDisplayEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020001 auto stream = mImpl->stream();
20002 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020003 auto resources = mImpl->resources();
20004 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020005 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020006 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020007 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020008 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020009 VkAllocationCallbacks* local_pAllocator;
20010 local_device = device;
20011 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020012 local_pDisplayEventInfo = nullptr;
20013 if (pDisplayEventInfo)
20014 {
20015 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
20016 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
20017 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020018 local_pAllocator = nullptr;
20019 if (pAllocator)
20020 {
20021 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20022 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20023 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020024 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020025 if (local_pDisplayEventInfo)
20026 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020027 transform_tohost_VkDisplayEventInfoEXT(mImpl->resources(), (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020028 }
20029 if (local_pAllocator)
20030 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020031 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020032 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020033 countingStream->rewind();
20034 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020035 uint64_t cgen_var_1335;
20036 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1335, 1);
20037 countingStream->write((uint64_t*)&cgen_var_1335, 1 * 8);
20038 uint64_t cgen_var_1336;
20039 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1336, 1);
20040 countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020041 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020042 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020043 uint64_t cgen_var_1337 = (uint64_t)(uintptr_t)local_pAllocator;
20044 countingStream->putBe64(cgen_var_1337);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020045 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020046 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020047 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020048 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020049 uint64_t cgen_var_1338;
20050 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1338, 1);
20051 countingStream->write((uint64_t*)&cgen_var_1338, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020052 }
20053 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20054 countingStream->rewind();
20055 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
20056 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
20057 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020058 uint64_t cgen_var_1339;
20059 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1339, 1);
20060 stream->write((uint64_t*)&cgen_var_1339, 1 * 8);
20061 uint64_t cgen_var_1340;
20062 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1340, 1);
20063 stream->write((uint64_t*)&cgen_var_1340, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020064 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020065 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020066 uint64_t cgen_var_1341 = (uint64_t)(uintptr_t)local_pAllocator;
20067 stream->putBe64(cgen_var_1341);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020068 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020069 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020070 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020071 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020072 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020073 uint64_t cgen_var_1342;
20074 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1342, 1);
20075 stream->write((uint64_t*)&cgen_var_1342, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020076 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020077 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020078 uint64_t cgen_var_1343;
20079 stream->read((uint64_t*)&cgen_var_1343, 8);
20080 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1343, (VkFence*)pFence, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020081 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020082 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
20083 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020084 countingStream->clearPool();
20085 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020086 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020087 mImpl->log("finish vkRegisterDisplayEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020088 return vkRegisterDisplayEventEXT_VkResult_return;
20089}
20090
20091VkResult VkEncoder::vkGetSwapchainCounterEXT(
20092 VkDevice device,
20093 VkSwapchainKHR swapchain,
20094 VkSurfaceCounterFlagBitsEXT counter,
20095 uint64_t* pCounterValue)
20096{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020097 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020098 mImpl->log("start vkGetSwapchainCounterEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020099 auto stream = mImpl->stream();
20100 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020101 auto resources = mImpl->resources();
20102 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020103 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020104 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020105 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020106 VkSurfaceCounterFlagBitsEXT local_counter;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020107 local_device = device;
20108 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020109 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020110 countingStream->rewind();
20111 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020112 uint64_t cgen_var_1344;
20113 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1344, 1);
20114 countingStream->write((uint64_t*)&cgen_var_1344, 1 * 8);
20115 uint64_t cgen_var_1345;
20116 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1345, 1);
20117 countingStream->write((uint64_t*)&cgen_var_1345, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020118 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020119 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
20120 }
20121 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20122 countingStream->rewind();
20123 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
20124 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
20125 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020126 uint64_t cgen_var_1346;
20127 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1346, 1);
20128 stream->write((uint64_t*)&cgen_var_1346, 1 * 8);
20129 uint64_t cgen_var_1347;
20130 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1347, 1);
20131 stream->write((uint64_t*)&cgen_var_1347, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020132 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020133 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020134 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020135 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020136 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020137 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
20138 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020139 countingStream->clearPool();
20140 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020141 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020142 mImpl->log("finish vkGetSwapchainCounterEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020143 return vkGetSwapchainCounterEXT_VkResult_return;
20144}
20145
20146#endif
20147#ifdef VK_GOOGLE_display_timing
20148VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
20149 VkDevice device,
20150 VkSwapchainKHR swapchain,
20151 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
20152{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020153 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020154 mImpl->log("start vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020155 auto stream = mImpl->stream();
20156 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020157 auto resources = mImpl->resources();
20158 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020159 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020160 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020161 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020162 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020163 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020164 countingStream->rewind();
20165 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020166 uint64_t cgen_var_1348;
20167 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1348, 1);
20168 countingStream->write((uint64_t*)&cgen_var_1348, 1 * 8);
20169 uint64_t cgen_var_1349;
20170 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1349, 1);
20171 countingStream->write((uint64_t*)&cgen_var_1349, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020172 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
20173 }
20174 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20175 countingStream->rewind();
20176 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
20177 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
20178 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020179 uint64_t cgen_var_1350;
20180 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1350, 1);
20181 stream->write((uint64_t*)&cgen_var_1350, 1 * 8);
20182 uint64_t cgen_var_1351;
20183 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1351, 1);
20184 stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020185 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020186 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020187 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020188 if (pDisplayTimingProperties)
20189 {
20190 transform_fromhost_VkRefreshCycleDurationGOOGLE(mImpl->resources(), (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
20191 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020192 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020193 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
20194 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020195 countingStream->clearPool();
20196 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020197 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020198 mImpl->log("finish vkGetRefreshCycleDurationGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020199 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
20200}
20201
20202VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
20203 VkDevice device,
20204 VkSwapchainKHR swapchain,
20205 uint32_t* pPresentationTimingCount,
20206 VkPastPresentationTimingGOOGLE* pPresentationTimings)
20207{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020208 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020209 mImpl->log("start vkGetPastPresentationTimingGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020210 auto stream = mImpl->stream();
20211 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020212 auto resources = mImpl->resources();
20213 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020214 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020215 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020216 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020217 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020218 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020219 countingStream->rewind();
20220 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020221 uint64_t cgen_var_1352;
20222 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1);
20223 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
20224 uint64_t cgen_var_1353;
20225 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1353, 1);
20226 countingStream->write((uint64_t*)&cgen_var_1353, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020227 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020228 uint64_t cgen_var_1354 = (uint64_t)(uintptr_t)pPresentationTimingCount;
20229 countingStream->putBe64(cgen_var_1354);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020230 if (pPresentationTimingCount)
20231 {
20232 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
20233 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020234 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020235 uint64_t cgen_var_1355 = (uint64_t)(uintptr_t)pPresentationTimings;
20236 countingStream->putBe64(cgen_var_1355);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020237 if (pPresentationTimings)
20238 {
20239 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20240 {
20241 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20242 }
20243 }
20244 }
20245 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20246 countingStream->rewind();
20247 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
20248 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
20249 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020250 uint64_t cgen_var_1356;
20251 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1356, 1);
20252 stream->write((uint64_t*)&cgen_var_1356, 1 * 8);
20253 uint64_t cgen_var_1357;
20254 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1357, 1);
20255 stream->write((uint64_t*)&cgen_var_1357, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020256 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020257 uint64_t cgen_var_1358 = (uint64_t)(uintptr_t)pPresentationTimingCount;
20258 stream->putBe64(cgen_var_1358);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020259 if (pPresentationTimingCount)
20260 {
20261 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
20262 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020263 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020264 uint64_t cgen_var_1359 = (uint64_t)(uintptr_t)pPresentationTimings;
20265 stream->putBe64(cgen_var_1359);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020266 if (pPresentationTimings)
20267 {
20268 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20269 {
20270 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20271 }
20272 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020273 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020274 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020275 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020276 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020277 if (pPresentationTimingCount)
20278 {
20279 if (!(check_pPresentationTimingCount))
20280 {
20281 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
20282 }
20283 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
20284 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020285 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020286 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020287 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020288 if (pPresentationTimings)
20289 {
20290 if (!(check_pPresentationTimings))
20291 {
20292 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
20293 }
20294 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20295 {
20296 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20297 }
20298 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080020299 if (pPresentationTimings)
20300 {
20301 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20302 {
20303 transform_fromhost_VkPastPresentationTimingGOOGLE(mImpl->resources(), (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20304 }
20305 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020306 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020307 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
20308 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020309 countingStream->clearPool();
20310 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020311 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020312 mImpl->log("finish vkGetPastPresentationTimingGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020313 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
20314}
20315
20316#endif
20317#ifdef VK_NV_sample_mask_override_coverage
20318#endif
20319#ifdef VK_NV_geometry_shader_passthrough
20320#endif
20321#ifdef VK_NV_viewport_array2
20322#endif
20323#ifdef VK_NVX_multiview_per_view_attributes
20324#endif
20325#ifdef VK_NV_viewport_swizzle
20326#endif
20327#ifdef VK_EXT_discard_rectangles
20328void VkEncoder::vkCmdSetDiscardRectangleEXT(
20329 VkCommandBuffer commandBuffer,
20330 uint32_t firstDiscardRectangle,
20331 uint32_t discardRectangleCount,
20332 const VkRect2D* pDiscardRectangles)
20333{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020334 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020335 mImpl->log("start vkCmdSetDiscardRectangleEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020336 auto stream = mImpl->stream();
20337 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020338 auto resources = mImpl->resources();
20339 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020340 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020341 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020342 uint32_t local_firstDiscardRectangle;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020343 uint32_t local_discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020344 VkRect2D* local_pDiscardRectangles;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020345 local_commandBuffer = commandBuffer;
20346 local_firstDiscardRectangle = firstDiscardRectangle;
20347 local_discardRectangleCount = discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020348 local_pDiscardRectangles = nullptr;
20349 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020350 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020351 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020352 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20353 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020354 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
20355 }
20356 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020357 if (local_pDiscardRectangles)
20358 {
20359 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20360 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020361 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020362 }
20363 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020364 countingStream->rewind();
20365 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020366 uint64_t cgen_var_1362;
20367 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1362, 1);
20368 countingStream->write((uint64_t*)&cgen_var_1362, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020369 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
20370 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
20371 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20372 {
20373 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020374 }
20375 }
20376 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20377 countingStream->rewind();
20378 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
20379 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
20380 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020381 uint64_t cgen_var_1363;
20382 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1363, 1);
20383 stream->write((uint64_t*)&cgen_var_1363, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020384 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
20385 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020386 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20387 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020388 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020389 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020390 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT readParams");
20391 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020392 mImpl->log("finish vkCmdSetDiscardRectangleEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020393}
20394
20395#endif
20396#ifdef VK_EXT_conservative_rasterization
20397#endif
20398#ifdef VK_EXT_swapchain_colorspace
20399#endif
20400#ifdef VK_EXT_hdr_metadata
20401void VkEncoder::vkSetHdrMetadataEXT(
20402 VkDevice device,
20403 uint32_t swapchainCount,
20404 const VkSwapchainKHR* pSwapchains,
20405 const VkHdrMetadataEXT* pMetadata)
20406{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020407 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020408 mImpl->log("start vkSetHdrMetadataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020409 auto stream = mImpl->stream();
20410 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020411 auto resources = mImpl->resources();
20412 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020413 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020414 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020415 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020416 VkSwapchainKHR* local_pSwapchains;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020417 VkHdrMetadataEXT* local_pMetadata;
20418 local_device = device;
20419 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020420 local_pSwapchains = nullptr;
20421 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020422 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020423 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
20424 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020425 local_pMetadata = nullptr;
20426 if (pMetadata)
20427 {
20428 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020429 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20430 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020431 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
20432 }
20433 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020434 if (local_pMetadata)
20435 {
20436 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20437 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020438 transform_tohost_VkHdrMetadataEXT(mImpl->resources(), (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020439 }
20440 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020441 countingStream->rewind();
20442 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020443 uint64_t cgen_var_1364;
20444 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1364, 1);
20445 countingStream->write((uint64_t*)&cgen_var_1364, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020446 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020447 if (((swapchainCount)))
20448 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020449 uint64_t* cgen_var_1365;
20450 countingStream->alloc((void**)&cgen_var_1365, ((swapchainCount)) * 8);
20451 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1365, ((swapchainCount)));
20452 countingStream->write((uint64_t*)cgen_var_1365, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020453 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020454 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20455 {
20456 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020457 }
20458 }
20459 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20460 countingStream->rewind();
20461 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
20462 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
20463 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020464 uint64_t cgen_var_1366;
20465 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1366, 1);
20466 stream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020467 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020468 if (((swapchainCount)))
20469 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020470 uint64_t* cgen_var_1367;
20471 stream->alloc((void**)&cgen_var_1367, ((swapchainCount)) * 8);
20472 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1367, ((swapchainCount)));
20473 stream->write((uint64_t*)cgen_var_1367, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020474 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020475 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20476 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020477 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020478 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020479 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT readParams");
20480 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020481 mImpl->log("finish vkSetHdrMetadataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020482}
20483
20484#endif
20485#ifdef VK_MVK_ios_surface
20486VkResult VkEncoder::vkCreateIOSSurfaceMVK(
20487 VkInstance instance,
20488 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
20489 const VkAllocationCallbacks* pAllocator,
20490 VkSurfaceKHR* pSurface)
20491{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020492 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020493 mImpl->log("start vkCreateIOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020494 auto stream = mImpl->stream();
20495 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020496 auto resources = mImpl->resources();
20497 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020498 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020499 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020500 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020501 VkAllocationCallbacks* local_pAllocator;
20502 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020503 local_pCreateInfo = nullptr;
20504 if (pCreateInfo)
20505 {
20506 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
20507 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20508 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020509 local_pAllocator = nullptr;
20510 if (pAllocator)
20511 {
20512 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20513 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20514 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020515 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020516 if (local_pCreateInfo)
20517 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020518 transform_tohost_VkIOSSurfaceCreateInfoMVK(mImpl->resources(), (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020519 }
20520 if (local_pAllocator)
20521 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020522 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020523 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020524 countingStream->rewind();
20525 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020526 uint64_t cgen_var_1368;
20527 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1368, 1);
20528 countingStream->write((uint64_t*)&cgen_var_1368, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020529 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020530 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020531 uint64_t cgen_var_1369 = (uint64_t)(uintptr_t)local_pAllocator;
20532 countingStream->putBe64(cgen_var_1369);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020533 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020534 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020535 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020536 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020537 uint64_t cgen_var_1370;
20538 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1370, 1);
20539 countingStream->write((uint64_t*)&cgen_var_1370, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020540 }
20541 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20542 countingStream->rewind();
20543 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
20544 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
20545 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020546 uint64_t cgen_var_1371;
20547 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1371, 1);
20548 stream->write((uint64_t*)&cgen_var_1371, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020549 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020550 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020551 uint64_t cgen_var_1372 = (uint64_t)(uintptr_t)local_pAllocator;
20552 stream->putBe64(cgen_var_1372);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020553 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020554 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020555 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020556 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020557 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020558 uint64_t cgen_var_1373;
20559 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1373, 1);
20560 stream->write((uint64_t*)&cgen_var_1373, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020561 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020562 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020563 uint64_t cgen_var_1374;
20564 stream->read((uint64_t*)&cgen_var_1374, 8);
20565 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1374, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020566 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020567 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
20568 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020569 countingStream->clearPool();
20570 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020571 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020572 mImpl->log("finish vkCreateIOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020573 return vkCreateIOSSurfaceMVK_VkResult_return;
20574}
20575
20576#endif
20577#ifdef VK_MVK_macos_surface
20578VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
20579 VkInstance instance,
20580 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
20581 const VkAllocationCallbacks* pAllocator,
20582 VkSurfaceKHR* pSurface)
20583{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020584 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020585 mImpl->log("start vkCreateMacOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020586 auto stream = mImpl->stream();
20587 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020588 auto resources = mImpl->resources();
20589 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020590 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020591 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020592 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020593 VkAllocationCallbacks* local_pAllocator;
20594 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020595 local_pCreateInfo = nullptr;
20596 if (pCreateInfo)
20597 {
20598 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
20599 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20600 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020601 local_pAllocator = nullptr;
20602 if (pAllocator)
20603 {
20604 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20605 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20606 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020607 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020608 if (local_pCreateInfo)
20609 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020610 transform_tohost_VkMacOSSurfaceCreateInfoMVK(mImpl->resources(), (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020611 }
20612 if (local_pAllocator)
20613 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020614 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020615 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020616 countingStream->rewind();
20617 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020618 uint64_t cgen_var_1375;
20619 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1375, 1);
20620 countingStream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020621 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020622 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020623 uint64_t cgen_var_1376 = (uint64_t)(uintptr_t)local_pAllocator;
20624 countingStream->putBe64(cgen_var_1376);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020625 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020626 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020627 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020628 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020629 uint64_t cgen_var_1377;
20630 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1377, 1);
20631 countingStream->write((uint64_t*)&cgen_var_1377, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020632 }
20633 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20634 countingStream->rewind();
20635 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
20636 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
20637 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020638 uint64_t cgen_var_1378;
20639 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1378, 1);
20640 stream->write((uint64_t*)&cgen_var_1378, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020641 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020642 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020643 uint64_t cgen_var_1379 = (uint64_t)(uintptr_t)local_pAllocator;
20644 stream->putBe64(cgen_var_1379);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020645 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020646 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020647 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020648 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020649 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020650 uint64_t cgen_var_1380;
20651 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1380, 1);
20652 stream->write((uint64_t*)&cgen_var_1380, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020653 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020654 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020655 uint64_t cgen_var_1381;
20656 stream->read((uint64_t*)&cgen_var_1381, 8);
20657 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1381, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020658 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020659 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
20660 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020661 countingStream->clearPool();
20662 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020663 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020664 mImpl->log("finish vkCreateMacOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020665 return vkCreateMacOSSurfaceMVK_VkResult_return;
20666}
20667
20668#endif
20669#ifdef VK_EXT_external_memory_dma_buf
20670#endif
20671#ifdef VK_EXT_queue_family_foreign
20672#endif
20673#ifdef VK_EXT_debug_utils
20674VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
20675 VkDevice device,
20676 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
20677{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020678 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020679 mImpl->log("start vkSetDebugUtilsObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020680 auto stream = mImpl->stream();
20681 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020682 auto resources = mImpl->resources();
20683 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020684 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020685 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020686 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020687 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020688 local_pNameInfo = nullptr;
20689 if (pNameInfo)
20690 {
20691 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
20692 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
20693 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020694 if (local_pNameInfo)
20695 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020696 transform_tohost_VkDebugUtilsObjectNameInfoEXT(mImpl->resources(), (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020697 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020698 countingStream->rewind();
20699 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020700 uint64_t cgen_var_1382;
20701 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1382, 1);
20702 countingStream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020703 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020704 }
20705 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20706 countingStream->rewind();
20707 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
20708 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
20709 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020710 uint64_t cgen_var_1383;
20711 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1383, 1);
20712 stream->write((uint64_t*)&cgen_var_1383, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020713 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020714 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT readParams");
20715 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020716 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
20717 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020718 countingStream->clearPool();
20719 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020720 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020721 mImpl->log("finish vkSetDebugUtilsObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020722 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
20723}
20724
20725VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
20726 VkDevice device,
20727 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
20728{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020729 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020730 mImpl->log("start vkSetDebugUtilsObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020731 auto stream = mImpl->stream();
20732 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020733 auto resources = mImpl->resources();
20734 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020735 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020736 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020737 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020738 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020739 local_pTagInfo = nullptr;
20740 if (pTagInfo)
20741 {
20742 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
20743 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
20744 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020745 if (local_pTagInfo)
20746 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020747 transform_tohost_VkDebugUtilsObjectTagInfoEXT(mImpl->resources(), (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020748 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020749 countingStream->rewind();
20750 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020751 uint64_t cgen_var_1384;
20752 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1384, 1);
20753 countingStream->write((uint64_t*)&cgen_var_1384, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020754 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020755 }
20756 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20757 countingStream->rewind();
20758 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
20759 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
20760 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020761 uint64_t cgen_var_1385;
20762 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1385, 1);
20763 stream->write((uint64_t*)&cgen_var_1385, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020764 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020765 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT readParams");
20766 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020767 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
20768 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020769 countingStream->clearPool();
20770 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020771 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020772 mImpl->log("finish vkSetDebugUtilsObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020773 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
20774}
20775
20776void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
20777 VkQueue queue,
20778 const VkDebugUtilsLabelEXT* pLabelInfo)
20779{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020780 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020781 mImpl->log("start vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020782 auto stream = mImpl->stream();
20783 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020784 auto resources = mImpl->resources();
20785 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020786 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020787 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020788 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020789 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020790 local_pLabelInfo = nullptr;
20791 if (pLabelInfo)
20792 {
20793 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20794 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20795 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020796 if (local_pLabelInfo)
20797 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020798 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020799 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020800 countingStream->rewind();
20801 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020802 uint64_t cgen_var_1386;
20803 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1386, 1);
20804 countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020805 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020806 }
20807 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20808 countingStream->rewind();
20809 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
20810 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
20811 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020812 uint64_t cgen_var_1387;
20813 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1387, 1);
20814 stream->write((uint64_t*)&cgen_var_1387, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020815 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020816 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT readParams");
20817 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020818 mImpl->log("finish vkQueueBeginDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020819}
20820
20821void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
20822 VkQueue queue)
20823{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020824 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020825 mImpl->log("start vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020826 auto stream = mImpl->stream();
20827 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020828 auto resources = mImpl->resources();
20829 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020830 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020831 VkQueue local_queue;
20832 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020833 countingStream->rewind();
20834 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020835 uint64_t cgen_var_1388;
20836 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1388, 1);
20837 countingStream->write((uint64_t*)&cgen_var_1388, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020838 }
20839 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20840 countingStream->rewind();
20841 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
20842 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
20843 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020844 uint64_t cgen_var_1389;
20845 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1389, 1);
20846 stream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020847 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT readParams");
20848 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020849 mImpl->log("finish vkQueueEndDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020850}
20851
20852void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
20853 VkQueue queue,
20854 const VkDebugUtilsLabelEXT* pLabelInfo)
20855{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020856 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020857 mImpl->log("start vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020858 auto stream = mImpl->stream();
20859 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020860 auto resources = mImpl->resources();
20861 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020862 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020863 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020864 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020865 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020866 local_pLabelInfo = nullptr;
20867 if (pLabelInfo)
20868 {
20869 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20870 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20871 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020872 if (local_pLabelInfo)
20873 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020874 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020875 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020876 countingStream->rewind();
20877 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020878 uint64_t cgen_var_1390;
20879 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1390, 1);
20880 countingStream->write((uint64_t*)&cgen_var_1390, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020881 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020882 }
20883 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20884 countingStream->rewind();
20885 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
20886 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
20887 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020888 uint64_t cgen_var_1391;
20889 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1391, 1);
20890 stream->write((uint64_t*)&cgen_var_1391, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020891 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020892 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT readParams");
20893 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020894 mImpl->log("finish vkQueueInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020895}
20896
20897void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
20898 VkCommandBuffer commandBuffer,
20899 const VkDebugUtilsLabelEXT* pLabelInfo)
20900{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020901 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020902 mImpl->log("start vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020903 auto stream = mImpl->stream();
20904 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020905 auto resources = mImpl->resources();
20906 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020907 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020908 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020909 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020910 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020911 local_pLabelInfo = nullptr;
20912 if (pLabelInfo)
20913 {
20914 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20915 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20916 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020917 if (local_pLabelInfo)
20918 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020919 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020920 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020921 countingStream->rewind();
20922 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020923 uint64_t cgen_var_1392;
20924 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1392, 1);
20925 countingStream->write((uint64_t*)&cgen_var_1392, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020926 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020927 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020928 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20929 countingStream->rewind();
20930 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
20931 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
20932 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020933 uint64_t cgen_var_1393;
20934 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1393, 1);
20935 stream->write((uint64_t*)&cgen_var_1393, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020936 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020937 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT readParams");
20938 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020939 mImpl->log("finish vkCmdBeginDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020940}
20941
20942void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
20943 VkCommandBuffer commandBuffer)
20944{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020945 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020946 mImpl->log("start vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020947 auto stream = mImpl->stream();
20948 auto countingStream = mImpl->countingStream();
20949 auto resources = mImpl->resources();
20950 auto pool = mImpl->pool();
20951 stream->setHandleMapping(resources->unwrapMapping());
20952 VkCommandBuffer local_commandBuffer;
20953 local_commandBuffer = commandBuffer;
20954 countingStream->rewind();
20955 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020956 uint64_t cgen_var_1394;
20957 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1394, 1);
20958 countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020959 }
20960 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20961 countingStream->rewind();
20962 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
20963 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
20964 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020965 uint64_t cgen_var_1395;
20966 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1395, 1);
20967 stream->write((uint64_t*)&cgen_var_1395, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020968 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT readParams");
20969 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020970 mImpl->log("finish vkCmdEndDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020971}
20972
20973void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
20974 VkCommandBuffer commandBuffer,
20975 const VkDebugUtilsLabelEXT* pLabelInfo)
20976{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020977 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020978 mImpl->log("start vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020979 auto stream = mImpl->stream();
20980 auto countingStream = mImpl->countingStream();
20981 auto resources = mImpl->resources();
20982 auto pool = mImpl->pool();
20983 stream->setHandleMapping(resources->unwrapMapping());
20984 VkCommandBuffer local_commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020985 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020986 local_commandBuffer = commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020987 local_pLabelInfo = nullptr;
20988 if (pLabelInfo)
20989 {
20990 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20991 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20992 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020993 if (local_pLabelInfo)
20994 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020995 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020996 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020997 countingStream->rewind();
20998 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080020999 uint64_t cgen_var_1396;
21000 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1396, 1);
21001 countingStream->write((uint64_t*)&cgen_var_1396, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080021002 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
21003 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021004 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21005 countingStream->rewind();
21006 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
21007 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
21008 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021009 uint64_t cgen_var_1397;
21010 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1397, 1);
21011 stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021012 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021013 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT readParams");
21014 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021015 mImpl->log("finish vkCmdInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021016}
21017
21018VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
21019 VkInstance instance,
21020 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
21021 const VkAllocationCallbacks* pAllocator,
21022 VkDebugUtilsMessengerEXT* pMessenger)
21023{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021024 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021025 mImpl->log("start vkCreateDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021026 auto stream = mImpl->stream();
21027 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021028 auto resources = mImpl->resources();
21029 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021030 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021031 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021032 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021033 VkAllocationCallbacks* local_pAllocator;
21034 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021035 local_pCreateInfo = nullptr;
21036 if (pCreateInfo)
21037 {
21038 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
21039 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
21040 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021041 local_pAllocator = nullptr;
21042 if (pAllocator)
21043 {
21044 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21045 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21046 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021047 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080021048 if (local_pCreateInfo)
21049 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021050 transform_tohost_VkDebugUtilsMessengerCreateInfoEXT(mImpl->resources(), (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021051 }
21052 if (local_pAllocator)
21053 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021054 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021055 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021056 countingStream->rewind();
21057 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021058 uint64_t cgen_var_1398;
21059 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1398, 1);
21060 countingStream->write((uint64_t*)&cgen_var_1398, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021061 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021062 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021063 uint64_t cgen_var_1399 = (uint64_t)(uintptr_t)local_pAllocator;
21064 countingStream->putBe64(cgen_var_1399);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021065 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021066 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021067 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021068 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021069 uint64_t cgen_var_1400;
21070 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1400, 1);
21071 countingStream->write((uint64_t*)&cgen_var_1400, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021072 }
21073 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21074 countingStream->rewind();
21075 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
21076 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
21077 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021078 uint64_t cgen_var_1401;
21079 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1401, 1);
21080 stream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021081 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021082 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021083 uint64_t cgen_var_1402 = (uint64_t)(uintptr_t)local_pAllocator;
21084 stream->putBe64(cgen_var_1402);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021085 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021086 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021087 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021088 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080021089 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021090 uint64_t cgen_var_1403;
21091 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1403, 1);
21092 stream->write((uint64_t*)&cgen_var_1403, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080021093 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021094 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080021095 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021096 uint64_t cgen_var_1404;
21097 stream->read((uint64_t*)&cgen_var_1404, 8);
21098 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1404, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080021099 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021100 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021101 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
21102 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021103 countingStream->clearPool();
21104 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021105 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021106 mImpl->log("finish vkCreateDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021107 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
21108}
21109
21110void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
21111 VkInstance instance,
21112 VkDebugUtilsMessengerEXT messenger,
21113 const VkAllocationCallbacks* pAllocator)
21114{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021115 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021116 mImpl->log("start vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021117 auto stream = mImpl->stream();
21118 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021119 auto resources = mImpl->resources();
21120 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021121 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021122 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021123 VkDebugUtilsMessengerEXT local_messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021124 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021125 local_instance = instance;
21126 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021127 local_pAllocator = nullptr;
21128 if (pAllocator)
21129 {
21130 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21131 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21132 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021133 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080021134 if (local_pAllocator)
21135 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021136 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021137 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021138 countingStream->rewind();
21139 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021140 uint64_t cgen_var_1405;
21141 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1405, 1);
21142 countingStream->write((uint64_t*)&cgen_var_1405, 1 * 8);
21143 uint64_t cgen_var_1406;
21144 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1406, 1);
21145 countingStream->write((uint64_t*)&cgen_var_1406, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021146 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021147 uint64_t cgen_var_1407 = (uint64_t)(uintptr_t)local_pAllocator;
21148 countingStream->putBe64(cgen_var_1407);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021149 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021150 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021151 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021152 }
21153 }
21154 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21155 countingStream->rewind();
21156 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
21157 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
21158 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021159 uint64_t cgen_var_1408;
21160 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1408, 1);
21161 stream->write((uint64_t*)&cgen_var_1408, 1 * 8);
21162 uint64_t cgen_var_1409;
21163 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1409, 1);
21164 stream->write((uint64_t*)&cgen_var_1409, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021165 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021166 uint64_t cgen_var_1410 = (uint64_t)(uintptr_t)local_pAllocator;
21167 stream->putBe64(cgen_var_1410);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021168 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021169 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021170 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021171 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021172 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT readParams");
21173 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021174 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021175 mImpl->log("finish vkDestroyDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021176}
21177
21178void VkEncoder::vkSubmitDebugUtilsMessageEXT(
21179 VkInstance instance,
21180 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
21181 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
21182 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
21183{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021184 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021185 mImpl->log("start vkSubmitDebugUtilsMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021186 auto stream = mImpl->stream();
21187 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021188 auto resources = mImpl->resources();
21189 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021190 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021191 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021192 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021193 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021194 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021195 local_instance = instance;
21196 local_messageSeverity = messageSeverity;
21197 local_messageTypes = messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021198 local_pCallbackData = nullptr;
21199 if (pCallbackData)
21200 {
21201 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
21202 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
21203 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080021204 if (local_pCallbackData)
21205 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021206 transform_tohost_VkDebugUtilsMessengerCallbackDataEXT(mImpl->resources(), (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021207 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021208 countingStream->rewind();
21209 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021210 uint64_t cgen_var_1411;
21211 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1411, 1);
21212 countingStream->write((uint64_t*)&cgen_var_1411, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021213 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
21214 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
21215 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021216 }
21217 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21218 countingStream->rewind();
21219 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
21220 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
21221 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021222 uint64_t cgen_var_1412;
21223 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1412, 1);
21224 stream->write((uint64_t*)&cgen_var_1412, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021225 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
21226 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
21227 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021228 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT readParams");
21229 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021230 mImpl->log("finish vkSubmitDebugUtilsMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021231}
21232
21233#endif
21234#ifdef VK_ANDROID_external_memory_android_hardware_buffer
21235VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
21236 VkDevice device,
21237 const AHardwareBuffer* buffer,
21238 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
21239{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021240 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021241 mImpl->log("start vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021242 auto stream = mImpl->stream();
21243 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021244 auto resources = mImpl->resources();
21245 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021246 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021247 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021248 AHardwareBuffer* local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021249 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021250 local_buffer = nullptr;
21251 if (buffer)
21252 {
21253 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
21254 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021255 countingStream->rewind();
21256 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021257 uint64_t cgen_var_1413;
21258 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1413, 1);
21259 countingStream->write((uint64_t*)&cgen_var_1413, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021260 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021261 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
21262 }
21263 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21264 countingStream->rewind();
21265 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
21266 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
21267 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021268 uint64_t cgen_var_1414;
21269 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1414, 1);
21270 stream->write((uint64_t*)&cgen_var_1414, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021271 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021272 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021273 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021274 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080021275 if (pProperties)
21276 {
21277 transform_fromhost_VkAndroidHardwareBufferPropertiesANDROID(mImpl->resources(), (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
21278 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021279 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021280 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
21281 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021282 countingStream->clearPool();
21283 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021284 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021285 mImpl->log("finish vkGetAndroidHardwareBufferPropertiesANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021286 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
21287}
21288
21289VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
21290 VkDevice device,
21291 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
21292 AHardwareBuffer** pBuffer)
21293{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021294 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021295 mImpl->log("start vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021296 auto stream = mImpl->stream();
21297 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021298 auto resources = mImpl->resources();
21299 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021300 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021301 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021302 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021303 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021304 local_pInfo = nullptr;
21305 if (pInfo)
21306 {
21307 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
21308 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
21309 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080021310 if (local_pInfo)
21311 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021312 transform_tohost_VkMemoryGetAndroidHardwareBufferInfoANDROID(mImpl->resources(), (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021313 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021314 countingStream->rewind();
21315 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021316 uint64_t cgen_var_1415;
21317 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1415, 1);
21318 countingStream->write((uint64_t*)&cgen_var_1415, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021319 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021320 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
21321 }
21322 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21323 countingStream->rewind();
21324 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
21325 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
21326 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021327 uint64_t cgen_var_1416;
21328 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1416, 1);
21329 stream->write((uint64_t*)&cgen_var_1416, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021330 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021331 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021332 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021333 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021334 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021335 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
21336 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021337 countingStream->clearPool();
21338 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021339 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021340 mImpl->log("finish vkGetMemoryAndroidHardwareBufferANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021341 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
21342}
21343
21344#endif
21345#ifdef VK_EXT_sampler_filter_minmax
21346#endif
21347#ifdef VK_AMD_gpu_shader_int16
21348#endif
21349#ifdef VK_AMD_mixed_attachment_samples
21350#endif
21351#ifdef VK_AMD_shader_fragment_mask
21352#endif
21353#ifdef VK_EXT_shader_stencil_export
21354#endif
21355#ifdef VK_EXT_sample_locations
21356void VkEncoder::vkCmdSetSampleLocationsEXT(
21357 VkCommandBuffer commandBuffer,
21358 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
21359{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021360 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021361 mImpl->log("start vkCmdSetSampleLocationsEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021362 auto stream = mImpl->stream();
21363 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021364 auto resources = mImpl->resources();
21365 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021366 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021367 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021368 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021369 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021370 local_pSampleLocationsInfo = nullptr;
21371 if (pSampleLocationsInfo)
21372 {
21373 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
21374 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
21375 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080021376 if (local_pSampleLocationsInfo)
21377 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021378 transform_tohost_VkSampleLocationsInfoEXT(mImpl->resources(), (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021379 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021380 countingStream->rewind();
21381 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021382 uint64_t cgen_var_1417;
21383 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1417, 1);
21384 countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021385 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021386 }
21387 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21388 countingStream->rewind();
21389 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
21390 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
21391 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021392 uint64_t cgen_var_1418;
21393 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1418, 1);
21394 stream->write((uint64_t*)&cgen_var_1418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021395 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021396 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT readParams");
21397 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021398 mImpl->log("finish vkCmdSetSampleLocationsEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021399}
21400
21401void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
21402 VkPhysicalDevice physicalDevice,
21403 VkSampleCountFlagBits samples,
21404 VkMultisamplePropertiesEXT* pMultisampleProperties)
21405{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021406 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021407 mImpl->log("start vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021408 auto stream = mImpl->stream();
21409 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021410 auto resources = mImpl->resources();
21411 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021412 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021413 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021414 VkSampleCountFlagBits local_samples;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021415 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021416 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021417 countingStream->rewind();
21418 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021419 uint64_t cgen_var_1419;
21420 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1419, 1);
21421 countingStream->write((uint64_t*)&cgen_var_1419, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021422 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021423 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
21424 }
21425 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21426 countingStream->rewind();
21427 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
21428 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
21429 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021430 uint64_t cgen_var_1420;
21431 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1420, 1);
21432 stream->write((uint64_t*)&cgen_var_1420, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021433 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021434 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021435 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021436 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080021437 if (pMultisampleProperties)
21438 {
21439 transform_fromhost_VkMultisamplePropertiesEXT(mImpl->resources(), (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
21440 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021441 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021442 mImpl->log("finish vkGetPhysicalDeviceMultisamplePropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021443}
21444
21445#endif
21446#ifdef VK_EXT_blend_operation_advanced
21447#endif
21448#ifdef VK_NV_fragment_coverage_to_color
21449#endif
21450#ifdef VK_NV_framebuffer_mixed_samples
21451#endif
21452#ifdef VK_NV_fill_rectangle
21453#endif
21454#ifdef VK_EXT_post_depth_coverage
21455#endif
21456#ifdef VK_EXT_validation_cache
21457VkResult VkEncoder::vkCreateValidationCacheEXT(
21458 VkDevice device,
21459 const VkValidationCacheCreateInfoEXT* pCreateInfo,
21460 const VkAllocationCallbacks* pAllocator,
21461 VkValidationCacheEXT* pValidationCache)
21462{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021463 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021464 mImpl->log("start vkCreateValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021465 auto stream = mImpl->stream();
21466 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021467 auto resources = mImpl->resources();
21468 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021469 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021470 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021471 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021472 VkAllocationCallbacks* local_pAllocator;
21473 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021474 local_pCreateInfo = nullptr;
21475 if (pCreateInfo)
21476 {
21477 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
21478 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
21479 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021480 local_pAllocator = nullptr;
21481 if (pAllocator)
21482 {
21483 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21484 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21485 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021486 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080021487 if (local_pCreateInfo)
21488 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021489 transform_tohost_VkValidationCacheCreateInfoEXT(mImpl->resources(), (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021490 }
21491 if (local_pAllocator)
21492 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021493 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021494 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021495 countingStream->rewind();
21496 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021497 uint64_t cgen_var_1421;
21498 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1421, 1);
21499 countingStream->write((uint64_t*)&cgen_var_1421, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021500 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021501 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021502 uint64_t cgen_var_1422 = (uint64_t)(uintptr_t)local_pAllocator;
21503 countingStream->putBe64(cgen_var_1422);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021504 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021505 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021506 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021507 }
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021508 uint64_t cgen_var_1423;
21509 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1423, 1);
21510 countingStream->write((uint64_t*)&cgen_var_1423, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021511 }
21512 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21513 countingStream->rewind();
21514 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
21515 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
21516 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021517 uint64_t cgen_var_1424;
21518 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1424, 1);
21519 stream->write((uint64_t*)&cgen_var_1424, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021520 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021521 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021522 uint64_t cgen_var_1425 = (uint64_t)(uintptr_t)local_pAllocator;
21523 stream->putBe64(cgen_var_1425);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021524 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021525 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021526 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021527 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080021528 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021529 uint64_t cgen_var_1426;
21530 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1426, 1);
21531 stream->write((uint64_t*)&cgen_var_1426, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080021532 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021533 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080021534 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021535 uint64_t cgen_var_1427;
21536 stream->read((uint64_t*)&cgen_var_1427, 8);
21537 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1427, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080021538 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021539 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021540 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
21541 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021542 countingStream->clearPool();
21543 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021544 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021545 mImpl->log("finish vkCreateValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021546 return vkCreateValidationCacheEXT_VkResult_return;
21547}
21548
21549void VkEncoder::vkDestroyValidationCacheEXT(
21550 VkDevice device,
21551 VkValidationCacheEXT validationCache,
21552 const VkAllocationCallbacks* pAllocator)
21553{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021554 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021555 mImpl->log("start vkDestroyValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021556 auto stream = mImpl->stream();
21557 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021558 auto resources = mImpl->resources();
21559 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021560 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021561 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021562 VkValidationCacheEXT local_validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021563 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021564 local_device = device;
21565 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021566 local_pAllocator = nullptr;
21567 if (pAllocator)
21568 {
21569 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21570 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21571 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021572 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080021573 if (local_pAllocator)
21574 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021575 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021576 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021577 countingStream->rewind();
21578 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021579 uint64_t cgen_var_1428;
21580 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1);
21581 countingStream->write((uint64_t*)&cgen_var_1428, 1 * 8);
21582 uint64_t cgen_var_1429;
21583 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1429, 1);
21584 countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021585 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021586 uint64_t cgen_var_1430 = (uint64_t)(uintptr_t)local_pAllocator;
21587 countingStream->putBe64(cgen_var_1430);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021588 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021589 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021590 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021591 }
21592 }
21593 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21594 countingStream->rewind();
21595 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
21596 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
21597 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021598 uint64_t cgen_var_1431;
21599 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1431, 1);
21600 stream->write((uint64_t*)&cgen_var_1431, 1 * 8);
21601 uint64_t cgen_var_1432;
21602 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1432, 1);
21603 stream->write((uint64_t*)&cgen_var_1432, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021604 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021605 uint64_t cgen_var_1433 = (uint64_t)(uintptr_t)local_pAllocator;
21606 stream->putBe64(cgen_var_1433);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021607 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021608 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021609 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021610 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021611 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT readParams");
21612 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021613 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021614 mImpl->log("finish vkDestroyValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021615}
21616
21617VkResult VkEncoder::vkMergeValidationCachesEXT(
21618 VkDevice device,
21619 VkValidationCacheEXT dstCache,
21620 uint32_t srcCacheCount,
21621 const VkValidationCacheEXT* pSrcCaches)
21622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021623 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021624 mImpl->log("start vkMergeValidationCachesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021625 auto stream = mImpl->stream();
21626 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021627 auto resources = mImpl->resources();
21628 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021629 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021630 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021631 VkValidationCacheEXT local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021632 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021633 VkValidationCacheEXT* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021634 local_device = device;
21635 local_dstCache = dstCache;
21636 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021637 local_pSrcCaches = nullptr;
21638 if (pSrcCaches)
21639 {
21640 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
21641 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021642 countingStream->rewind();
21643 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021644 uint64_t cgen_var_1434;
21645 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1434, 1);
21646 countingStream->write((uint64_t*)&cgen_var_1434, 1 * 8);
21647 uint64_t cgen_var_1435;
21648 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1435, 1);
21649 countingStream->write((uint64_t*)&cgen_var_1435, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021650 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021651 if (((srcCacheCount)))
21652 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021653 uint64_t* cgen_var_1436;
21654 countingStream->alloc((void**)&cgen_var_1436, ((srcCacheCount)) * 8);
21655 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1436, ((srcCacheCount)));
21656 countingStream->write((uint64_t*)cgen_var_1436, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080021657 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021658 }
21659 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21660 countingStream->rewind();
21661 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
21662 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
21663 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021664 uint64_t cgen_var_1437;
21665 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1437, 1);
21666 stream->write((uint64_t*)&cgen_var_1437, 1 * 8);
21667 uint64_t cgen_var_1438;
21668 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1438, 1);
21669 stream->write((uint64_t*)&cgen_var_1438, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021670 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021671 if (((srcCacheCount)))
21672 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021673 uint64_t* cgen_var_1439;
21674 stream->alloc((void**)&cgen_var_1439, ((srcCacheCount)) * 8);
21675 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1439, ((srcCacheCount)));
21676 stream->write((uint64_t*)cgen_var_1439, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080021677 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021678 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT readParams");
21679 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021680 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
21681 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021682 countingStream->clearPool();
21683 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021684 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021685 mImpl->log("finish vkMergeValidationCachesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021686 return vkMergeValidationCachesEXT_VkResult_return;
21687}
21688
21689VkResult VkEncoder::vkGetValidationCacheDataEXT(
21690 VkDevice device,
21691 VkValidationCacheEXT validationCache,
21692 size_t* pDataSize,
21693 void* pData)
21694{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021695 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021696 mImpl->log("start vkGetValidationCacheDataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021697 auto stream = mImpl->stream();
21698 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021699 auto resources = mImpl->resources();
21700 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021701 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021702 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021703 VkValidationCacheEXT local_validationCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021704 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021705 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021706 countingStream->rewind();
21707 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021708 uint64_t cgen_var_1440;
21709 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1440, 1);
21710 countingStream->write((uint64_t*)&cgen_var_1440, 1 * 8);
21711 uint64_t cgen_var_1441;
21712 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1441, 1);
21713 countingStream->write((uint64_t*)&cgen_var_1441, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021714 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021715 uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)pDataSize;
21716 countingStream->putBe64(cgen_var_1442);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021717 if (pDataSize)
21718 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021719 uint64_t cgen_var_1443 = (uint64_t)(*pDataSize);
21720 countingStream->putBe64(cgen_var_1443);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021721 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021722 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021723 uint64_t cgen_var_1444 = (uint64_t)(uintptr_t)pData;
21724 countingStream->putBe64(cgen_var_1444);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021725 if (pData)
21726 {
21727 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
21728 }
21729 }
21730 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21731 countingStream->rewind();
21732 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
21733 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
21734 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021735 uint64_t cgen_var_1445;
21736 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1445, 1);
21737 stream->write((uint64_t*)&cgen_var_1445, 1 * 8);
21738 uint64_t cgen_var_1446;
21739 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1446, 1);
21740 stream->write((uint64_t*)&cgen_var_1446, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021741 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021742 uint64_t cgen_var_1447 = (uint64_t)(uintptr_t)pDataSize;
21743 stream->putBe64(cgen_var_1447);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021744 if (pDataSize)
21745 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021746 uint64_t cgen_var_1448 = (uint64_t)(*pDataSize);
21747 stream->putBe64(cgen_var_1448);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021748 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021749 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021750 uint64_t cgen_var_1449 = (uint64_t)(uintptr_t)pData;
21751 stream->putBe64(cgen_var_1449);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021752 if (pData)
21753 {
21754 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
21755 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021756 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021757 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021758 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021759 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021760 if (pDataSize)
21761 {
21762 if (!(check_pDataSize))
21763 {
21764 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
21765 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080021766 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021767 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021768 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021769 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021770 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021771 if (pData)
21772 {
21773 if (!(check_pData))
21774 {
21775 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
21776 }
21777 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
21778 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021779 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021780 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
21781 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021782 countingStream->clearPool();
21783 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021784 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021785 mImpl->log("finish vkGetValidationCacheDataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021786 return vkGetValidationCacheDataEXT_VkResult_return;
21787}
21788
21789#endif
21790#ifdef VK_EXT_descriptor_indexing
21791#endif
21792#ifdef VK_EXT_shader_viewport_index_layer
21793#endif
21794#ifdef VK_EXT_global_priority
21795#endif
21796#ifdef VK_EXT_external_memory_host
21797VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
21798 VkDevice device,
21799 VkExternalMemoryHandleTypeFlagBits handleType,
21800 const void* pHostPointer,
21801 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
21802{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021803 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021804 mImpl->log("start vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021805 auto stream = mImpl->stream();
21806 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021807 auto resources = mImpl->resources();
21808 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021809 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021810 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021811 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021812 void* local_pHostPointer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021813 local_device = device;
21814 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021815 local_pHostPointer = nullptr;
21816 if (pHostPointer)
21817 {
21818 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
21819 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021820 countingStream->rewind();
21821 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021822 uint64_t cgen_var_1453;
21823 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1453, 1);
21824 countingStream->write((uint64_t*)&cgen_var_1453, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021825 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021826 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021827 uint64_t cgen_var_1454 = (uint64_t)(uintptr_t)local_pHostPointer;
21828 countingStream->putBe64(cgen_var_1454);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021829 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021830 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021831 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021832 }
21833 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
21834 }
21835 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21836 countingStream->rewind();
21837 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
21838 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
21839 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021840 uint64_t cgen_var_1455;
21841 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1455, 1);
21842 stream->write((uint64_t*)&cgen_var_1455, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021843 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021844 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021845 uint64_t cgen_var_1456 = (uint64_t)(uintptr_t)local_pHostPointer;
21846 stream->putBe64(cgen_var_1456);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021847 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021848 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021849 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021850 }
21851 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021852 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021853 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080021854 if (pMemoryHostPointerProperties)
21855 {
21856 transform_fromhost_VkMemoryHostPointerPropertiesEXT(mImpl->resources(), (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
21857 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021858 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021859 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
21860 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021861 countingStream->clearPool();
21862 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021863 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021864 mImpl->log("finish vkGetMemoryHostPointerPropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021865 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
21866}
21867
21868#endif
21869#ifdef VK_AMD_buffer_marker
21870void VkEncoder::vkCmdWriteBufferMarkerAMD(
21871 VkCommandBuffer commandBuffer,
21872 VkPipelineStageFlagBits pipelineStage,
21873 VkBuffer dstBuffer,
21874 VkDeviceSize dstOffset,
21875 uint32_t marker)
21876{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021877 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021878 mImpl->log("start vkCmdWriteBufferMarkerAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021879 auto stream = mImpl->stream();
21880 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021881 auto resources = mImpl->resources();
21882 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021883 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021884 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021885 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021886 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021887 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021888 uint32_t local_marker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021889 local_commandBuffer = commandBuffer;
21890 local_pipelineStage = pipelineStage;
21891 local_dstBuffer = dstBuffer;
21892 local_dstOffset = dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021893 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021894 countingStream->rewind();
21895 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021896 uint64_t cgen_var_1457;
21897 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1457, 1);
21898 countingStream->write((uint64_t*)&cgen_var_1457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021899 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021900 uint64_t cgen_var_1458;
21901 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1458, 1);
21902 countingStream->write((uint64_t*)&cgen_var_1458, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021903 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
21904 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021905 }
21906 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21907 countingStream->rewind();
21908 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
21909 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
21910 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021911 uint64_t cgen_var_1459;
21912 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1459, 1);
21913 stream->write((uint64_t*)&cgen_var_1459, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021914 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021915 uint64_t cgen_var_1460;
21916 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1460, 1);
21917 stream->write((uint64_t*)&cgen_var_1460, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021918 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
21919 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021920 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD readParams");
21921 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021922 mImpl->log("finish vkCmdWriteBufferMarkerAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021923}
21924
21925#endif
21926#ifdef VK_AMD_shader_core_properties
21927#endif
21928#ifdef VK_EXT_vertex_attribute_divisor
21929#endif
21930#ifdef VK_NV_shader_subgroup_partitioned
21931#endif
21932#ifdef VK_NV_device_diagnostic_checkpoints
21933void VkEncoder::vkCmdSetCheckpointNV(
21934 VkCommandBuffer commandBuffer,
21935 const void* pCheckpointMarker)
21936{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021937 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021938 mImpl->log("start vkCmdSetCheckpointNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021939 auto stream = mImpl->stream();
21940 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021941 auto resources = mImpl->resources();
21942 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021943 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021944 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021945 void* local_pCheckpointMarker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021946 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021947 local_pCheckpointMarker = nullptr;
21948 if (pCheckpointMarker)
21949 {
21950 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
21951 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021952 countingStream->rewind();
21953 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021954 uint64_t cgen_var_1461;
21955 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1461, 1);
21956 countingStream->write((uint64_t*)&cgen_var_1461, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021957 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021958 uint64_t cgen_var_1462 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
21959 countingStream->putBe64(cgen_var_1462);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021960 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021961 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021962 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021963 }
21964 }
21965 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21966 countingStream->rewind();
21967 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
21968 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
21969 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021970 uint64_t cgen_var_1463;
21971 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1463, 1);
21972 stream->write((uint64_t*)&cgen_var_1463, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021973 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080021974 uint64_t cgen_var_1464 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
21975 stream->putBe64(cgen_var_1464);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021976 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021977 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021978 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021979 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021980 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV readParams");
21981 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021982 mImpl->log("finish vkCmdSetCheckpointNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021983}
21984
21985void VkEncoder::vkGetQueueCheckpointDataNV(
21986 VkQueue queue,
21987 uint32_t* pCheckpointDataCount,
21988 VkCheckpointDataNV* pCheckpointData)
21989{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021990 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021991 mImpl->log("start vkGetQueueCheckpointDataNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021992 auto stream = mImpl->stream();
21993 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021994 auto resources = mImpl->resources();
21995 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021996 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021997 VkQueue local_queue;
21998 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021999 countingStream->rewind();
22000 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080022001 uint64_t cgen_var_1465;
22002 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1465, 1);
22003 countingStream->write((uint64_t*)&cgen_var_1465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022004 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080022005 uint64_t cgen_var_1466 = (uint64_t)(uintptr_t)pCheckpointDataCount;
22006 countingStream->putBe64(cgen_var_1466);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022007 if (pCheckpointDataCount)
22008 {
22009 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
22010 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022011 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080022012 uint64_t cgen_var_1467 = (uint64_t)(uintptr_t)pCheckpointData;
22013 countingStream->putBe64(cgen_var_1467);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022014 if (pCheckpointData)
22015 {
22016 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22017 {
22018 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
22019 }
22020 }
22021 }
22022 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22023 countingStream->rewind();
22024 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
22025 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
22026 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080022027 uint64_t cgen_var_1468;
22028 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1468, 1);
22029 stream->write((uint64_t*)&cgen_var_1468, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022030 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080022031 uint64_t cgen_var_1469 = (uint64_t)(uintptr_t)pCheckpointDataCount;
22032 stream->putBe64(cgen_var_1469);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022033 if (pCheckpointDataCount)
22034 {
22035 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
22036 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022037 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080022038 uint64_t cgen_var_1470 = (uint64_t)(uintptr_t)pCheckpointData;
22039 stream->putBe64(cgen_var_1470);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022040 if (pCheckpointData)
22041 {
22042 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22043 {
22044 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
22045 }
22046 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022047 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022048 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022049 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022050 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022051 if (pCheckpointDataCount)
22052 {
22053 if (!(check_pCheckpointDataCount))
22054 {
22055 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
22056 }
22057 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
22058 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022059 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022060 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022061 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022062 if (pCheckpointData)
22063 {
22064 if (!(check_pCheckpointData))
22065 {
22066 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
22067 }
22068 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22069 {
22070 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
22071 }
22072 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080022073 if (pCheckpointData)
22074 {
22075 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22076 {
22077 transform_fromhost_VkCheckpointDataNV(mImpl->resources(), (VkCheckpointDataNV*)(pCheckpointData + i));
22078 }
22079 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022080 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080022081 mImpl->log("finish vkGetQueueCheckpointDataNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022082}
22083
22084#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022085#ifdef VK_GOOGLE_address_space
22086VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE(
22087 VkDevice device,
22088 VkDeviceMemory memory,
22089 uint64_t* pAddress)
22090{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022091 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080022092 mImpl->log("start vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022093 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress);
22094 auto stream = mImpl->stream();
22095 auto countingStream = mImpl->countingStream();
22096 auto resources = mImpl->resources();
22097 auto pool = mImpl->pool();
22098 stream->setHandleMapping(resources->unwrapMapping());
22099 VkDevice local_device;
22100 VkDeviceMemory local_memory;
22101 local_device = device;
22102 local_memory = memory;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080022103 mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022104 countingStream->rewind();
22105 {
Lingfeng Yang154a33c2019-01-29 19:06:23 -080022106 uint64_t cgen_var_1473;
22107 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1473, 1);
22108 countingStream->write((uint64_t*)&cgen_var_1473, 1 * 8);
22109 uint64_t cgen_var_1474;
22110 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1474, 1);
22111 countingStream->write((uint64_t*)&cgen_var_1474, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022112 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080022113 uint64_t cgen_var_1475 = (uint64_t)(uintptr_t)pAddress;
22114 countingStream->putBe64(cgen_var_1475);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022115 if (pAddress)
22116 {
22117 countingStream->write((uint64_t*)pAddress, sizeof(uint64_t));
22118 }
22119 }
22120 uint32_t packetSize_vkMapMemoryIntoAddressSpaceGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22121 countingStream->rewind();
22122 uint32_t opcode_vkMapMemoryIntoAddressSpaceGOOGLE = OP_vkMapMemoryIntoAddressSpaceGOOGLE;
22123 stream->write(&opcode_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
22124 stream->write(&packetSize_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
Lingfeng Yang154a33c2019-01-29 19:06:23 -080022125 uint64_t cgen_var_1476;
22126 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1476, 1);
22127 stream->write((uint64_t*)&cgen_var_1476, 1 * 8);
22128 uint64_t cgen_var_1477;
22129 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1477, 1);
22130 stream->write((uint64_t*)&cgen_var_1477, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022131 // WARNING PTR CHECK
Lingfeng Yang154a33c2019-01-29 19:06:23 -080022132 uint64_t cgen_var_1478 = (uint64_t)(uintptr_t)pAddress;
22133 stream->putBe64(cgen_var_1478);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022134 if (pAddress)
22135 {
22136 stream->write((uint64_t*)pAddress, sizeof(uint64_t));
22137 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022138 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE readParams");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022139 // WARNING PTR CHECK
22140 uint64_t* check_pAddress;
22141 check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64();
22142 if (pAddress)
22143 {
22144 if (!(check_pAddress))
22145 {
22146 fprintf(stderr, "fatal: pAddress inconsistent between guest and host\n");
22147 }
22148 stream->read((uint64_t*)pAddress, sizeof(uint64_t));
22149 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022150 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE returnUnmarshal");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022151 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
22152 stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult));
22153 countingStream->clearPool();
22154 stream->clearPool();
22155 pool->freeAll();
22156 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080022157 mImpl->log("finish vkMapMemoryIntoAddressSpaceGOOGLE");;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022158 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
22159}
22160
22161#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022162#ifdef VK_GOOGLE_color_buffer
22163VkResult VkEncoder::vkRegisterImageColorBufferGOOGLE(
22164 VkDevice device,
22165 VkImage image,
22166 uint32_t colorBuffer)
22167{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022168 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE encode");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022169 mImpl->log("start vkRegisterImageColorBufferGOOGLE");
22170 auto stream = mImpl->stream();
22171 auto countingStream = mImpl->countingStream();
22172 auto resources = mImpl->resources();
22173 auto pool = mImpl->pool();
22174 stream->setHandleMapping(resources->unwrapMapping());
22175 VkDevice local_device;
22176 VkImage local_image;
22177 uint32_t local_colorBuffer;
22178 local_device = device;
22179 local_image = image;
22180 local_colorBuffer = colorBuffer;
22181 countingStream->rewind();
22182 {
22183 uint64_t cgen_var_1480;
22184 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1480, 1);
22185 countingStream->write((uint64_t*)&cgen_var_1480, 1 * 8);
22186 uint64_t cgen_var_1481;
22187 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1481, 1);
22188 countingStream->write((uint64_t*)&cgen_var_1481, 1 * 8);
22189 countingStream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
22190 }
22191 uint32_t packetSize_vkRegisterImageColorBufferGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22192 countingStream->rewind();
22193 uint32_t opcode_vkRegisterImageColorBufferGOOGLE = OP_vkRegisterImageColorBufferGOOGLE;
22194 stream->write(&opcode_vkRegisterImageColorBufferGOOGLE, sizeof(uint32_t));
22195 stream->write(&packetSize_vkRegisterImageColorBufferGOOGLE, sizeof(uint32_t));
22196 uint64_t cgen_var_1482;
22197 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1482, 1);
22198 stream->write((uint64_t*)&cgen_var_1482, 1 * 8);
22199 uint64_t cgen_var_1483;
22200 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1483, 1);
22201 stream->write((uint64_t*)&cgen_var_1483, 1 * 8);
22202 stream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022203 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE readParams");
22204 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE returnUnmarshal");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022205 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
22206 stream->read(&vkRegisterImageColorBufferGOOGLE_VkResult_return, sizeof(VkResult));
22207 countingStream->clearPool();
22208 stream->clearPool();
22209 pool->freeAll();
22210 mImpl->log("finish vkRegisterImageColorBufferGOOGLE");;
22211 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
22212}
22213
22214VkResult VkEncoder::vkRegisterBufferColorBufferGOOGLE(
22215 VkDevice device,
22216 VkBuffer buffer,
22217 uint32_t colorBuffer)
22218{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022219 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE encode");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022220 mImpl->log("start vkRegisterBufferColorBufferGOOGLE");
22221 auto stream = mImpl->stream();
22222 auto countingStream = mImpl->countingStream();
22223 auto resources = mImpl->resources();
22224 auto pool = mImpl->pool();
22225 stream->setHandleMapping(resources->unwrapMapping());
22226 VkDevice local_device;
22227 VkBuffer local_buffer;
22228 uint32_t local_colorBuffer;
22229 local_device = device;
22230 local_buffer = buffer;
22231 local_colorBuffer = colorBuffer;
22232 countingStream->rewind();
22233 {
22234 uint64_t cgen_var_1484;
22235 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1484, 1);
22236 countingStream->write((uint64_t*)&cgen_var_1484, 1 * 8);
22237 uint64_t cgen_var_1485;
22238 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1485, 1);
22239 countingStream->write((uint64_t*)&cgen_var_1485, 1 * 8);
22240 countingStream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
22241 }
22242 uint32_t packetSize_vkRegisterBufferColorBufferGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22243 countingStream->rewind();
22244 uint32_t opcode_vkRegisterBufferColorBufferGOOGLE = OP_vkRegisterBufferColorBufferGOOGLE;
22245 stream->write(&opcode_vkRegisterBufferColorBufferGOOGLE, sizeof(uint32_t));
22246 stream->write(&packetSize_vkRegisterBufferColorBufferGOOGLE, sizeof(uint32_t));
22247 uint64_t cgen_var_1486;
22248 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1486, 1);
22249 stream->write((uint64_t*)&cgen_var_1486, 1 * 8);
22250 uint64_t cgen_var_1487;
22251 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1487, 1);
22252 stream->write((uint64_t*)&cgen_var_1487, 1 * 8);
22253 stream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022254 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE readParams");
22255 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE returnUnmarshal");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022256 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
22257 stream->read(&vkRegisterBufferColorBufferGOOGLE_VkResult_return, sizeof(VkResult));
22258 countingStream->clearPool();
22259 stream->clearPool();
22260 pool->freeAll();
22261 mImpl->log("finish vkRegisterBufferColorBufferGOOGLE");;
22262 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
22263}
22264
22265#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022266#ifdef VK_GOOGLE_sized_descriptor_update_template
22267void VkEncoder::vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
22268 VkDevice device,
22269 VkDescriptorSet descriptorSet,
22270 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
22271 uint32_t imageInfoCount,
22272 uint32_t bufferInfoCount,
22273 uint32_t bufferViewCount,
22274 const uint32_t* pImageInfoEntryIndices,
22275 const uint32_t* pBufferInfoEntryIndices,
22276 const uint32_t* pBufferViewEntryIndices,
22277 const VkDescriptorImageInfo* pImageInfos,
22278 const VkDescriptorBufferInfo* pBufferInfos,
22279 const VkBufferView* pBufferViews)
22280{
22281 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE encode");
22282 mImpl->log("start vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
22283 auto stream = mImpl->stream();
22284 auto countingStream = mImpl->countingStream();
22285 auto resources = mImpl->resources();
22286 auto pool = mImpl->pool();
22287 stream->setHandleMapping(resources->unwrapMapping());
22288 VkDevice local_device;
22289 VkDescriptorSet local_descriptorSet;
22290 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
22291 uint32_t local_imageInfoCount;
22292 uint32_t local_bufferInfoCount;
22293 uint32_t local_bufferViewCount;
22294 uint32_t* local_pImageInfoEntryIndices;
22295 uint32_t* local_pBufferInfoEntryIndices;
22296 uint32_t* local_pBufferViewEntryIndices;
22297 VkDescriptorImageInfo* local_pImageInfos;
22298 VkDescriptorBufferInfo* local_pBufferInfos;
22299 VkBufferView* local_pBufferViews;
22300 local_device = device;
22301 local_descriptorSet = descriptorSet;
22302 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
22303 local_imageInfoCount = imageInfoCount;
22304 local_bufferInfoCount = bufferInfoCount;
22305 local_bufferViewCount = bufferViewCount;
22306 local_pImageInfoEntryIndices = nullptr;
22307 if (pImageInfoEntryIndices)
22308 {
22309 local_pImageInfoEntryIndices = (uint32_t*)pool->dupArray(pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(const uint32_t));
22310 }
22311 local_pBufferInfoEntryIndices = nullptr;
22312 if (pBufferInfoEntryIndices)
22313 {
22314 local_pBufferInfoEntryIndices = (uint32_t*)pool->dupArray(pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(const uint32_t));
22315 }
22316 local_pBufferViewEntryIndices = nullptr;
22317 if (pBufferViewEntryIndices)
22318 {
22319 local_pBufferViewEntryIndices = (uint32_t*)pool->dupArray(pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(const uint32_t));
22320 }
22321 local_pImageInfos = nullptr;
22322 if (pImageInfos)
22323 {
22324 local_pImageInfos = (VkDescriptorImageInfo*)pool->alloc(((imageInfoCount)) * sizeof(const VkDescriptorImageInfo));
22325 for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22326 {
22327 deepcopy_VkDescriptorImageInfo(pool, pImageInfos + i, (VkDescriptorImageInfo*)(local_pImageInfos + i));
22328 }
22329 }
22330 local_pBufferInfos = nullptr;
22331 if (pBufferInfos)
22332 {
22333 local_pBufferInfos = (VkDescriptorBufferInfo*)pool->alloc(((bufferInfoCount)) * sizeof(const VkDescriptorBufferInfo));
22334 for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22335 {
22336 deepcopy_VkDescriptorBufferInfo(pool, pBufferInfos + i, (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22337 }
22338 }
22339 local_pBufferViews = nullptr;
22340 if (pBufferViews)
22341 {
22342 local_pBufferViews = (VkBufferView*)pool->dupArray(pBufferViews, ((bufferViewCount)) * sizeof(const VkBufferView));
22343 }
22344 if (local_pImageInfos)
22345 {
22346 for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22347 {
22348 transform_tohost_VkDescriptorImageInfo(mImpl->resources(), (VkDescriptorImageInfo*)(local_pImageInfos + i));
22349 }
22350 }
22351 if (local_pBufferInfos)
22352 {
22353 for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22354 {
22355 transform_tohost_VkDescriptorBufferInfo(mImpl->resources(), (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22356 }
22357 }
22358 countingStream->rewind();
22359 {
22360 uint64_t cgen_var_1488;
22361 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1488, 1);
22362 countingStream->write((uint64_t*)&cgen_var_1488, 1 * 8);
22363 uint64_t cgen_var_1489;
22364 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1489, 1);
22365 countingStream->write((uint64_t*)&cgen_var_1489, 1 * 8);
22366 uint64_t cgen_var_1490;
22367 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1490, 1);
22368 countingStream->write((uint64_t*)&cgen_var_1490, 1 * 8);
22369 countingStream->write((uint32_t*)&local_imageInfoCount, sizeof(uint32_t));
22370 countingStream->write((uint32_t*)&local_bufferInfoCount, sizeof(uint32_t));
22371 countingStream->write((uint32_t*)&local_bufferViewCount, sizeof(uint32_t));
22372 // WARNING PTR CHECK
22373 uint64_t cgen_var_1491 = (uint64_t)(uintptr_t)local_pImageInfoEntryIndices;
22374 countingStream->putBe64(cgen_var_1491);
22375 if (local_pImageInfoEntryIndices)
22376 {
22377 countingStream->write((uint32_t*)local_pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(uint32_t));
22378 }
22379 // WARNING PTR CHECK
22380 uint64_t cgen_var_1492 = (uint64_t)(uintptr_t)local_pBufferInfoEntryIndices;
22381 countingStream->putBe64(cgen_var_1492);
22382 if (local_pBufferInfoEntryIndices)
22383 {
22384 countingStream->write((uint32_t*)local_pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(uint32_t));
22385 }
22386 // WARNING PTR CHECK
22387 uint64_t cgen_var_1493 = (uint64_t)(uintptr_t)local_pBufferViewEntryIndices;
22388 countingStream->putBe64(cgen_var_1493);
22389 if (local_pBufferViewEntryIndices)
22390 {
22391 countingStream->write((uint32_t*)local_pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(uint32_t));
22392 }
22393 // WARNING PTR CHECK
22394 uint64_t cgen_var_1494 = (uint64_t)(uintptr_t)local_pImageInfos;
22395 countingStream->putBe64(cgen_var_1494);
22396 if (local_pImageInfos)
22397 {
22398 for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22399 {
22400 marshal_VkDescriptorImageInfo(countingStream, (VkDescriptorImageInfo*)(local_pImageInfos + i));
22401 }
22402 }
22403 // WARNING PTR CHECK
22404 uint64_t cgen_var_1495 = (uint64_t)(uintptr_t)local_pBufferInfos;
22405 countingStream->putBe64(cgen_var_1495);
22406 if (local_pBufferInfos)
22407 {
22408 for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22409 {
22410 marshal_VkDescriptorBufferInfo(countingStream, (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22411 }
22412 }
22413 // WARNING PTR CHECK
22414 uint64_t cgen_var_1496 = (uint64_t)(uintptr_t)local_pBufferViews;
22415 countingStream->putBe64(cgen_var_1496);
22416 if (local_pBufferViews)
22417 {
22418 if (((bufferViewCount)))
22419 {
22420 uint64_t* cgen_var_1497;
22421 countingStream->alloc((void**)&cgen_var_1497, ((bufferViewCount)) * 8);
22422 countingStream->handleMapping()->mapHandles_VkBufferView_u64(local_pBufferViews, cgen_var_1497, ((bufferViewCount)));
22423 countingStream->write((uint64_t*)cgen_var_1497, ((bufferViewCount)) * 8);
22424 }
22425 }
22426 }
22427 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateSizedGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22428 countingStream->rewind();
22429 uint32_t opcode_vkUpdateDescriptorSetWithTemplateSizedGOOGLE = OP_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
22430 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateSizedGOOGLE, sizeof(uint32_t));
22431 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateSizedGOOGLE, sizeof(uint32_t));
22432 uint64_t cgen_var_1498;
22433 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1498, 1);
22434 stream->write((uint64_t*)&cgen_var_1498, 1 * 8);
22435 uint64_t cgen_var_1499;
22436 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1499, 1);
22437 stream->write((uint64_t*)&cgen_var_1499, 1 * 8);
22438 uint64_t cgen_var_1500;
22439 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1500, 1);
22440 stream->write((uint64_t*)&cgen_var_1500, 1 * 8);
22441 stream->write((uint32_t*)&local_imageInfoCount, sizeof(uint32_t));
22442 stream->write((uint32_t*)&local_bufferInfoCount, sizeof(uint32_t));
22443 stream->write((uint32_t*)&local_bufferViewCount, sizeof(uint32_t));
22444 // WARNING PTR CHECK
22445 uint64_t cgen_var_1501 = (uint64_t)(uintptr_t)local_pImageInfoEntryIndices;
22446 stream->putBe64(cgen_var_1501);
22447 if (local_pImageInfoEntryIndices)
22448 {
22449 stream->write((uint32_t*)local_pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(uint32_t));
22450 }
22451 // WARNING PTR CHECK
22452 uint64_t cgen_var_1502 = (uint64_t)(uintptr_t)local_pBufferInfoEntryIndices;
22453 stream->putBe64(cgen_var_1502);
22454 if (local_pBufferInfoEntryIndices)
22455 {
22456 stream->write((uint32_t*)local_pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(uint32_t));
22457 }
22458 // WARNING PTR CHECK
22459 uint64_t cgen_var_1503 = (uint64_t)(uintptr_t)local_pBufferViewEntryIndices;
22460 stream->putBe64(cgen_var_1503);
22461 if (local_pBufferViewEntryIndices)
22462 {
22463 stream->write((uint32_t*)local_pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(uint32_t));
22464 }
22465 // WARNING PTR CHECK
22466 uint64_t cgen_var_1504 = (uint64_t)(uintptr_t)local_pImageInfos;
22467 stream->putBe64(cgen_var_1504);
22468 if (local_pImageInfos)
22469 {
22470 for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22471 {
22472 marshal_VkDescriptorImageInfo(stream, (VkDescriptorImageInfo*)(local_pImageInfos + i));
22473 }
22474 }
22475 // WARNING PTR CHECK
22476 uint64_t cgen_var_1505 = (uint64_t)(uintptr_t)local_pBufferInfos;
22477 stream->putBe64(cgen_var_1505);
22478 if (local_pBufferInfos)
22479 {
22480 for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22481 {
22482 marshal_VkDescriptorBufferInfo(stream, (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22483 }
22484 }
22485 // WARNING PTR CHECK
22486 uint64_t cgen_var_1506 = (uint64_t)(uintptr_t)local_pBufferViews;
22487 stream->putBe64(cgen_var_1506);
22488 if (local_pBufferViews)
22489 {
22490 if (((bufferViewCount)))
22491 {
22492 uint64_t* cgen_var_1507;
22493 stream->alloc((void**)&cgen_var_1507, ((bufferViewCount)) * 8);
22494 stream->handleMapping()->mapHandles_VkBufferView_u64(local_pBufferViews, cgen_var_1507, ((bufferViewCount)));
22495 stream->write((uint64_t*)cgen_var_1507, ((bufferViewCount)) * 8);
22496 }
22497 }
22498 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE readParams");
22499 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE returnUnmarshal");
22500 mImpl->log("finish vkUpdateDescriptorSetWithTemplateSizedGOOGLE");;
22501}
22502
22503#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -070022504#ifdef VK_GOOGLE_async_command_buffers
22505void VkEncoder::vkBeginCommandBufferAsyncGOOGLE(
22506 VkCommandBuffer commandBuffer,
22507 const VkCommandBufferBeginInfo* pBeginInfo)
22508{
22509 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE encode");
22510 mImpl->log("start vkBeginCommandBufferAsyncGOOGLE");
22511 auto stream = mImpl->stream();
22512 auto countingStream = mImpl->countingStream();
22513 auto resources = mImpl->resources();
22514 auto pool = mImpl->pool();
22515 stream->setHandleMapping(resources->unwrapMapping());
22516 VkCommandBuffer local_commandBuffer;
22517 VkCommandBufferBeginInfo* local_pBeginInfo;
22518 local_commandBuffer = commandBuffer;
22519 local_pBeginInfo = nullptr;
22520 if (pBeginInfo)
22521 {
22522 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
22523 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22524 }
22525 if (local_pBeginInfo)
22526 {
22527 transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22528 }
22529 countingStream->rewind();
22530 {
22531 uint64_t cgen_var_1508;
22532 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1508, 1);
22533 countingStream->write((uint64_t*)&cgen_var_1508, 1 * 8);
22534 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22535 }
22536 uint32_t packetSize_vkBeginCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22537 countingStream->rewind();
22538 uint32_t opcode_vkBeginCommandBufferAsyncGOOGLE = OP_vkBeginCommandBufferAsyncGOOGLE;
22539 stream->write(&opcode_vkBeginCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22540 stream->write(&packetSize_vkBeginCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22541 uint64_t cgen_var_1509;
22542 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1509, 1);
22543 stream->write((uint64_t*)&cgen_var_1509, 1 * 8);
22544 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22545 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE readParams");
22546 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE returnUnmarshal");
22547 mImpl->log("finish vkBeginCommandBufferAsyncGOOGLE");;
22548}
22549
22550void VkEncoder::vkEndCommandBufferAsyncGOOGLE(
22551 VkCommandBuffer commandBuffer)
22552{
22553 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE encode");
22554 mImpl->log("start vkEndCommandBufferAsyncGOOGLE");
22555 auto stream = mImpl->stream();
22556 auto countingStream = mImpl->countingStream();
22557 auto resources = mImpl->resources();
22558 auto pool = mImpl->pool();
22559 stream->setHandleMapping(resources->unwrapMapping());
22560 VkCommandBuffer local_commandBuffer;
22561 local_commandBuffer = commandBuffer;
22562 countingStream->rewind();
22563 {
22564 uint64_t cgen_var_1510;
22565 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1510, 1);
22566 countingStream->write((uint64_t*)&cgen_var_1510, 1 * 8);
22567 }
22568 uint32_t packetSize_vkEndCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22569 countingStream->rewind();
22570 uint32_t opcode_vkEndCommandBufferAsyncGOOGLE = OP_vkEndCommandBufferAsyncGOOGLE;
22571 stream->write(&opcode_vkEndCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22572 stream->write(&packetSize_vkEndCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22573 uint64_t cgen_var_1511;
22574 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1511, 1);
22575 stream->write((uint64_t*)&cgen_var_1511, 1 * 8);
22576 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE readParams");
22577 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE returnUnmarshal");
22578 mImpl->log("finish vkEndCommandBufferAsyncGOOGLE");;
22579}
22580
22581void VkEncoder::vkResetCommandBufferAsyncGOOGLE(
22582 VkCommandBuffer commandBuffer,
22583 VkCommandBufferResetFlags flags)
22584{
22585 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE encode");
22586 mImpl->log("start vkResetCommandBufferAsyncGOOGLE");
22587 auto stream = mImpl->stream();
22588 auto countingStream = mImpl->countingStream();
22589 auto resources = mImpl->resources();
22590 auto pool = mImpl->pool();
22591 stream->setHandleMapping(resources->unwrapMapping());
22592 VkCommandBuffer local_commandBuffer;
22593 VkCommandBufferResetFlags local_flags;
22594 local_commandBuffer = commandBuffer;
22595 local_flags = flags;
22596 countingStream->rewind();
22597 {
22598 uint64_t cgen_var_1512;
22599 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1512, 1);
22600 countingStream->write((uint64_t*)&cgen_var_1512, 1 * 8);
22601 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
22602 }
22603 uint32_t packetSize_vkResetCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22604 countingStream->rewind();
22605 uint32_t opcode_vkResetCommandBufferAsyncGOOGLE = OP_vkResetCommandBufferAsyncGOOGLE;
22606 stream->write(&opcode_vkResetCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22607 stream->write(&packetSize_vkResetCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22608 uint64_t cgen_var_1513;
22609 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1513, 1);
22610 stream->write((uint64_t*)&cgen_var_1513, 1 * 8);
22611 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
22612 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE readParams");
22613 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE returnUnmarshal");
22614 mImpl->log("finish vkResetCommandBufferAsyncGOOGLE");;
22615}
22616
22617#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022618
Lingfeng Yangb1d90102018-11-29 16:10:36 -080022619} // namespace goldfish_vk