blob: 3b3cd9bb333a318e8c393b7b1f44a5fa9b5aae93 [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 Yang77dc2512018-11-17 12:48:37 -0800947 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -0400948 uint64_t cgen_var_53 = (uint64_t)(uintptr_t)local_pLayerName;
Lingfeng Yang2285df12018-11-17 16:25:11 -0800949 countingStream->putBe64(cgen_var_53);
David Reveman9875f2c2019-06-11 21:47:12 -0400950 if (local_pLayerName)
951 {
952 countingStream->putString(local_pLayerName);
953 }
954 // WARNING PTR CHECK
955 uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pPropertyCount;
956 countingStream->putBe64(cgen_var_54);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700957 if (pPropertyCount)
958 {
959 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
960 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800961 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -0400962 uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pProperties;
963 countingStream->putBe64(cgen_var_55);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700964 if (pProperties)
965 {
966 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
967 {
968 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
969 }
970 }
971 }
972 uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
973 countingStream->rewind();
974 uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
975 stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
976 stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800977 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -0400978 uint64_t cgen_var_56 = (uint64_t)(uintptr_t)local_pLayerName;
979 stream->putBe64(cgen_var_56);
980 if (local_pLayerName)
981 {
982 stream->putString(local_pLayerName);
983 }
984 // WARNING PTR CHECK
985 uint64_t cgen_var_57 = (uint64_t)(uintptr_t)pPropertyCount;
986 stream->putBe64(cgen_var_57);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700987 if (pPropertyCount)
988 {
989 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
990 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -0800991 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -0400992 uint64_t cgen_var_58 = (uint64_t)(uintptr_t)pProperties;
993 stream->putBe64(cgen_var_58);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -0700994 if (pProperties)
995 {
996 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
997 {
998 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
999 }
1000 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001001 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001002 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001003 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001004 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001005 if (pPropertyCount)
1006 {
1007 if (!(check_pPropertyCount))
1008 {
1009 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1010 }
1011 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1012 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001013 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001014 VkExtensionProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001015 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001016 if (pProperties)
1017 {
1018 if (!(check_pProperties))
1019 {
1020 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1021 }
1022 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1023 {
1024 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1025 }
1026 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001027 if (pProperties)
1028 {
1029 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1030 {
1031 transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i));
1032 }
1033 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001034 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001035 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
1036 stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001037 countingStream->clearPool();
1038 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001039 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001040 mImpl->log("finish vkEnumerateInstanceExtensionProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001041 return vkEnumerateInstanceExtensionProperties_VkResult_return;
1042}
1043
1044VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
1045 VkPhysicalDevice physicalDevice,
1046 const char* pLayerName,
1047 uint32_t* pPropertyCount,
1048 VkExtensionProperties* pProperties)
1049{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001050 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties encode");
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001051 mImpl->log("start vkEnumerateDeviceExtensionProperties");
1052 auto stream = mImpl->stream();
1053 auto countingStream = mImpl->countingStream();
1054 auto resources = mImpl->resources();
1055 auto pool = mImpl->pool();
1056 stream->setHandleMapping(resources->unwrapMapping());
1057 VkPhysicalDevice local_physicalDevice;
1058 char* local_pLayerName;
1059 local_physicalDevice = physicalDevice;
1060 local_pLayerName = nullptr;
1061 if (pLayerName)
1062 {
1063 local_pLayerName = pool->strDup(pLayerName);
1064 }
1065 countingStream->rewind();
1066 {
David Reveman9875f2c2019-06-11 21:47:12 -04001067 uint64_t cgen_var_61;
1068 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_61, 1);
1069 countingStream->write((uint64_t*)&cgen_var_61, 1 * 8);
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001070 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001071 uint64_t cgen_var_62 = (uint64_t)(uintptr_t)local_pLayerName;
1072 countingStream->putBe64(cgen_var_62);
1073 if (local_pLayerName)
1074 {
1075 countingStream->putString(local_pLayerName);
1076 }
1077 // WARNING PTR CHECK
1078 uint64_t cgen_var_63 = (uint64_t)(uintptr_t)pPropertyCount;
1079 countingStream->putBe64(cgen_var_63);
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001080 if (pPropertyCount)
1081 {
1082 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1083 }
1084 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001085 uint64_t cgen_var_64 = (uint64_t)(uintptr_t)pProperties;
1086 countingStream->putBe64(cgen_var_64);
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001087 if (pProperties)
1088 {
1089 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1090 {
1091 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
1092 }
1093 }
1094 }
1095 uint32_t packetSize_vkEnumerateDeviceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1096 countingStream->rewind();
1097 uint32_t opcode_vkEnumerateDeviceExtensionProperties = OP_vkEnumerateDeviceExtensionProperties;
1098 stream->write(&opcode_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
1099 stream->write(&packetSize_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001100 uint64_t cgen_var_65;
1101 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_65, 1);
1102 stream->write((uint64_t*)&cgen_var_65, 1 * 8);
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001103 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001104 uint64_t cgen_var_66 = (uint64_t)(uintptr_t)local_pLayerName;
1105 stream->putBe64(cgen_var_66);
1106 if (local_pLayerName)
1107 {
1108 stream->putString(local_pLayerName);
1109 }
1110 // WARNING PTR CHECK
1111 uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pPropertyCount;
1112 stream->putBe64(cgen_var_67);
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001113 if (pPropertyCount)
1114 {
1115 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1116 }
1117 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001118 uint64_t cgen_var_68 = (uint64_t)(uintptr_t)pProperties;
1119 stream->putBe64(cgen_var_68);
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001120 if (pProperties)
1121 {
1122 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1123 {
1124 marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1125 }
1126 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001127 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001128 // WARNING PTR CHECK
1129 uint32_t* check_pPropertyCount;
1130 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
1131 if (pPropertyCount)
1132 {
1133 if (!(check_pPropertyCount))
1134 {
1135 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1136 }
1137 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1138 }
1139 // WARNING PTR CHECK
1140 VkExtensionProperties* check_pProperties;
1141 check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
1142 if (pProperties)
1143 {
1144 if (!(check_pProperties))
1145 {
1146 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1147 }
1148 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1149 {
1150 unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1151 }
1152 }
1153 if (pProperties)
1154 {
1155 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1156 {
1157 transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i));
1158 }
1159 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001160 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001161 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -08001162 stream->read(&vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult));
1163 countingStream->clearPool();
1164 stream->clearPool();
1165 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001166 mImpl->log("finish vkEnumerateDeviceExtensionProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001167 return vkEnumerateDeviceExtensionProperties_VkResult_return;
1168}
1169
1170VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
1171 uint32_t* pPropertyCount,
1172 VkLayerProperties* pProperties)
1173{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001174 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001175 mImpl->log("start vkEnumerateInstanceLayerProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001176 auto stream = mImpl->stream();
1177 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001178 auto resources = mImpl->resources();
1179 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001180 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001181 countingStream->rewind();
1182 {
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001183 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001184 uint64_t cgen_var_71 = (uint64_t)(uintptr_t)pPropertyCount;
1185 countingStream->putBe64(cgen_var_71);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001186 if (pPropertyCount)
1187 {
1188 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1189 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001190 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001191 uint64_t cgen_var_72 = (uint64_t)(uintptr_t)pProperties;
1192 countingStream->putBe64(cgen_var_72);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001193 if (pProperties)
1194 {
1195 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1196 {
1197 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1198 }
1199 }
1200 }
1201 uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1202 countingStream->rewind();
1203 uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
1204 stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
1205 stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001206 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001207 uint64_t cgen_var_73 = (uint64_t)(uintptr_t)pPropertyCount;
1208 stream->putBe64(cgen_var_73);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001209 if (pPropertyCount)
1210 {
1211 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1212 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001213 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001214 uint64_t cgen_var_74 = (uint64_t)(uintptr_t)pProperties;
1215 stream->putBe64(cgen_var_74);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001216 if (pProperties)
1217 {
1218 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1219 {
1220 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1221 }
1222 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001223 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001224 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001225 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001226 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001227 if (pPropertyCount)
1228 {
1229 if (!(check_pPropertyCount))
1230 {
1231 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1232 }
1233 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1234 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001235 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001236 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001237 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001238 if (pProperties)
1239 {
1240 if (!(check_pProperties))
1241 {
1242 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1243 }
1244 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1245 {
1246 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1247 }
1248 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001249 if (pProperties)
1250 {
1251 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1252 {
1253 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1254 }
1255 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001256 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001257 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
1258 stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001259 countingStream->clearPool();
1260 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001261 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001262 mImpl->log("finish vkEnumerateInstanceLayerProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001263 return vkEnumerateInstanceLayerProperties_VkResult_return;
1264}
1265
1266VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
1267 VkPhysicalDevice physicalDevice,
1268 uint32_t* pPropertyCount,
1269 VkLayerProperties* pProperties)
1270{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001271 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001272 mImpl->log("start vkEnumerateDeviceLayerProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001273 auto stream = mImpl->stream();
1274 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001275 auto resources = mImpl->resources();
1276 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001277 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001278 VkPhysicalDevice local_physicalDevice;
1279 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001280 countingStream->rewind();
1281 {
David Reveman9875f2c2019-06-11 21:47:12 -04001282 uint64_t cgen_var_77;
1283 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_77, 1);
1284 countingStream->write((uint64_t*)&cgen_var_77, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001285 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001286 uint64_t cgen_var_78 = (uint64_t)(uintptr_t)pPropertyCount;
1287 countingStream->putBe64(cgen_var_78);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001288 if (pPropertyCount)
1289 {
1290 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1291 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001292 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001293 uint64_t cgen_var_79 = (uint64_t)(uintptr_t)pProperties;
1294 countingStream->putBe64(cgen_var_79);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001295 if (pProperties)
1296 {
1297 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1298 {
1299 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1300 }
1301 }
1302 }
1303 uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1304 countingStream->rewind();
1305 uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1306 stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1307 stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001308 uint64_t cgen_var_80;
1309 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_80, 1);
1310 stream->write((uint64_t*)&cgen_var_80, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001311 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001312 uint64_t cgen_var_81 = (uint64_t)(uintptr_t)pPropertyCount;
1313 stream->putBe64(cgen_var_81);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001314 if (pPropertyCount)
1315 {
1316 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1317 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001318 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001319 uint64_t cgen_var_82 = (uint64_t)(uintptr_t)pProperties;
1320 stream->putBe64(cgen_var_82);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001321 if (pProperties)
1322 {
1323 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1324 {
1325 marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1326 }
1327 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001328 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001329 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001330 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001331 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001332 if (pPropertyCount)
1333 {
1334 if (!(check_pPropertyCount))
1335 {
1336 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1337 }
1338 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1339 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001340 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001341 VkLayerProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001342 check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001343 if (pProperties)
1344 {
1345 if (!(check_pProperties))
1346 {
1347 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1348 }
1349 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1350 {
1351 unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1352 }
1353 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08001354 if (pProperties)
1355 {
1356 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1357 {
1358 transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1359 }
1360 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001361 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001362 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1363 stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001364 countingStream->clearPool();
1365 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001366 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001367 mImpl->log("finish vkEnumerateDeviceLayerProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001368 return vkEnumerateDeviceLayerProperties_VkResult_return;
1369}
1370
1371void VkEncoder::vkGetDeviceQueue(
1372 VkDevice device,
1373 uint32_t queueFamilyIndex,
1374 uint32_t queueIndex,
1375 VkQueue* pQueue)
1376{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001377 AEMU_SCOPED_TRACE("vkGetDeviceQueue encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001378 mImpl->log("start vkGetDeviceQueue");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001379 auto stream = mImpl->stream();
1380 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001381 auto resources = mImpl->resources();
1382 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001383 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001384 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001385 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001386 uint32_t local_queueIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001387 local_device = device;
1388 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001389 local_queueIndex = queueIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001390 countingStream->rewind();
1391 {
David Reveman9875f2c2019-06-11 21:47:12 -04001392 uint64_t cgen_var_85;
1393 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_85, 1);
1394 countingStream->write((uint64_t*)&cgen_var_85, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001395 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1396 countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001397 uint64_t cgen_var_86;
1398 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_86, 1);
1399 countingStream->write((uint64_t*)&cgen_var_86, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001400 }
1401 uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1402 countingStream->rewind();
1403 uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1404 stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1405 stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001406 uint64_t cgen_var_87;
1407 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_87, 1);
1408 stream->write((uint64_t*)&cgen_var_87, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001409 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1410 stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
Lingfeng Yange4008a02018-11-18 12:22:48 -08001411 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04001412 uint64_t cgen_var_88;
1413 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_88, 1);
1414 stream->write((uint64_t*)&cgen_var_88, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001415 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001416 AEMU_SCOPED_TRACE("vkGetDeviceQueue readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08001417 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04001418 uint64_t cgen_var_89;
1419 stream->read((uint64_t*)&cgen_var_89, 8);
1420 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_89, (VkQueue*)pQueue, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001421 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001422 AEMU_SCOPED_TRACE("vkGetDeviceQueue returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001423 mImpl->log("finish vkGetDeviceQueue");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001424}
1425
1426VkResult VkEncoder::vkQueueSubmit(
1427 VkQueue queue,
1428 uint32_t submitCount,
1429 const VkSubmitInfo* pSubmits,
1430 VkFence fence)
1431{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001432 AEMU_SCOPED_TRACE("vkQueueSubmit encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001433 mImpl->log("start vkQueueSubmit");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001434 auto stream = mImpl->stream();
1435 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001436 auto resources = mImpl->resources();
1437 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001438 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001439 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001440 uint32_t local_submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001441 VkSubmitInfo* local_pSubmits;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001442 VkFence local_fence;
1443 local_queue = queue;
1444 local_submitCount = submitCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001445 local_pSubmits = nullptr;
1446 if (pSubmits)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001447 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001448 local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001449 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1450 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001451 deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001452 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001453 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001454 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001455 if (local_pSubmits)
1456 {
1457 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1458 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001459 transform_tohost_VkSubmitInfo(mImpl->resources(), (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001460 }
1461 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001462 countingStream->rewind();
1463 {
David Reveman9875f2c2019-06-11 21:47:12 -04001464 uint64_t cgen_var_90;
1465 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_90, 1);
1466 countingStream->write((uint64_t*)&cgen_var_90, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001467 countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1468 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1469 {
1470 marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1471 }
David Reveman9875f2c2019-06-11 21:47:12 -04001472 uint64_t cgen_var_91;
1473 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_91, 1);
1474 countingStream->write((uint64_t*)&cgen_var_91, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001475 }
1476 uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1477 countingStream->rewind();
1478 uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1479 stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1480 stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001481 uint64_t cgen_var_92;
1482 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_92, 1);
1483 stream->write((uint64_t*)&cgen_var_92, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001484 stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001485 for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1486 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001487 marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001488 }
David Reveman9875f2c2019-06-11 21:47:12 -04001489 uint64_t cgen_var_93;
1490 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_93, 1);
1491 stream->write((uint64_t*)&cgen_var_93, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001492 AEMU_SCOPED_TRACE("vkQueueSubmit readParams");
1493 AEMU_SCOPED_TRACE("vkQueueSubmit returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001494 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1495 stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001496 countingStream->clearPool();
1497 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001498 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001499 mImpl->log("finish vkQueueSubmit");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001500 return vkQueueSubmit_VkResult_return;
1501}
1502
1503VkResult VkEncoder::vkQueueWaitIdle(
1504 VkQueue queue)
1505{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001506 AEMU_SCOPED_TRACE("vkQueueWaitIdle encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001507 mImpl->log("start vkQueueWaitIdle");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001508 auto stream = mImpl->stream();
1509 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001510 auto resources = mImpl->resources();
1511 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001512 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001513 VkQueue local_queue;
1514 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001515 countingStream->rewind();
1516 {
David Reveman9875f2c2019-06-11 21:47:12 -04001517 uint64_t cgen_var_94;
1518 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_94, 1);
1519 countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001520 }
1521 uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1522 countingStream->rewind();
1523 uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1524 stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1525 stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001526 uint64_t cgen_var_95;
1527 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_95, 1);
1528 stream->write((uint64_t*)&cgen_var_95, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001529 AEMU_SCOPED_TRACE("vkQueueWaitIdle readParams");
1530 AEMU_SCOPED_TRACE("vkQueueWaitIdle returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001531 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1532 stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001533 countingStream->clearPool();
1534 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001535 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001536 mImpl->log("finish vkQueueWaitIdle");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001537 return vkQueueWaitIdle_VkResult_return;
1538}
1539
1540VkResult VkEncoder::vkDeviceWaitIdle(
1541 VkDevice device)
1542{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001543 AEMU_SCOPED_TRACE("vkDeviceWaitIdle encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001544 mImpl->log("start vkDeviceWaitIdle");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001545 auto stream = mImpl->stream();
1546 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001547 auto resources = mImpl->resources();
1548 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001549 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001550 VkDevice local_device;
1551 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001552 countingStream->rewind();
1553 {
David Reveman9875f2c2019-06-11 21:47:12 -04001554 uint64_t cgen_var_96;
1555 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_96, 1);
1556 countingStream->write((uint64_t*)&cgen_var_96, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001557 }
1558 uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1559 countingStream->rewind();
1560 uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1561 stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1562 stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001563 uint64_t cgen_var_97;
1564 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_97, 1);
1565 stream->write((uint64_t*)&cgen_var_97, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001566 AEMU_SCOPED_TRACE("vkDeviceWaitIdle readParams");
1567 AEMU_SCOPED_TRACE("vkDeviceWaitIdle returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001568 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1569 stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001570 countingStream->clearPool();
1571 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001572 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001573 mImpl->log("finish vkDeviceWaitIdle");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001574 return vkDeviceWaitIdle_VkResult_return;
1575}
1576
1577VkResult VkEncoder::vkAllocateMemory(
1578 VkDevice device,
1579 const VkMemoryAllocateInfo* pAllocateInfo,
1580 const VkAllocationCallbacks* pAllocator,
1581 VkDeviceMemory* pMemory)
1582{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001583 AEMU_SCOPED_TRACE("vkAllocateMemory encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001584 mImpl->log("start vkAllocateMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001585 auto stream = mImpl->stream();
1586 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001587 auto resources = mImpl->resources();
1588 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001589 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001590 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001591 VkMemoryAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001592 VkAllocationCallbacks* local_pAllocator;
1593 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001594 local_pAllocateInfo = nullptr;
1595 if (pAllocateInfo)
1596 {
1597 local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1598 deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1599 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001600 local_pAllocator = nullptr;
1601 if (pAllocator)
1602 {
1603 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1604 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1605 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001606 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08001607 if (local_pAllocateInfo)
1608 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001609 transform_tohost_VkMemoryAllocateInfo(mImpl->resources(), (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001610 }
1611 if (local_pAllocator)
1612 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001613 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001614 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001615 countingStream->rewind();
1616 {
David Reveman9875f2c2019-06-11 21:47:12 -04001617 uint64_t cgen_var_98;
1618 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_98, 1);
1619 countingStream->write((uint64_t*)&cgen_var_98, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001620 marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001621 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001622 uint64_t cgen_var_99 = (uint64_t)(uintptr_t)local_pAllocator;
1623 countingStream->putBe64(cgen_var_99);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001624 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001625 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001626 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001627 }
David Reveman9875f2c2019-06-11 21:47:12 -04001628 uint64_t cgen_var_100;
1629 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_100, 1);
1630 countingStream->write((uint64_t*)&cgen_var_100, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001631 }
1632 uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1633 countingStream->rewind();
1634 uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1635 stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1636 stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001637 uint64_t cgen_var_101;
1638 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
1639 stream->write((uint64_t*)&cgen_var_101, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001640 marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001641 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001642 uint64_t cgen_var_102 = (uint64_t)(uintptr_t)local_pAllocator;
1643 stream->putBe64(cgen_var_102);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001644 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001645 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001646 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001647 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08001648 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04001649 uint64_t cgen_var_103;
1650 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_103, 1);
1651 stream->write((uint64_t*)&cgen_var_103, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001652 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001653 AEMU_SCOPED_TRACE("vkAllocateMemory readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08001654 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04001655 uint64_t cgen_var_104;
1656 stream->read((uint64_t*)&cgen_var_104, 8);
1657 stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_104, (VkDeviceMemory*)pMemory, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08001658 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001659 AEMU_SCOPED_TRACE("vkAllocateMemory returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001660 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1661 stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001662 countingStream->clearPool();
1663 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001664 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001665 mImpl->log("finish vkAllocateMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001666 return vkAllocateMemory_VkResult_return;
1667}
1668
1669void VkEncoder::vkFreeMemory(
1670 VkDevice device,
1671 VkDeviceMemory memory,
1672 const VkAllocationCallbacks* pAllocator)
1673{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001674 AEMU_SCOPED_TRACE("vkFreeMemory encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001675 mImpl->log("start vkFreeMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001676 auto stream = mImpl->stream();
1677 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001678 auto resources = mImpl->resources();
1679 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001680 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001681 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001682 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001683 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001684 local_device = device;
1685 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001686 local_pAllocator = nullptr;
1687 if (pAllocator)
1688 {
1689 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1690 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1691 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001692 local_pAllocator = nullptr;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08001693 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 -07001694 countingStream->rewind();
1695 {
David Reveman9875f2c2019-06-11 21:47:12 -04001696 uint64_t cgen_var_105;
1697 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_105, 1);
1698 countingStream->write((uint64_t*)&cgen_var_105, 1 * 8);
1699 uint64_t cgen_var_106;
1700 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_106, 1);
1701 countingStream->write((uint64_t*)&cgen_var_106, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001702 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001703 uint64_t cgen_var_107 = (uint64_t)(uintptr_t)local_pAllocator;
1704 countingStream->putBe64(cgen_var_107);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001705 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001706 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001707 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001708 }
1709 }
1710 uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1711 countingStream->rewind();
1712 uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1713 stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1714 stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001715 uint64_t cgen_var_108;
1716 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_108, 1);
1717 stream->write((uint64_t*)&cgen_var_108, 1 * 8);
1718 uint64_t cgen_var_109;
1719 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_109, 1);
1720 stream->write((uint64_t*)&cgen_var_109, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08001721 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04001722 uint64_t cgen_var_110 = (uint64_t)(uintptr_t)local_pAllocator;
1723 stream->putBe64(cgen_var_110);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001724 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001725 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001726 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001727 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001728 AEMU_SCOPED_TRACE("vkFreeMemory readParams");
1729 AEMU_SCOPED_TRACE("vkFreeMemory returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001730 resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001731 mImpl->log("finish vkFreeMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001732}
1733
1734VkResult VkEncoder::vkMapMemory(
1735 VkDevice device,
1736 VkDeviceMemory memory,
1737 VkDeviceSize offset,
1738 VkDeviceSize size,
1739 VkMemoryMapFlags flags,
1740 void** ppData)
1741{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001742 AEMU_SCOPED_TRACE("vkMapMemory resourceEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001743 VkResult vkMapMemory_VkResult_return = (VkResult)0;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001744 vkMapMemory_VkResult_return = mImpl->resources()->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001745 mImpl->log("finish vkMapMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001746 return vkMapMemory_VkResult_return;
1747}
1748
1749void VkEncoder::vkUnmapMemory(
1750 VkDevice device,
1751 VkDeviceMemory memory)
1752{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001753 AEMU_SCOPED_TRACE("vkUnmapMemory resourceEvent");
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08001754 mImpl->resources()->on_vkUnmapMemory(this, device, memory);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001755}
1756
1757VkResult VkEncoder::vkFlushMappedMemoryRanges(
1758 VkDevice device,
1759 uint32_t memoryRangeCount,
1760 const VkMappedMemoryRange* pMemoryRanges)
1761{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001762 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001763 mImpl->log("start vkFlushMappedMemoryRanges");
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001764 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001765 auto stream = mImpl->stream();
1766 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001767 auto resources = mImpl->resources();
1768 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001769 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001770 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001771 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001772 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001773 local_device = device;
1774 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001775 local_pMemoryRanges = nullptr;
1776 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001777 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001778 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001779 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1780 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001781 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1782 }
1783 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001784 if (local_pMemoryRanges)
1785 {
1786 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1787 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001788 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001789 }
1790 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001791 countingStream->rewind();
1792 {
David Reveman9875f2c2019-06-11 21:47:12 -04001793 uint64_t cgen_var_111;
1794 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_111, 1);
1795 countingStream->write((uint64_t*)&cgen_var_111, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001796 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1797 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1798 {
1799 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001800 }
1801 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001802 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001803 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001804 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1805 {
1806 auto range = pMemoryRanges[i];
1807 auto memory = pMemoryRanges[i].memory;
1808 auto size = pMemoryRanges[i].size;
1809 auto offset = pMemoryRanges[i].offset;
1810 uint64_t streamSize = 0;
1811 if (!memory) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1812 auto hostPtr = resources->getMappedPointer(memory);
1813 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1814 if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1815 streamSize = actualSize;
1816 countingStream->write(&streamSize, sizeof(uint64_t));
1817 uint8_t* targetRange = hostPtr + offset;
1818 countingStream->write(targetRange, actualSize);
1819 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001820 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001821 uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1822 countingStream->rewind();
1823 uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1824 stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1825 stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001826 uint64_t cgen_var_112;
1827 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_112, 1);
1828 stream->write((uint64_t*)&cgen_var_112, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001829 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001830 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1831 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001832 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001833 }
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001834 if (!resources->usingDirectMapping())
Lingfeng Yange30d3382018-11-09 08:24:37 -08001835 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001836 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1837 {
1838 auto range = pMemoryRanges[i];
1839 auto memory = pMemoryRanges[i].memory;
1840 auto size = pMemoryRanges[i].size;
1841 auto offset = pMemoryRanges[i].offset;
1842 uint64_t streamSize = 0;
1843 if (!memory) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1844 auto hostPtr = resources->getMappedPointer(memory);
1845 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1846 if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1847 streamSize = actualSize;
1848 stream->write(&streamSize, sizeof(uint64_t));
1849 uint8_t* targetRange = hostPtr + offset;
1850 stream->write(targetRange, actualSize);
1851 }
Lingfeng Yange30d3382018-11-09 08:24:37 -08001852 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001853 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges readParams");
1854 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001855 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1856 stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001857 countingStream->clearPool();
1858 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001859 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001860 mImpl->log("finish vkFlushMappedMemoryRanges");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001861 return vkFlushMappedMemoryRanges_VkResult_return;
1862}
1863
1864VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1865 VkDevice device,
1866 uint32_t memoryRangeCount,
1867 const VkMappedMemoryRange* pMemoryRanges)
1868{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001869 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001870 mImpl->log("start vkInvalidateMappedMemoryRanges");
Lingfeng Yang29c99d92018-11-30 11:15:29 -08001871 VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001872 auto stream = mImpl->stream();
1873 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001874 auto resources = mImpl->resources();
1875 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001876 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001877 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001878 uint32_t local_memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001879 VkMappedMemoryRange* local_pMemoryRanges;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001880 local_device = device;
1881 local_memoryRangeCount = memoryRangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001882 local_pMemoryRanges = nullptr;
1883 if (pMemoryRanges)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001884 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001885 local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001886 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1887 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001888 deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1889 }
1890 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08001891 if (local_pMemoryRanges)
1892 {
1893 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1894 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08001895 transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08001896 }
1897 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001898 countingStream->rewind();
1899 {
David Reveman9875f2c2019-06-11 21:47:12 -04001900 uint64_t cgen_var_113;
1901 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
1902 countingStream->write((uint64_t*)&cgen_var_113, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001903 countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1904 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1905 {
1906 marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001907 }
1908 }
1909 uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1910 countingStream->rewind();
1911 uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1912 stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1913 stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001914 uint64_t cgen_var_114;
1915 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_114, 1);
1916 stream->write((uint64_t*)&cgen_var_114, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001917 stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001918 for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1919 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001920 marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001921 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001922 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges readParams");
1923 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001924 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1925 stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08001926 countingStream->clearPool();
1927 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001928 pool->freeAll();
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001929 if (!resources->usingDirectMapping())
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001930 {
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08001931 for (uint32_t i = 0; i < memoryRangeCount; ++i)
1932 {
1933 auto range = pMemoryRanges[i];
1934 auto memory = pMemoryRanges[i].memory;
1935 auto size = pMemoryRanges[i].size;
1936 auto offset = pMemoryRanges[i].offset;
1937 uint64_t streamSize = 0;
1938 if (!memory) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1939 auto hostPtr = resources->getMappedPointer(memory);
1940 auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1941 if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1942 streamSize = actualSize;
1943 stream->read(&streamSize, sizeof(uint64_t));
1944 uint8_t* targetRange = hostPtr + offset;
1945 stream->read(targetRange, actualSize);
1946 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08001947 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001948 mImpl->log("finish vkInvalidateMappedMemoryRanges");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001949 return vkInvalidateMappedMemoryRanges_VkResult_return;
1950}
1951
1952void VkEncoder::vkGetDeviceMemoryCommitment(
1953 VkDevice device,
1954 VkDeviceMemory memory,
1955 VkDeviceSize* pCommittedMemoryInBytes)
1956{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001957 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001958 mImpl->log("start vkGetDeviceMemoryCommitment");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001959 auto stream = mImpl->stream();
1960 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001961 auto resources = mImpl->resources();
1962 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08001963 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001964 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001965 VkDeviceMemory local_memory;
Lingfeng Yang9666b852018-11-13 23:09:59 -08001966 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08001967 local_memory = memory;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08001968 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 -07001969 countingStream->rewind();
1970 {
David Reveman9875f2c2019-06-11 21:47:12 -04001971 uint64_t cgen_var_115;
1972 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_115, 1);
1973 countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
1974 uint64_t cgen_var_116;
1975 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_116, 1);
1976 countingStream->write((uint64_t*)&cgen_var_116, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001977 countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1978 }
1979 uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1980 countingStream->rewind();
1981 uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1982 stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1983 stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04001984 uint64_t cgen_var_117;
1985 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_117, 1);
1986 stream->write((uint64_t*)&cgen_var_117, 1 * 8);
1987 uint64_t cgen_var_118;
1988 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1);
1989 stream->write((uint64_t*)&cgen_var_118, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001990 stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001991 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001992 stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001993 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08001994 mImpl->log("finish vkGetDeviceMemoryCommitment");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07001995}
1996
1997VkResult VkEncoder::vkBindBufferMemory(
1998 VkDevice device,
1999 VkBuffer buffer,
2000 VkDeviceMemory memory,
2001 VkDeviceSize memoryOffset)
2002{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002003 AEMU_SCOPED_TRACE("vkBindBufferMemory encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002004 mImpl->log("start vkBindBufferMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002005 auto stream = mImpl->stream();
2006 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002007 auto resources = mImpl->resources();
2008 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002009 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002010 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002011 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002012 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002013 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002014 local_device = device;
2015 local_buffer = buffer;
2016 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002017 local_memoryOffset = memoryOffset;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08002018 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 -07002019 countingStream->rewind();
2020 {
David Reveman9875f2c2019-06-11 21:47:12 -04002021 uint64_t cgen_var_119;
2022 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_119, 1);
2023 countingStream->write((uint64_t*)&cgen_var_119, 1 * 8);
2024 uint64_t cgen_var_120;
2025 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_120, 1);
2026 countingStream->write((uint64_t*)&cgen_var_120, 1 * 8);
2027 uint64_t cgen_var_121;
2028 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_121, 1);
2029 countingStream->write((uint64_t*)&cgen_var_121, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002030 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002031 }
2032 uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2033 countingStream->rewind();
2034 uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
2035 stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
2036 stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002037 uint64_t cgen_var_122;
2038 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_122, 1);
2039 stream->write((uint64_t*)&cgen_var_122, 1 * 8);
2040 uint64_t cgen_var_123;
2041 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_123, 1);
2042 stream->write((uint64_t*)&cgen_var_123, 1 * 8);
2043 uint64_t cgen_var_124;
2044 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_124, 1);
2045 stream->write((uint64_t*)&cgen_var_124, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002046 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002047 AEMU_SCOPED_TRACE("vkBindBufferMemory readParams");
2048 AEMU_SCOPED_TRACE("vkBindBufferMemory returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002049 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
2050 stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002051 countingStream->clearPool();
2052 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002053 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002054 mImpl->log("finish vkBindBufferMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002055 return vkBindBufferMemory_VkResult_return;
2056}
2057
2058VkResult VkEncoder::vkBindImageMemory(
2059 VkDevice device,
2060 VkImage image,
2061 VkDeviceMemory memory,
2062 VkDeviceSize memoryOffset)
2063{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002064 AEMU_SCOPED_TRACE("vkBindImageMemory encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002065 mImpl->log("start vkBindImageMemory");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002066 auto stream = mImpl->stream();
2067 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002068 auto resources = mImpl->resources();
2069 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002070 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002071 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002072 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002073 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002074 VkDeviceSize local_memoryOffset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002075 local_device = device;
2076 local_image = image;
2077 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002078 local_memoryOffset = memoryOffset;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -08002079 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 -07002080 countingStream->rewind();
2081 {
David Reveman9875f2c2019-06-11 21:47:12 -04002082 uint64_t cgen_var_125;
2083 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_125, 1);
2084 countingStream->write((uint64_t*)&cgen_var_125, 1 * 8);
2085 uint64_t cgen_var_126;
2086 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_126, 1);
2087 countingStream->write((uint64_t*)&cgen_var_126, 1 * 8);
2088 uint64_t cgen_var_127;
2089 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_127, 1);
2090 countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002091 countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002092 }
2093 uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2094 countingStream->rewind();
2095 uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
2096 stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
2097 stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002098 uint64_t cgen_var_128;
2099 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_128, 1);
2100 stream->write((uint64_t*)&cgen_var_128, 1 * 8);
2101 uint64_t cgen_var_129;
2102 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_129, 1);
2103 stream->write((uint64_t*)&cgen_var_129, 1 * 8);
2104 uint64_t cgen_var_130;
2105 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_130, 1);
2106 stream->write((uint64_t*)&cgen_var_130, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002107 stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002108 AEMU_SCOPED_TRACE("vkBindImageMemory readParams");
2109 AEMU_SCOPED_TRACE("vkBindImageMemory returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002110 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
2111 stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002112 countingStream->clearPool();
2113 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002114 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002115 mImpl->log("finish vkBindImageMemory");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002116 return vkBindImageMemory_VkResult_return;
2117}
2118
2119void VkEncoder::vkGetBufferMemoryRequirements(
2120 VkDevice device,
2121 VkBuffer buffer,
2122 VkMemoryRequirements* pMemoryRequirements)
2123{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002124 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002125 mImpl->log("start vkGetBufferMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002126 auto stream = mImpl->stream();
2127 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002128 auto resources = mImpl->resources();
2129 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002130 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002131 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002132 VkBuffer local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002133 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002134 local_buffer = buffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002135 countingStream->rewind();
2136 {
David Reveman9875f2c2019-06-11 21:47:12 -04002137 uint64_t cgen_var_131;
2138 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
2139 countingStream->write((uint64_t*)&cgen_var_131, 1 * 8);
2140 uint64_t cgen_var_132;
2141 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_132, 1);
2142 countingStream->write((uint64_t*)&cgen_var_132, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002143 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
2144 }
2145 uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2146 countingStream->rewind();
2147 uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
2148 stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
2149 stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002150 uint64_t cgen_var_133;
2151 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_133, 1);
2152 stream->write((uint64_t*)&cgen_var_133, 1 * 8);
2153 uint64_t cgen_var_134;
2154 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_134, 1);
2155 stream->write((uint64_t*)&cgen_var_134, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002156 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002157 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002158 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08002159 if (pMemoryRequirements)
2160 {
2161 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
2162 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002163 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002164 mImpl->log("finish vkGetBufferMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002165}
2166
2167void VkEncoder::vkGetImageMemoryRequirements(
2168 VkDevice device,
2169 VkImage image,
2170 VkMemoryRequirements* pMemoryRequirements)
2171{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002172 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002173 mImpl->log("start vkGetImageMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002174 auto stream = mImpl->stream();
2175 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002176 auto resources = mImpl->resources();
2177 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002178 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002179 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002180 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002181 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002182 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002183 countingStream->rewind();
2184 {
David Reveman9875f2c2019-06-11 21:47:12 -04002185 uint64_t cgen_var_135;
2186 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_135, 1);
2187 countingStream->write((uint64_t*)&cgen_var_135, 1 * 8);
2188 uint64_t cgen_var_136;
2189 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_136, 1);
2190 countingStream->write((uint64_t*)&cgen_var_136, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002191 marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
2192 }
2193 uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2194 countingStream->rewind();
2195 uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
2196 stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
2197 stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002198 uint64_t cgen_var_137;
2199 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_137, 1);
2200 stream->write((uint64_t*)&cgen_var_137, 1 * 8);
2201 uint64_t cgen_var_138;
2202 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_138, 1);
2203 stream->write((uint64_t*)&cgen_var_138, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002204 marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002205 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002206 unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -08002207 if (pMemoryRequirements)
2208 {
2209 transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
2210 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002211 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002212 mImpl->log("finish vkGetImageMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002213}
2214
2215void VkEncoder::vkGetImageSparseMemoryRequirements(
2216 VkDevice device,
2217 VkImage image,
2218 uint32_t* pSparseMemoryRequirementCount,
2219 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
2220{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002221 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002222 mImpl->log("start vkGetImageSparseMemoryRequirements");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002223 auto stream = mImpl->stream();
2224 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002225 auto resources = mImpl->resources();
2226 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002227 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002228 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002229 VkImage local_image;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002230 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002231 local_image = image;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002232 countingStream->rewind();
2233 {
David Reveman9875f2c2019-06-11 21:47:12 -04002234 uint64_t cgen_var_139;
2235 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_139, 1);
2236 countingStream->write((uint64_t*)&cgen_var_139, 1 * 8);
2237 uint64_t cgen_var_140;
2238 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_140, 1);
2239 countingStream->write((uint64_t*)&cgen_var_140, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002240 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002241 uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2242 countingStream->putBe64(cgen_var_141);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002243 if (pSparseMemoryRequirementCount)
2244 {
2245 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2246 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002247 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002248 uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2249 countingStream->putBe64(cgen_var_142);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002250 if (pSparseMemoryRequirements)
2251 {
2252 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2253 {
2254 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2255 }
2256 }
2257 }
2258 uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2259 countingStream->rewind();
2260 uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
2261 stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
2262 stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002263 uint64_t cgen_var_143;
2264 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_143, 1);
2265 stream->write((uint64_t*)&cgen_var_143, 1 * 8);
2266 uint64_t cgen_var_144;
2267 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_144, 1);
2268 stream->write((uint64_t*)&cgen_var_144, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002269 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002270 uint64_t cgen_var_145 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2271 stream->putBe64(cgen_var_145);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002272 if (pSparseMemoryRequirementCount)
2273 {
2274 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2275 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002276 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002277 uint64_t cgen_var_146 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2278 stream->putBe64(cgen_var_146);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002279 if (pSparseMemoryRequirements)
2280 {
2281 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2282 {
2283 marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2284 }
2285 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002286 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002287 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002288 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002289 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002290 if (pSparseMemoryRequirementCount)
2291 {
2292 if (!(check_pSparseMemoryRequirementCount))
2293 {
2294 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
2295 }
2296 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2297 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002298 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002299 VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002300 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002301 if (pSparseMemoryRequirements)
2302 {
2303 if (!(check_pSparseMemoryRequirements))
2304 {
2305 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
2306 }
2307 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2308 {
2309 unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2310 }
2311 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002312 if (pSparseMemoryRequirements)
2313 {
2314 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2315 {
2316 transform_fromhost_VkSparseImageMemoryRequirements(mImpl->resources(), (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2317 }
2318 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002319 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002320 mImpl->log("finish vkGetImageSparseMemoryRequirements");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002321}
2322
2323void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
2324 VkPhysicalDevice physicalDevice,
2325 VkFormat format,
2326 VkImageType type,
2327 VkSampleCountFlagBits samples,
2328 VkImageUsageFlags usage,
2329 VkImageTiling tiling,
2330 uint32_t* pPropertyCount,
2331 VkSparseImageFormatProperties* pProperties)
2332{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002333 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002334 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002335 auto stream = mImpl->stream();
2336 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002337 auto resources = mImpl->resources();
2338 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002339 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002340 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002341 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002342 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002343 VkSampleCountFlagBits local_samples;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002344 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002345 VkImageTiling local_tiling;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002346 local_physicalDevice = physicalDevice;
2347 local_format = format;
2348 local_type = type;
2349 local_samples = samples;
2350 local_usage = usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002351 local_tiling = tiling;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002352 countingStream->rewind();
2353 {
David Reveman9875f2c2019-06-11 21:47:12 -04002354 uint64_t cgen_var_149;
2355 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_149, 1);
2356 countingStream->write((uint64_t*)&cgen_var_149, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002357 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
2358 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
2359 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2360 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2361 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002362 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002363 uint64_t cgen_var_150 = (uint64_t)(uintptr_t)pPropertyCount;
2364 countingStream->putBe64(cgen_var_150);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002365 if (pPropertyCount)
2366 {
2367 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2368 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002369 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002370 uint64_t cgen_var_151 = (uint64_t)(uintptr_t)pProperties;
2371 countingStream->putBe64(cgen_var_151);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002372 if (pProperties)
2373 {
2374 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2375 {
2376 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
2377 }
2378 }
2379 }
2380 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2381 countingStream->rewind();
2382 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
2383 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
2384 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002385 uint64_t cgen_var_152;
2386 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_152, 1);
2387 stream->write((uint64_t*)&cgen_var_152, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002388 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
2389 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
2390 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2391 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2392 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002393 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002394 uint64_t cgen_var_153 = (uint64_t)(uintptr_t)pPropertyCount;
2395 stream->putBe64(cgen_var_153);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002396 if (pPropertyCount)
2397 {
2398 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2399 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002400 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002401 uint64_t cgen_var_154 = (uint64_t)(uintptr_t)pProperties;
2402 stream->putBe64(cgen_var_154);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002403 if (pProperties)
2404 {
2405 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2406 {
2407 marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2408 }
2409 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002410 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002411 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002412 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002413 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002414 if (pPropertyCount)
2415 {
2416 if (!(check_pPropertyCount))
2417 {
2418 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
2419 }
2420 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
2421 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002422 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002423 VkSparseImageFormatProperties* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002424 check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002425 if (pProperties)
2426 {
2427 if (!(check_pProperties))
2428 {
2429 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
2430 }
2431 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2432 {
2433 unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2434 }
2435 }
Lingfeng Yang97a06702018-12-24 17:02:43 -08002436 if (pProperties)
2437 {
2438 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2439 {
2440 transform_fromhost_VkSparseImageFormatProperties(mImpl->resources(), (VkSparseImageFormatProperties*)(pProperties + i));
2441 }
2442 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002443 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002444 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002445}
2446
2447VkResult VkEncoder::vkQueueBindSparse(
2448 VkQueue queue,
2449 uint32_t bindInfoCount,
2450 const VkBindSparseInfo* pBindInfo,
2451 VkFence fence)
2452{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002453 AEMU_SCOPED_TRACE("vkQueueBindSparse encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002454 mImpl->log("start vkQueueBindSparse");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002455 auto stream = mImpl->stream();
2456 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002457 auto resources = mImpl->resources();
2458 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002459 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002460 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002461 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002462 VkBindSparseInfo* local_pBindInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002463 VkFence local_fence;
2464 local_queue = queue;
2465 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002466 local_pBindInfo = nullptr;
2467 if (pBindInfo)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002468 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002469 local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002470 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2471 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002472 deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002473 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002474 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002475 local_fence = fence;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002476 if (local_pBindInfo)
2477 {
2478 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2479 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002480 transform_tohost_VkBindSparseInfo(mImpl->resources(), (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002481 }
2482 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002483 countingStream->rewind();
2484 {
David Reveman9875f2c2019-06-11 21:47:12 -04002485 uint64_t cgen_var_157;
2486 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_157, 1);
2487 countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002488 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2489 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2490 {
2491 marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2492 }
David Reveman9875f2c2019-06-11 21:47:12 -04002493 uint64_t cgen_var_158;
2494 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_158, 1);
2495 countingStream->write((uint64_t*)&cgen_var_158, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002496 }
2497 uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2498 countingStream->rewind();
2499 uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2500 stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2501 stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002502 uint64_t cgen_var_159;
2503 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_159, 1);
2504 stream->write((uint64_t*)&cgen_var_159, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002505 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002506 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2507 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002508 marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002509 }
David Reveman9875f2c2019-06-11 21:47:12 -04002510 uint64_t cgen_var_160;
2511 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1);
2512 stream->write((uint64_t*)&cgen_var_160, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002513 AEMU_SCOPED_TRACE("vkQueueBindSparse readParams");
2514 AEMU_SCOPED_TRACE("vkQueueBindSparse returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002515 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2516 stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002517 countingStream->clearPool();
2518 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002519 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002520 mImpl->log("finish vkQueueBindSparse");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002521 return vkQueueBindSparse_VkResult_return;
2522}
2523
2524VkResult VkEncoder::vkCreateFence(
2525 VkDevice device,
2526 const VkFenceCreateInfo* pCreateInfo,
2527 const VkAllocationCallbacks* pAllocator,
2528 VkFence* pFence)
2529{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002530 AEMU_SCOPED_TRACE("vkCreateFence encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002531 mImpl->log("start vkCreateFence");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002532 auto stream = mImpl->stream();
2533 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002534 auto resources = mImpl->resources();
2535 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002536 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002537 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002538 VkFenceCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002539 VkAllocationCallbacks* local_pAllocator;
2540 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002541 local_pCreateInfo = nullptr;
2542 if (pCreateInfo)
2543 {
2544 local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2545 deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2546 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002547 local_pAllocator = nullptr;
2548 if (pAllocator)
2549 {
2550 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2551 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2552 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002553 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002554 if (local_pCreateInfo)
2555 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002556 transform_tohost_VkFenceCreateInfo(mImpl->resources(), (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002557 }
2558 if (local_pAllocator)
2559 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002560 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002561 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002562 countingStream->rewind();
2563 {
David Reveman9875f2c2019-06-11 21:47:12 -04002564 uint64_t cgen_var_161;
2565 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_161, 1);
2566 countingStream->write((uint64_t*)&cgen_var_161, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002567 marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002568 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002569 uint64_t cgen_var_162 = (uint64_t)(uintptr_t)local_pAllocator;
2570 countingStream->putBe64(cgen_var_162);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002571 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002572 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002573 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002574 }
David Reveman9875f2c2019-06-11 21:47:12 -04002575 uint64_t cgen_var_163;
2576 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_163, 1);
2577 countingStream->write((uint64_t*)&cgen_var_163, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002578 }
2579 uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2580 countingStream->rewind();
2581 uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2582 stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2583 stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002584 uint64_t cgen_var_164;
2585 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
2586 stream->write((uint64_t*)&cgen_var_164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002587 marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002588 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002589 uint64_t cgen_var_165 = (uint64_t)(uintptr_t)local_pAllocator;
2590 stream->putBe64(cgen_var_165);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002591 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002592 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002593 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002594 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002595 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04002596 uint64_t cgen_var_166;
2597 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_166, 1);
2598 stream->write((uint64_t*)&cgen_var_166, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002599 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002600 AEMU_SCOPED_TRACE("vkCreateFence readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08002601 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04002602 uint64_t cgen_var_167;
2603 stream->read((uint64_t*)&cgen_var_167, 8);
2604 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_167, (VkFence*)pFence, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002605 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002606 AEMU_SCOPED_TRACE("vkCreateFence returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002607 VkResult vkCreateFence_VkResult_return = (VkResult)0;
2608 stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002609 countingStream->clearPool();
2610 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002611 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002612 mImpl->log("finish vkCreateFence");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002613 return vkCreateFence_VkResult_return;
2614}
2615
2616void VkEncoder::vkDestroyFence(
2617 VkDevice device,
2618 VkFence fence,
2619 const VkAllocationCallbacks* pAllocator)
2620{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002621 AEMU_SCOPED_TRACE("vkDestroyFence encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002622 mImpl->log("start vkDestroyFence");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002623 auto stream = mImpl->stream();
2624 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002625 auto resources = mImpl->resources();
2626 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002627 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002628 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002629 VkFence local_fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002630 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002631 local_device = device;
2632 local_fence = fence;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002633 local_pAllocator = nullptr;
2634 if (pAllocator)
2635 {
2636 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2637 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2638 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002639 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002640 if (local_pAllocator)
2641 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002642 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002643 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002644 countingStream->rewind();
2645 {
David Reveman9875f2c2019-06-11 21:47:12 -04002646 uint64_t cgen_var_168;
2647 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_168, 1);
2648 countingStream->write((uint64_t*)&cgen_var_168, 1 * 8);
2649 uint64_t cgen_var_169;
2650 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_169, 1);
2651 countingStream->write((uint64_t*)&cgen_var_169, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002652 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002653 uint64_t cgen_var_170 = (uint64_t)(uintptr_t)local_pAllocator;
2654 countingStream->putBe64(cgen_var_170);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002655 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002656 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002657 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002658 }
2659 }
2660 uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2661 countingStream->rewind();
2662 uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2663 stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2664 stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002665 uint64_t cgen_var_171;
2666 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_171, 1);
2667 stream->write((uint64_t*)&cgen_var_171, 1 * 8);
2668 uint64_t cgen_var_172;
2669 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_172, 1);
2670 stream->write((uint64_t*)&cgen_var_172, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002671 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002672 uint64_t cgen_var_173 = (uint64_t)(uintptr_t)local_pAllocator;
2673 stream->putBe64(cgen_var_173);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002674 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002675 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002676 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002677 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002678 AEMU_SCOPED_TRACE("vkDestroyFence readParams");
2679 AEMU_SCOPED_TRACE("vkDestroyFence returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002680 resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002681 mImpl->log("finish vkDestroyFence");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002682}
2683
2684VkResult VkEncoder::vkResetFences(
2685 VkDevice device,
2686 uint32_t fenceCount,
2687 const VkFence* pFences)
2688{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002689 AEMU_SCOPED_TRACE("vkResetFences encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002690 mImpl->log("start vkResetFences");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002691 auto stream = mImpl->stream();
2692 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002693 auto resources = mImpl->resources();
2694 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002695 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002696 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002697 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002698 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002699 local_device = device;
2700 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002701 local_pFences = nullptr;
2702 if (pFences)
2703 {
2704 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2705 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002706 countingStream->rewind();
2707 {
David Reveman9875f2c2019-06-11 21:47:12 -04002708 uint64_t cgen_var_174;
2709 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
2710 countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002711 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002712 if (((fenceCount)))
2713 {
David Reveman9875f2c2019-06-11 21:47:12 -04002714 uint64_t* cgen_var_175;
2715 countingStream->alloc((void**)&cgen_var_175, ((fenceCount)) * 8);
2716 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_175, ((fenceCount)));
2717 countingStream->write((uint64_t*)cgen_var_175, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002718 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002719 }
2720 uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2721 countingStream->rewind();
2722 uint32_t opcode_vkResetFences = OP_vkResetFences;
2723 stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2724 stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002725 uint64_t cgen_var_176;
2726 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_176, 1);
2727 stream->write((uint64_t*)&cgen_var_176, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002728 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002729 if (((fenceCount)))
2730 {
David Reveman9875f2c2019-06-11 21:47:12 -04002731 uint64_t* cgen_var_177;
2732 stream->alloc((void**)&cgen_var_177, ((fenceCount)) * 8);
2733 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_177, ((fenceCount)));
2734 stream->write((uint64_t*)cgen_var_177, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002735 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002736 AEMU_SCOPED_TRACE("vkResetFences readParams");
2737 AEMU_SCOPED_TRACE("vkResetFences returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002738 VkResult vkResetFences_VkResult_return = (VkResult)0;
2739 stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002740 countingStream->clearPool();
2741 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002742 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002743 mImpl->log("finish vkResetFences");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002744 return vkResetFences_VkResult_return;
2745}
2746
2747VkResult VkEncoder::vkGetFenceStatus(
2748 VkDevice device,
2749 VkFence fence)
2750{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002751 AEMU_SCOPED_TRACE("vkGetFenceStatus encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002752 mImpl->log("start vkGetFenceStatus");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002753 auto stream = mImpl->stream();
2754 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002755 auto resources = mImpl->resources();
2756 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002757 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002758 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002759 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002760 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002761 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002762 countingStream->rewind();
2763 {
David Reveman9875f2c2019-06-11 21:47:12 -04002764 uint64_t cgen_var_178;
2765 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_178, 1);
2766 countingStream->write((uint64_t*)&cgen_var_178, 1 * 8);
2767 uint64_t cgen_var_179;
2768 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_179, 1);
2769 countingStream->write((uint64_t*)&cgen_var_179, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002770 }
2771 uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2772 countingStream->rewind();
2773 uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2774 stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2775 stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002776 uint64_t cgen_var_180;
2777 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_180, 1);
2778 stream->write((uint64_t*)&cgen_var_180, 1 * 8);
2779 uint64_t cgen_var_181;
2780 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_181, 1);
2781 stream->write((uint64_t*)&cgen_var_181, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002782 AEMU_SCOPED_TRACE("vkGetFenceStatus readParams");
2783 AEMU_SCOPED_TRACE("vkGetFenceStatus returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002784 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2785 stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002786 countingStream->clearPool();
2787 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002788 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002789 mImpl->log("finish vkGetFenceStatus");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002790 return vkGetFenceStatus_VkResult_return;
2791}
2792
2793VkResult VkEncoder::vkWaitForFences(
2794 VkDevice device,
2795 uint32_t fenceCount,
2796 const VkFence* pFences,
2797 VkBool32 waitAll,
2798 uint64_t timeout)
2799{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002800 AEMU_SCOPED_TRACE("vkWaitForFences encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002801 mImpl->log("start vkWaitForFences");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002802 auto stream = mImpl->stream();
2803 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002804 auto resources = mImpl->resources();
2805 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002806 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002807 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002808 uint32_t local_fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002809 VkFence* local_pFences;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002810 VkBool32 local_waitAll;
2811 uint64_t local_timeout;
2812 local_device = device;
2813 local_fenceCount = fenceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002814 local_pFences = nullptr;
2815 if (pFences)
2816 {
2817 local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2818 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002819 local_waitAll = waitAll;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002820 local_timeout = timeout;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002821 countingStream->rewind();
2822 {
David Reveman9875f2c2019-06-11 21:47:12 -04002823 uint64_t cgen_var_182;
2824 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_182, 1);
2825 countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002826 countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002827 if (((fenceCount)))
2828 {
David Reveman9875f2c2019-06-11 21:47:12 -04002829 uint64_t* cgen_var_183;
2830 countingStream->alloc((void**)&cgen_var_183, ((fenceCount)) * 8);
2831 countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_183, ((fenceCount)));
2832 countingStream->write((uint64_t*)cgen_var_183, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002833 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002834 countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2835 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002836 }
2837 uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2838 countingStream->rewind();
2839 uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2840 stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2841 stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002842 uint64_t cgen_var_184;
2843 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_184, 1);
2844 stream->write((uint64_t*)&cgen_var_184, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002845 stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002846 if (((fenceCount)))
2847 {
David Reveman9875f2c2019-06-11 21:47:12 -04002848 uint64_t* cgen_var_185;
2849 stream->alloc((void**)&cgen_var_185, ((fenceCount)) * 8);
2850 stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_185, ((fenceCount)));
2851 stream->write((uint64_t*)cgen_var_185, ((fenceCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08002852 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002853 stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2854 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002855 AEMU_SCOPED_TRACE("vkWaitForFences readParams");
2856 AEMU_SCOPED_TRACE("vkWaitForFences returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002857 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2858 stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002859 countingStream->clearPool();
2860 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002861 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002862 mImpl->log("finish vkWaitForFences");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002863 return vkWaitForFences_VkResult_return;
2864}
2865
2866VkResult VkEncoder::vkCreateSemaphore(
2867 VkDevice device,
2868 const VkSemaphoreCreateInfo* pCreateInfo,
2869 const VkAllocationCallbacks* pAllocator,
2870 VkSemaphore* pSemaphore)
2871{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002872 AEMU_SCOPED_TRACE("vkCreateSemaphore encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002873 mImpl->log("start vkCreateSemaphore");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002874 auto stream = mImpl->stream();
2875 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002876 auto resources = mImpl->resources();
2877 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002878 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002879 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002880 VkSemaphoreCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002881 VkAllocationCallbacks* local_pAllocator;
2882 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002883 local_pCreateInfo = nullptr;
2884 if (pCreateInfo)
2885 {
2886 local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2887 deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2888 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002889 local_pAllocator = nullptr;
2890 if (pAllocator)
2891 {
2892 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2893 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2894 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002895 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002896 if (local_pCreateInfo)
2897 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002898 transform_tohost_VkSemaphoreCreateInfo(mImpl->resources(), (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002899 }
2900 if (local_pAllocator)
2901 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002902 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002903 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002904 countingStream->rewind();
2905 {
David Reveman9875f2c2019-06-11 21:47:12 -04002906 uint64_t cgen_var_186;
2907 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_186, 1);
2908 countingStream->write((uint64_t*)&cgen_var_186, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002909 marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002910 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002911 uint64_t cgen_var_187 = (uint64_t)(uintptr_t)local_pAllocator;
2912 countingStream->putBe64(cgen_var_187);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002913 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002914 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002915 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002916 }
David Reveman9875f2c2019-06-11 21:47:12 -04002917 uint64_t cgen_var_188;
2918 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_188, 1);
2919 countingStream->write((uint64_t*)&cgen_var_188, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002920 }
2921 uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2922 countingStream->rewind();
2923 uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2924 stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2925 stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04002926 uint64_t cgen_var_189;
2927 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_189, 1);
2928 stream->write((uint64_t*)&cgen_var_189, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002929 marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002930 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002931 uint64_t cgen_var_190 = (uint64_t)(uintptr_t)local_pAllocator;
2932 stream->putBe64(cgen_var_190);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002933 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002934 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002935 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002936 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08002937 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04002938 uint64_t cgen_var_191;
2939 stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_191, 1);
2940 stream->write((uint64_t*)&cgen_var_191, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002941 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002942 AEMU_SCOPED_TRACE("vkCreateSemaphore readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08002943 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04002944 uint64_t cgen_var_192;
2945 stream->read((uint64_t*)&cgen_var_192, 8);
2946 stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_192, (VkSemaphore*)pSemaphore, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08002947 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002948 AEMU_SCOPED_TRACE("vkCreateSemaphore returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002949 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2950 stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08002951 countingStream->clearPool();
2952 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002953 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002954 mImpl->log("finish vkCreateSemaphore");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002955 return vkCreateSemaphore_VkResult_return;
2956}
2957
2958void VkEncoder::vkDestroySemaphore(
2959 VkDevice device,
2960 VkSemaphore semaphore,
2961 const VkAllocationCallbacks* pAllocator)
2962{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002963 AEMU_SCOPED_TRACE("vkDestroySemaphore encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08002964 mImpl->log("start vkDestroySemaphore");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002965 auto stream = mImpl->stream();
2966 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002967 auto resources = mImpl->resources();
2968 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08002969 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002970 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002971 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002972 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08002973 local_device = device;
2974 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002975 local_pAllocator = nullptr;
2976 if (pAllocator)
2977 {
2978 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2979 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2980 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08002981 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08002982 if (local_pAllocator)
2983 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08002984 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08002985 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002986 countingStream->rewind();
2987 {
David Reveman9875f2c2019-06-11 21:47:12 -04002988 uint64_t cgen_var_193;
2989 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_193, 1);
2990 countingStream->write((uint64_t*)&cgen_var_193, 1 * 8);
2991 uint64_t cgen_var_194;
2992 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_194, 1);
2993 countingStream->write((uint64_t*)&cgen_var_194, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08002994 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04002995 uint64_t cgen_var_195 = (uint64_t)(uintptr_t)local_pAllocator;
2996 countingStream->putBe64(cgen_var_195);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002997 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07002998 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08002999 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003000 }
3001 }
3002 uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3003 countingStream->rewind();
3004 uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
3005 stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
3006 stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003007 uint64_t cgen_var_196;
3008 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_196, 1);
3009 stream->write((uint64_t*)&cgen_var_196, 1 * 8);
3010 uint64_t cgen_var_197;
3011 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_197, 1);
3012 stream->write((uint64_t*)&cgen_var_197, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003013 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003014 uint64_t cgen_var_198 = (uint64_t)(uintptr_t)local_pAllocator;
3015 stream->putBe64(cgen_var_198);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003016 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003017 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003018 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003019 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003020 AEMU_SCOPED_TRACE("vkDestroySemaphore readParams");
3021 AEMU_SCOPED_TRACE("vkDestroySemaphore returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003022 resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003023 mImpl->log("finish vkDestroySemaphore");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003024}
3025
3026VkResult VkEncoder::vkCreateEvent(
3027 VkDevice device,
3028 const VkEventCreateInfo* pCreateInfo,
3029 const VkAllocationCallbacks* pAllocator,
3030 VkEvent* pEvent)
3031{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003032 AEMU_SCOPED_TRACE("vkCreateEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003033 mImpl->log("start vkCreateEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003034 auto stream = mImpl->stream();
3035 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003036 auto resources = mImpl->resources();
3037 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003038 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003039 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003040 VkEventCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003041 VkAllocationCallbacks* local_pAllocator;
3042 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003043 local_pCreateInfo = nullptr;
3044 if (pCreateInfo)
3045 {
3046 local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
3047 deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
3048 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003049 local_pAllocator = nullptr;
3050 if (pAllocator)
3051 {
3052 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3053 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3054 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003055 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003056 if (local_pCreateInfo)
3057 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003058 transform_tohost_VkEventCreateInfo(mImpl->resources(), (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003059 }
3060 if (local_pAllocator)
3061 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003062 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003063 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003064 countingStream->rewind();
3065 {
David Reveman9875f2c2019-06-11 21:47:12 -04003066 uint64_t cgen_var_199;
3067 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_199, 1);
3068 countingStream->write((uint64_t*)&cgen_var_199, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003069 marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003070 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003071 uint64_t cgen_var_200 = (uint64_t)(uintptr_t)local_pAllocator;
3072 countingStream->putBe64(cgen_var_200);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003073 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003074 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003075 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003076 }
David Reveman9875f2c2019-06-11 21:47:12 -04003077 uint64_t cgen_var_201;
3078 countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_201, 1);
3079 countingStream->write((uint64_t*)&cgen_var_201, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003080 }
3081 uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3082 countingStream->rewind();
3083 uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
3084 stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
3085 stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003086 uint64_t cgen_var_202;
3087 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
3088 stream->write((uint64_t*)&cgen_var_202, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003089 marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003090 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003091 uint64_t cgen_var_203 = (uint64_t)(uintptr_t)local_pAllocator;
3092 stream->putBe64(cgen_var_203);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003093 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003094 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003095 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003096 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003097 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04003098 uint64_t cgen_var_204;
3099 stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_204, 1);
3100 stream->write((uint64_t*)&cgen_var_204, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003101 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003102 AEMU_SCOPED_TRACE("vkCreateEvent readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08003103 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04003104 uint64_t cgen_var_205;
3105 stream->read((uint64_t*)&cgen_var_205, 8);
3106 stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_205, (VkEvent*)pEvent, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003107 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003108 AEMU_SCOPED_TRACE("vkCreateEvent returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003109 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
3110 stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003111 countingStream->clearPool();
3112 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003113 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003114 mImpl->log("finish vkCreateEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003115 return vkCreateEvent_VkResult_return;
3116}
3117
3118void VkEncoder::vkDestroyEvent(
3119 VkDevice device,
3120 VkEvent event,
3121 const VkAllocationCallbacks* pAllocator)
3122{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003123 AEMU_SCOPED_TRACE("vkDestroyEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003124 mImpl->log("start vkDestroyEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003125 auto stream = mImpl->stream();
3126 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003127 auto resources = mImpl->resources();
3128 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003129 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003130 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003131 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003132 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003133 local_device = device;
3134 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003135 local_pAllocator = nullptr;
3136 if (pAllocator)
3137 {
3138 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3139 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3140 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003141 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003142 if (local_pAllocator)
3143 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003144 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003145 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003146 countingStream->rewind();
3147 {
David Reveman9875f2c2019-06-11 21:47:12 -04003148 uint64_t cgen_var_206;
3149 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_206, 1);
3150 countingStream->write((uint64_t*)&cgen_var_206, 1 * 8);
3151 uint64_t cgen_var_207;
3152 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_207, 1);
3153 countingStream->write((uint64_t*)&cgen_var_207, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003154 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003155 uint64_t cgen_var_208 = (uint64_t)(uintptr_t)local_pAllocator;
3156 countingStream->putBe64(cgen_var_208);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003157 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003158 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003159 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003160 }
3161 }
3162 uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3163 countingStream->rewind();
3164 uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
3165 stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
3166 stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003167 uint64_t cgen_var_209;
3168 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_209, 1);
3169 stream->write((uint64_t*)&cgen_var_209, 1 * 8);
3170 uint64_t cgen_var_210;
3171 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_210, 1);
3172 stream->write((uint64_t*)&cgen_var_210, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003173 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003174 uint64_t cgen_var_211 = (uint64_t)(uintptr_t)local_pAllocator;
3175 stream->putBe64(cgen_var_211);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003176 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003177 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003178 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003179 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003180 AEMU_SCOPED_TRACE("vkDestroyEvent readParams");
3181 AEMU_SCOPED_TRACE("vkDestroyEvent returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003182 resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003183 mImpl->log("finish vkDestroyEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003184}
3185
3186VkResult VkEncoder::vkGetEventStatus(
3187 VkDevice device,
3188 VkEvent event)
3189{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003190 AEMU_SCOPED_TRACE("vkGetEventStatus encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003191 mImpl->log("start vkGetEventStatus");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003192 auto stream = mImpl->stream();
3193 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003194 auto resources = mImpl->resources();
3195 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003196 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003197 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003198 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003199 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003200 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003201 countingStream->rewind();
3202 {
David Reveman9875f2c2019-06-11 21:47:12 -04003203 uint64_t cgen_var_212;
3204 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
3205 countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
3206 uint64_t cgen_var_213;
3207 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_213, 1);
3208 countingStream->write((uint64_t*)&cgen_var_213, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003209 }
3210 uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3211 countingStream->rewind();
3212 uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
3213 stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
3214 stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003215 uint64_t cgen_var_214;
3216 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_214, 1);
3217 stream->write((uint64_t*)&cgen_var_214, 1 * 8);
3218 uint64_t cgen_var_215;
3219 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_215, 1);
3220 stream->write((uint64_t*)&cgen_var_215, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003221 AEMU_SCOPED_TRACE("vkGetEventStatus readParams");
3222 AEMU_SCOPED_TRACE("vkGetEventStatus returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003223 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
3224 stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003225 countingStream->clearPool();
3226 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003227 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003228 mImpl->log("finish vkGetEventStatus");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003229 return vkGetEventStatus_VkResult_return;
3230}
3231
3232VkResult VkEncoder::vkSetEvent(
3233 VkDevice device,
3234 VkEvent event)
3235{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003236 AEMU_SCOPED_TRACE("vkSetEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003237 mImpl->log("start vkSetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003238 auto stream = mImpl->stream();
3239 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003240 auto resources = mImpl->resources();
3241 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003242 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003243 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003244 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003245 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003246 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003247 countingStream->rewind();
3248 {
David Reveman9875f2c2019-06-11 21:47:12 -04003249 uint64_t cgen_var_216;
3250 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_216, 1);
3251 countingStream->write((uint64_t*)&cgen_var_216, 1 * 8);
3252 uint64_t cgen_var_217;
3253 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_217, 1);
3254 countingStream->write((uint64_t*)&cgen_var_217, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003255 }
3256 uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3257 countingStream->rewind();
3258 uint32_t opcode_vkSetEvent = OP_vkSetEvent;
3259 stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
3260 stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003261 uint64_t cgen_var_218;
3262 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_218, 1);
3263 stream->write((uint64_t*)&cgen_var_218, 1 * 8);
3264 uint64_t cgen_var_219;
3265 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_219, 1);
3266 stream->write((uint64_t*)&cgen_var_219, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003267 AEMU_SCOPED_TRACE("vkSetEvent readParams");
3268 AEMU_SCOPED_TRACE("vkSetEvent returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003269 VkResult vkSetEvent_VkResult_return = (VkResult)0;
3270 stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003271 countingStream->clearPool();
3272 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003273 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003274 mImpl->log("finish vkSetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003275 return vkSetEvent_VkResult_return;
3276}
3277
3278VkResult VkEncoder::vkResetEvent(
3279 VkDevice device,
3280 VkEvent event)
3281{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003282 AEMU_SCOPED_TRACE("vkResetEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003283 mImpl->log("start vkResetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003284 auto stream = mImpl->stream();
3285 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003286 auto resources = mImpl->resources();
3287 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003288 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003289 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003290 VkEvent local_event;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003291 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003292 local_event = event;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003293 countingStream->rewind();
3294 {
David Reveman9875f2c2019-06-11 21:47:12 -04003295 uint64_t cgen_var_220;
3296 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_220, 1);
3297 countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
3298 uint64_t cgen_var_221;
3299 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_221, 1);
3300 countingStream->write((uint64_t*)&cgen_var_221, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003301 }
3302 uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3303 countingStream->rewind();
3304 uint32_t opcode_vkResetEvent = OP_vkResetEvent;
3305 stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
3306 stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003307 uint64_t cgen_var_222;
3308 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_222, 1);
3309 stream->write((uint64_t*)&cgen_var_222, 1 * 8);
3310 uint64_t cgen_var_223;
3311 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_223, 1);
3312 stream->write((uint64_t*)&cgen_var_223, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003313 AEMU_SCOPED_TRACE("vkResetEvent readParams");
3314 AEMU_SCOPED_TRACE("vkResetEvent returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003315 VkResult vkResetEvent_VkResult_return = (VkResult)0;
3316 stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003317 countingStream->clearPool();
3318 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003319 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003320 mImpl->log("finish vkResetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003321 return vkResetEvent_VkResult_return;
3322}
3323
3324VkResult VkEncoder::vkCreateQueryPool(
3325 VkDevice device,
3326 const VkQueryPoolCreateInfo* pCreateInfo,
3327 const VkAllocationCallbacks* pAllocator,
3328 VkQueryPool* pQueryPool)
3329{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003330 AEMU_SCOPED_TRACE("vkCreateQueryPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003331 mImpl->log("start vkCreateQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003332 auto stream = mImpl->stream();
3333 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003334 auto resources = mImpl->resources();
3335 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003336 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003337 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003338 VkQueryPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003339 VkAllocationCallbacks* local_pAllocator;
3340 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003341 local_pCreateInfo = nullptr;
3342 if (pCreateInfo)
3343 {
3344 local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
3345 deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
3346 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003347 local_pAllocator = nullptr;
3348 if (pAllocator)
3349 {
3350 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3351 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3352 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003353 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003354 if (local_pCreateInfo)
3355 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003356 transform_tohost_VkQueryPoolCreateInfo(mImpl->resources(), (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003357 }
3358 if (local_pAllocator)
3359 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003360 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003361 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003362 countingStream->rewind();
3363 {
David Reveman9875f2c2019-06-11 21:47:12 -04003364 uint64_t cgen_var_224;
3365 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_224, 1);
3366 countingStream->write((uint64_t*)&cgen_var_224, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003367 marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003368 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003369 uint64_t cgen_var_225 = (uint64_t)(uintptr_t)local_pAllocator;
3370 countingStream->putBe64(cgen_var_225);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003371 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003372 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003373 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003374 }
David Reveman9875f2c2019-06-11 21:47:12 -04003375 uint64_t cgen_var_226;
3376 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_226, 1);
3377 countingStream->write((uint64_t*)&cgen_var_226, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003378 }
3379 uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3380 countingStream->rewind();
3381 uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
3382 stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
3383 stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003384 uint64_t cgen_var_227;
3385 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_227, 1);
3386 stream->write((uint64_t*)&cgen_var_227, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003387 marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003388 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003389 uint64_t cgen_var_228 = (uint64_t)(uintptr_t)local_pAllocator;
3390 stream->putBe64(cgen_var_228);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003391 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003392 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003393 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003394 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003395 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04003396 uint64_t cgen_var_229;
3397 stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_229, 1);
3398 stream->write((uint64_t*)&cgen_var_229, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003399 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003400 AEMU_SCOPED_TRACE("vkCreateQueryPool readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08003401 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04003402 uint64_t cgen_var_230;
3403 stream->read((uint64_t*)&cgen_var_230, 8);
3404 stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_230, (VkQueryPool*)pQueryPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003405 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003406 AEMU_SCOPED_TRACE("vkCreateQueryPool returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003407 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
3408 stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003409 countingStream->clearPool();
3410 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003411 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003412 mImpl->log("finish vkCreateQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003413 return vkCreateQueryPool_VkResult_return;
3414}
3415
3416void VkEncoder::vkDestroyQueryPool(
3417 VkDevice device,
3418 VkQueryPool queryPool,
3419 const VkAllocationCallbacks* pAllocator)
3420{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003421 AEMU_SCOPED_TRACE("vkDestroyQueryPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003422 mImpl->log("start vkDestroyQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003423 auto stream = mImpl->stream();
3424 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003425 auto resources = mImpl->resources();
3426 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003427 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003428 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003429 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003430 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003431 local_device = device;
3432 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003433 local_pAllocator = nullptr;
3434 if (pAllocator)
3435 {
3436 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3437 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3438 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003439 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003440 if (local_pAllocator)
3441 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003442 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003443 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003444 countingStream->rewind();
3445 {
David Reveman9875f2c2019-06-11 21:47:12 -04003446 uint64_t cgen_var_231;
3447 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_231, 1);
3448 countingStream->write((uint64_t*)&cgen_var_231, 1 * 8);
3449 uint64_t cgen_var_232;
3450 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_232, 1);
3451 countingStream->write((uint64_t*)&cgen_var_232, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003452 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003453 uint64_t cgen_var_233 = (uint64_t)(uintptr_t)local_pAllocator;
3454 countingStream->putBe64(cgen_var_233);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003455 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003456 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003457 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003458 }
3459 }
3460 uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3461 countingStream->rewind();
3462 uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
3463 stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
3464 stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003465 uint64_t cgen_var_234;
3466 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_234, 1);
3467 stream->write((uint64_t*)&cgen_var_234, 1 * 8);
3468 uint64_t cgen_var_235;
3469 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_235, 1);
3470 stream->write((uint64_t*)&cgen_var_235, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003471 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003472 uint64_t cgen_var_236 = (uint64_t)(uintptr_t)local_pAllocator;
3473 stream->putBe64(cgen_var_236);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003474 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003475 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003476 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003477 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003478 AEMU_SCOPED_TRACE("vkDestroyQueryPool readParams");
3479 AEMU_SCOPED_TRACE("vkDestroyQueryPool returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003480 resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003481 mImpl->log("finish vkDestroyQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003482}
3483
3484VkResult VkEncoder::vkGetQueryPoolResults(
3485 VkDevice device,
3486 VkQueryPool queryPool,
3487 uint32_t firstQuery,
3488 uint32_t queryCount,
3489 size_t dataSize,
3490 void* pData,
3491 VkDeviceSize stride,
3492 VkQueryResultFlags flags)
3493{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003494 AEMU_SCOPED_TRACE("vkGetQueryPoolResults encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003495 mImpl->log("start vkGetQueryPoolResults");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003496 auto stream = mImpl->stream();
3497 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003498 auto resources = mImpl->resources();
3499 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003500 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003501 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003502 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003503 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003504 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003505 size_t local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003506 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003507 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003508 local_device = device;
3509 local_queryPool = queryPool;
3510 local_firstQuery = firstQuery;
3511 local_queryCount = queryCount;
3512 local_dataSize = dataSize;
3513 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003514 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003515 countingStream->rewind();
3516 {
David Reveman9875f2c2019-06-11 21:47:12 -04003517 uint64_t cgen_var_237;
3518 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_237, 1);
3519 countingStream->write((uint64_t*)&cgen_var_237, 1 * 8);
3520 uint64_t cgen_var_238;
3521 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_238, 1);
3522 countingStream->write((uint64_t*)&cgen_var_238, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003523 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3524 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003525 uint64_t cgen_var_239 = (uint64_t)local_dataSize;
3526 countingStream->putBe64(cgen_var_239);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003527 countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003528 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3529 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003530 }
3531 uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3532 countingStream->rewind();
3533 uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
3534 stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
3535 stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003536 uint64_t cgen_var_240;
3537 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_240, 1);
3538 stream->write((uint64_t*)&cgen_var_240, 1 * 8);
3539 uint64_t cgen_var_241;
3540 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_241, 1);
3541 stream->write((uint64_t*)&cgen_var_241, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003542 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3543 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003544 uint64_t cgen_var_242 = (uint64_t)local_dataSize;
3545 stream->putBe64(cgen_var_242);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003546 stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003547 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3548 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003549 AEMU_SCOPED_TRACE("vkGetQueryPoolResults readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003550 stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003551 AEMU_SCOPED_TRACE("vkGetQueryPoolResults returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003552 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
3553 stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003554 countingStream->clearPool();
3555 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003556 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003557 mImpl->log("finish vkGetQueryPoolResults");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003558 return vkGetQueryPoolResults_VkResult_return;
3559}
3560
3561VkResult VkEncoder::vkCreateBuffer(
3562 VkDevice device,
3563 const VkBufferCreateInfo* pCreateInfo,
3564 const VkAllocationCallbacks* pAllocator,
3565 VkBuffer* pBuffer)
3566{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003567 AEMU_SCOPED_TRACE("vkCreateBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003568 mImpl->log("start vkCreateBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003569 auto stream = mImpl->stream();
3570 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003571 auto resources = mImpl->resources();
3572 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003573 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003574 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003575 VkBufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003576 VkAllocationCallbacks* local_pAllocator;
3577 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003578 local_pCreateInfo = nullptr;
3579 if (pCreateInfo)
3580 {
3581 local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3582 deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3583 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003584 local_pAllocator = nullptr;
3585 if (pAllocator)
3586 {
3587 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3588 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3589 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003590 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003591 if (local_pCreateInfo)
3592 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003593 transform_tohost_VkBufferCreateInfo(mImpl->resources(), (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003594 }
3595 if (local_pAllocator)
3596 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003597 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003598 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003599 countingStream->rewind();
3600 {
David Reveman9875f2c2019-06-11 21:47:12 -04003601 uint64_t cgen_var_243;
3602 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_243, 1);
3603 countingStream->write((uint64_t*)&cgen_var_243, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003604 marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003605 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003606 uint64_t cgen_var_244 = (uint64_t)(uintptr_t)local_pAllocator;
3607 countingStream->putBe64(cgen_var_244);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003608 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003609 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003610 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003611 }
David Reveman9875f2c2019-06-11 21:47:12 -04003612 uint64_t cgen_var_245;
3613 countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_245, 1);
3614 countingStream->write((uint64_t*)&cgen_var_245, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003615 }
3616 uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3617 countingStream->rewind();
3618 uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3619 stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3620 stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003621 uint64_t cgen_var_246;
3622 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_246, 1);
3623 stream->write((uint64_t*)&cgen_var_246, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003624 marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003625 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003626 uint64_t cgen_var_247 = (uint64_t)(uintptr_t)local_pAllocator;
3627 stream->putBe64(cgen_var_247);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003628 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003629 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003630 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003631 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003632 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04003633 uint64_t cgen_var_248;
3634 stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_248, 1);
3635 stream->write((uint64_t*)&cgen_var_248, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003636 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003637 AEMU_SCOPED_TRACE("vkCreateBuffer readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08003638 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04003639 uint64_t cgen_var_249;
3640 stream->read((uint64_t*)&cgen_var_249, 8);
3641 stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_249, (VkBuffer*)pBuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003642 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003643 AEMU_SCOPED_TRACE("vkCreateBuffer returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003644 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3645 stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003646 countingStream->clearPool();
3647 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003648 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003649 mImpl->log("finish vkCreateBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003650 return vkCreateBuffer_VkResult_return;
3651}
3652
3653void VkEncoder::vkDestroyBuffer(
3654 VkDevice device,
3655 VkBuffer buffer,
3656 const VkAllocationCallbacks* pAllocator)
3657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003658 AEMU_SCOPED_TRACE("vkDestroyBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003659 mImpl->log("start vkDestroyBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003660 auto stream = mImpl->stream();
3661 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003662 auto resources = mImpl->resources();
3663 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003664 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003665 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003666 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003667 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003668 local_device = device;
3669 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003670 local_pAllocator = nullptr;
3671 if (pAllocator)
3672 {
3673 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3674 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3675 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003676 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003677 if (local_pAllocator)
3678 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003679 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003680 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003681 countingStream->rewind();
3682 {
David Reveman9875f2c2019-06-11 21:47:12 -04003683 uint64_t cgen_var_250;
3684 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_250, 1);
3685 countingStream->write((uint64_t*)&cgen_var_250, 1 * 8);
3686 uint64_t cgen_var_251;
3687 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_251, 1);
3688 countingStream->write((uint64_t*)&cgen_var_251, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003689 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003690 uint64_t cgen_var_252 = (uint64_t)(uintptr_t)local_pAllocator;
3691 countingStream->putBe64(cgen_var_252);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003692 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003693 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003694 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003695 }
3696 }
3697 uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3698 countingStream->rewind();
3699 uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3700 stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3701 stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003702 uint64_t cgen_var_253;
3703 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_253, 1);
3704 stream->write((uint64_t*)&cgen_var_253, 1 * 8);
3705 uint64_t cgen_var_254;
3706 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_254, 1);
3707 stream->write((uint64_t*)&cgen_var_254, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003708 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003709 uint64_t cgen_var_255 = (uint64_t)(uintptr_t)local_pAllocator;
3710 stream->putBe64(cgen_var_255);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003711 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003712 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003713 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003714 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003715 AEMU_SCOPED_TRACE("vkDestroyBuffer readParams");
3716 AEMU_SCOPED_TRACE("vkDestroyBuffer returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003717 resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003718 mImpl->log("finish vkDestroyBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003719}
3720
3721VkResult VkEncoder::vkCreateBufferView(
3722 VkDevice device,
3723 const VkBufferViewCreateInfo* pCreateInfo,
3724 const VkAllocationCallbacks* pAllocator,
3725 VkBufferView* pView)
3726{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003727 AEMU_SCOPED_TRACE("vkCreateBufferView encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003728 mImpl->log("start vkCreateBufferView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003729 auto stream = mImpl->stream();
3730 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003731 auto resources = mImpl->resources();
3732 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003733 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003734 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003735 VkBufferViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003736 VkAllocationCallbacks* local_pAllocator;
3737 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003738 local_pCreateInfo = nullptr;
3739 if (pCreateInfo)
3740 {
3741 local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3742 deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3743 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003744 local_pAllocator = nullptr;
3745 if (pAllocator)
3746 {
3747 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3748 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3749 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003750 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003751 if (local_pCreateInfo)
3752 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003753 transform_tohost_VkBufferViewCreateInfo(mImpl->resources(), (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003754 }
3755 if (local_pAllocator)
3756 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003757 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003758 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003759 countingStream->rewind();
3760 {
David Reveman9875f2c2019-06-11 21:47:12 -04003761 uint64_t cgen_var_256;
3762 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_256, 1);
3763 countingStream->write((uint64_t*)&cgen_var_256, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003764 marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003765 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003766 uint64_t cgen_var_257 = (uint64_t)(uintptr_t)local_pAllocator;
3767 countingStream->putBe64(cgen_var_257);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003768 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003769 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003770 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003771 }
David Reveman9875f2c2019-06-11 21:47:12 -04003772 uint64_t cgen_var_258;
3773 countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_258, 1);
3774 countingStream->write((uint64_t*)&cgen_var_258, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003775 }
3776 uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3777 countingStream->rewind();
3778 uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3779 stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3780 stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003781 uint64_t cgen_var_259;
3782 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_259, 1);
3783 stream->write((uint64_t*)&cgen_var_259, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003784 marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003785 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003786 uint64_t cgen_var_260 = (uint64_t)(uintptr_t)local_pAllocator;
3787 stream->putBe64(cgen_var_260);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003788 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003789 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003790 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003791 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003792 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04003793 uint64_t cgen_var_261;
3794 stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_261, 1);
3795 stream->write((uint64_t*)&cgen_var_261, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003796 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003797 AEMU_SCOPED_TRACE("vkCreateBufferView readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08003798 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04003799 uint64_t cgen_var_262;
3800 stream->read((uint64_t*)&cgen_var_262, 8);
3801 stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_262, (VkBufferView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003802 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003803 AEMU_SCOPED_TRACE("vkCreateBufferView returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003804 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3805 stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003806 countingStream->clearPool();
3807 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003808 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003809 mImpl->log("finish vkCreateBufferView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003810 return vkCreateBufferView_VkResult_return;
3811}
3812
3813void VkEncoder::vkDestroyBufferView(
3814 VkDevice device,
3815 VkBufferView bufferView,
3816 const VkAllocationCallbacks* pAllocator)
3817{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003818 AEMU_SCOPED_TRACE("vkDestroyBufferView encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003819 mImpl->log("start vkDestroyBufferView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003820 auto stream = mImpl->stream();
3821 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003822 auto resources = mImpl->resources();
3823 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003824 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003825 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003826 VkBufferView local_bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003827 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003828 local_device = device;
3829 local_bufferView = bufferView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003830 local_pAllocator = nullptr;
3831 if (pAllocator)
3832 {
3833 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3834 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3835 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003836 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003837 if (local_pAllocator)
3838 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003839 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003840 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003841 countingStream->rewind();
3842 {
David Reveman9875f2c2019-06-11 21:47:12 -04003843 uint64_t cgen_var_263;
3844 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_263, 1);
3845 countingStream->write((uint64_t*)&cgen_var_263, 1 * 8);
3846 uint64_t cgen_var_264;
3847 countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_264, 1);
3848 countingStream->write((uint64_t*)&cgen_var_264, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003849 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003850 uint64_t cgen_var_265 = (uint64_t)(uintptr_t)local_pAllocator;
3851 countingStream->putBe64(cgen_var_265);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003852 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003853 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003854 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003855 }
3856 }
3857 uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3858 countingStream->rewind();
3859 uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3860 stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3861 stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003862 uint64_t cgen_var_266;
3863 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_266, 1);
3864 stream->write((uint64_t*)&cgen_var_266, 1 * 8);
3865 uint64_t cgen_var_267;
3866 stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_267, 1);
3867 stream->write((uint64_t*)&cgen_var_267, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003868 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003869 uint64_t cgen_var_268 = (uint64_t)(uintptr_t)local_pAllocator;
3870 stream->putBe64(cgen_var_268);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003871 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003872 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003873 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003874 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003875 AEMU_SCOPED_TRACE("vkDestroyBufferView readParams");
3876 AEMU_SCOPED_TRACE("vkDestroyBufferView returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003877 resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003878 mImpl->log("finish vkDestroyBufferView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003879}
3880
3881VkResult VkEncoder::vkCreateImage(
3882 VkDevice device,
3883 const VkImageCreateInfo* pCreateInfo,
3884 const VkAllocationCallbacks* pAllocator,
3885 VkImage* pImage)
3886{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003887 AEMU_SCOPED_TRACE("vkCreateImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003888 mImpl->log("start vkCreateImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003889 auto stream = mImpl->stream();
3890 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003891 auto resources = mImpl->resources();
3892 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003893 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003894 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003895 VkImageCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003896 VkAllocationCallbacks* local_pAllocator;
3897 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003898 local_pCreateInfo = nullptr;
3899 if (pCreateInfo)
3900 {
3901 local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3902 deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3903 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003904 local_pAllocator = nullptr;
3905 if (pAllocator)
3906 {
3907 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3908 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3909 }
Lingfeng Yangdef88ba2018-12-13 12:43:17 -08003910 mImpl->resources()->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003911 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003912 if (local_pCreateInfo)
3913 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003914 transform_tohost_VkImageCreateInfo(mImpl->resources(), (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003915 }
3916 if (local_pAllocator)
3917 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08003918 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08003919 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003920 countingStream->rewind();
3921 {
David Reveman9875f2c2019-06-11 21:47:12 -04003922 uint64_t cgen_var_269;
3923 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_269, 1);
3924 countingStream->write((uint64_t*)&cgen_var_269, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003925 marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003926 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003927 uint64_t cgen_var_270 = (uint64_t)(uintptr_t)local_pAllocator;
3928 countingStream->putBe64(cgen_var_270);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003929 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003930 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003931 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003932 }
David Reveman9875f2c2019-06-11 21:47:12 -04003933 uint64_t cgen_var_271;
3934 countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_271, 1);
3935 countingStream->write((uint64_t*)&cgen_var_271, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003936 }
3937 uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3938 countingStream->rewind();
3939 uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3940 stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3941 stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04003942 uint64_t cgen_var_272;
3943 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3944 stream->write((uint64_t*)&cgen_var_272, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003945 marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08003946 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04003947 uint64_t cgen_var_273 = (uint64_t)(uintptr_t)local_pAllocator;
3948 stream->putBe64(cgen_var_273);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003949 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003950 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003951 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003952 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08003953 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04003954 uint64_t cgen_var_274;
3955 stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_274, 1);
3956 stream->write((uint64_t*)&cgen_var_274, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003957 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003958 AEMU_SCOPED_TRACE("vkCreateImage readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08003959 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04003960 uint64_t cgen_var_275;
3961 stream->read((uint64_t*)&cgen_var_275, 8);
3962 stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_275, (VkImage*)pImage, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08003963 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003964 AEMU_SCOPED_TRACE("vkCreateImage returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003965 VkResult vkCreateImage_VkResult_return = (VkResult)0;
3966 stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08003967 countingStream->clearPool();
3968 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003969 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003970 mImpl->log("finish vkCreateImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003971 return vkCreateImage_VkResult_return;
3972}
3973
3974void VkEncoder::vkDestroyImage(
3975 VkDevice device,
3976 VkImage image,
3977 const VkAllocationCallbacks* pAllocator)
3978{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003979 AEMU_SCOPED_TRACE("vkDestroyImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08003980 mImpl->log("start vkDestroyImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07003981 auto stream = mImpl->stream();
3982 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003983 auto resources = mImpl->resources();
3984 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08003985 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003986 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003987 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003988 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08003989 local_device = device;
3990 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08003991 local_pAllocator = nullptr;
3992 if (pAllocator)
3993 {
3994 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3995 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3996 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08003997 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08003998 if (local_pAllocator)
3999 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004000 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004001 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004002 countingStream->rewind();
4003 {
David Reveman9875f2c2019-06-11 21:47:12 -04004004 uint64_t cgen_var_276;
4005 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_276, 1);
4006 countingStream->write((uint64_t*)&cgen_var_276, 1 * 8);
4007 uint64_t cgen_var_277;
4008 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_277, 1);
4009 countingStream->write((uint64_t*)&cgen_var_277, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004010 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004011 uint64_t cgen_var_278 = (uint64_t)(uintptr_t)local_pAllocator;
4012 countingStream->putBe64(cgen_var_278);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004013 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004014 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004015 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004016 }
4017 }
4018 uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4019 countingStream->rewind();
4020 uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
4021 stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
4022 stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004023 uint64_t cgen_var_279;
4024 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_279, 1);
4025 stream->write((uint64_t*)&cgen_var_279, 1 * 8);
4026 uint64_t cgen_var_280;
4027 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_280, 1);
4028 stream->write((uint64_t*)&cgen_var_280, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004029 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004030 uint64_t cgen_var_281 = (uint64_t)(uintptr_t)local_pAllocator;
4031 stream->putBe64(cgen_var_281);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004032 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004033 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004034 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004035 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004036 AEMU_SCOPED_TRACE("vkDestroyImage readParams");
4037 AEMU_SCOPED_TRACE("vkDestroyImage returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004038 resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004039 mImpl->log("finish vkDestroyImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004040}
4041
4042void VkEncoder::vkGetImageSubresourceLayout(
4043 VkDevice device,
4044 VkImage image,
4045 const VkImageSubresource* pSubresource,
4046 VkSubresourceLayout* pLayout)
4047{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004048 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004049 mImpl->log("start vkGetImageSubresourceLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004050 auto stream = mImpl->stream();
4051 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004052 auto resources = mImpl->resources();
4053 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004054 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004055 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004056 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004057 VkImageSubresource* local_pSubresource;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004058 local_device = device;
4059 local_image = image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004060 local_pSubresource = nullptr;
4061 if (pSubresource)
4062 {
4063 local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
4064 deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
4065 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08004066 if (local_pSubresource)
4067 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004068 transform_tohost_VkImageSubresource(mImpl->resources(), (VkImageSubresource*)(local_pSubresource));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004069 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004070 countingStream->rewind();
4071 {
David Reveman9875f2c2019-06-11 21:47:12 -04004072 uint64_t cgen_var_282;
4073 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_282, 1);
4074 countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
4075 uint64_t cgen_var_283;
4076 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_283, 1);
4077 countingStream->write((uint64_t*)&cgen_var_283, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004078 marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004079 marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
4080 }
4081 uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4082 countingStream->rewind();
4083 uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
4084 stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
4085 stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004086 uint64_t cgen_var_284;
4087 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_284, 1);
4088 stream->write((uint64_t*)&cgen_var_284, 1 * 8);
4089 uint64_t cgen_var_285;
4090 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_285, 1);
4091 stream->write((uint64_t*)&cgen_var_285, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004092 marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004093 marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004094 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004095 unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
Lingfeng Yang97a06702018-12-24 17:02:43 -08004096 if (pLayout)
4097 {
4098 transform_fromhost_VkSubresourceLayout(mImpl->resources(), (VkSubresourceLayout*)(pLayout));
4099 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004100 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004101 mImpl->log("finish vkGetImageSubresourceLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004102}
4103
4104VkResult VkEncoder::vkCreateImageView(
4105 VkDevice device,
4106 const VkImageViewCreateInfo* pCreateInfo,
4107 const VkAllocationCallbacks* pAllocator,
4108 VkImageView* pView)
4109{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004110 AEMU_SCOPED_TRACE("vkCreateImageView encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004111 mImpl->log("start vkCreateImageView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004112 auto stream = mImpl->stream();
4113 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004114 auto resources = mImpl->resources();
4115 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004116 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004117 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004118 VkImageViewCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004119 VkAllocationCallbacks* local_pAllocator;
4120 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004121 local_pCreateInfo = nullptr;
4122 if (pCreateInfo)
4123 {
4124 local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
4125 deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
4126 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004127 local_pAllocator = nullptr;
4128 if (pAllocator)
4129 {
4130 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4131 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4132 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004133 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004134 if (local_pCreateInfo)
4135 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004136 transform_tohost_VkImageViewCreateInfo(mImpl->resources(), (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004137 }
4138 if (local_pAllocator)
4139 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004140 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004141 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004142 countingStream->rewind();
4143 {
David Reveman9875f2c2019-06-11 21:47:12 -04004144 uint64_t cgen_var_286;
4145 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_286, 1);
4146 countingStream->write((uint64_t*)&cgen_var_286, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004147 marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004148 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004149 uint64_t cgen_var_287 = (uint64_t)(uintptr_t)local_pAllocator;
4150 countingStream->putBe64(cgen_var_287);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004151 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004152 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004153 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004154 }
David Reveman9875f2c2019-06-11 21:47:12 -04004155 uint64_t cgen_var_288;
4156 countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_288, 1);
4157 countingStream->write((uint64_t*)&cgen_var_288, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004158 }
4159 uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4160 countingStream->rewind();
4161 uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
4162 stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
4163 stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004164 uint64_t cgen_var_289;
4165 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_289, 1);
4166 stream->write((uint64_t*)&cgen_var_289, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004167 marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004168 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004169 uint64_t cgen_var_290 = (uint64_t)(uintptr_t)local_pAllocator;
4170 stream->putBe64(cgen_var_290);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004171 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004172 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004173 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004174 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004175 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04004176 uint64_t cgen_var_291;
4177 stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_291, 1);
4178 stream->write((uint64_t*)&cgen_var_291, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004179 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004180 AEMU_SCOPED_TRACE("vkCreateImageView readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08004181 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04004182 uint64_t cgen_var_292;
4183 stream->read((uint64_t*)&cgen_var_292, 8);
4184 stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_292, (VkImageView*)pView, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004185 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004186 AEMU_SCOPED_TRACE("vkCreateImageView returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004187 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
4188 stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004189 countingStream->clearPool();
4190 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004191 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004192 mImpl->log("finish vkCreateImageView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004193 return vkCreateImageView_VkResult_return;
4194}
4195
4196void VkEncoder::vkDestroyImageView(
4197 VkDevice device,
4198 VkImageView imageView,
4199 const VkAllocationCallbacks* pAllocator)
4200{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004201 AEMU_SCOPED_TRACE("vkDestroyImageView encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004202 mImpl->log("start vkDestroyImageView");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004203 auto stream = mImpl->stream();
4204 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004205 auto resources = mImpl->resources();
4206 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004207 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004208 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004209 VkImageView local_imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004210 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004211 local_device = device;
4212 local_imageView = imageView;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004213 local_pAllocator = nullptr;
4214 if (pAllocator)
4215 {
4216 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4217 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4218 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004219 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004220 if (local_pAllocator)
4221 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004222 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004223 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004224 countingStream->rewind();
4225 {
David Reveman9875f2c2019-06-11 21:47:12 -04004226 uint64_t cgen_var_293;
4227 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_293, 1);
4228 countingStream->write((uint64_t*)&cgen_var_293, 1 * 8);
4229 uint64_t cgen_var_294;
4230 countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_294, 1);
4231 countingStream->write((uint64_t*)&cgen_var_294, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004232 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004233 uint64_t cgen_var_295 = (uint64_t)(uintptr_t)local_pAllocator;
4234 countingStream->putBe64(cgen_var_295);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004235 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004236 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004237 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004238 }
4239 }
4240 uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4241 countingStream->rewind();
4242 uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
4243 stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
4244 stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004245 uint64_t cgen_var_296;
4246 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_296, 1);
4247 stream->write((uint64_t*)&cgen_var_296, 1 * 8);
4248 uint64_t cgen_var_297;
4249 stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_297, 1);
4250 stream->write((uint64_t*)&cgen_var_297, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004251 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004252 uint64_t cgen_var_298 = (uint64_t)(uintptr_t)local_pAllocator;
4253 stream->putBe64(cgen_var_298);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004254 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004255 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004256 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004257 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004258 AEMU_SCOPED_TRACE("vkDestroyImageView readParams");
4259 AEMU_SCOPED_TRACE("vkDestroyImageView returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004260 resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004261 mImpl->log("finish vkDestroyImageView");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004262}
4263
4264VkResult VkEncoder::vkCreateShaderModule(
4265 VkDevice device,
4266 const VkShaderModuleCreateInfo* pCreateInfo,
4267 const VkAllocationCallbacks* pAllocator,
4268 VkShaderModule* pShaderModule)
4269{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004270 AEMU_SCOPED_TRACE("vkCreateShaderModule encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004271 mImpl->log("start vkCreateShaderModule");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004272 auto stream = mImpl->stream();
4273 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004274 auto resources = mImpl->resources();
4275 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004276 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004277 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004278 VkShaderModuleCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004279 VkAllocationCallbacks* local_pAllocator;
4280 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004281 local_pCreateInfo = nullptr;
4282 if (pCreateInfo)
4283 {
4284 local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
4285 deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
4286 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004287 local_pAllocator = nullptr;
4288 if (pAllocator)
4289 {
4290 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4291 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4292 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004293 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004294 if (local_pCreateInfo)
4295 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004296 transform_tohost_VkShaderModuleCreateInfo(mImpl->resources(), (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004297 }
4298 if (local_pAllocator)
4299 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004300 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004301 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004302 countingStream->rewind();
4303 {
David Reveman9875f2c2019-06-11 21:47:12 -04004304 uint64_t cgen_var_299;
4305 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_299, 1);
4306 countingStream->write((uint64_t*)&cgen_var_299, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004307 marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004308 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004309 uint64_t cgen_var_300 = (uint64_t)(uintptr_t)local_pAllocator;
4310 countingStream->putBe64(cgen_var_300);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004311 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004312 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004313 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004314 }
David Reveman9875f2c2019-06-11 21:47:12 -04004315 uint64_t cgen_var_301;
4316 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_301, 1);
4317 countingStream->write((uint64_t*)&cgen_var_301, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004318 }
4319 uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4320 countingStream->rewind();
4321 uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
4322 stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
4323 stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004324 uint64_t cgen_var_302;
4325 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_302, 1);
4326 stream->write((uint64_t*)&cgen_var_302, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004327 marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004328 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004329 uint64_t cgen_var_303 = (uint64_t)(uintptr_t)local_pAllocator;
4330 stream->putBe64(cgen_var_303);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004331 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004332 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004333 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004334 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004335 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04004336 uint64_t cgen_var_304;
4337 stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_304, 1);
4338 stream->write((uint64_t*)&cgen_var_304, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004339 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004340 AEMU_SCOPED_TRACE("vkCreateShaderModule readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08004341 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04004342 uint64_t cgen_var_305;
4343 stream->read((uint64_t*)&cgen_var_305, 8);
4344 stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_305, (VkShaderModule*)pShaderModule, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004345 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004346 AEMU_SCOPED_TRACE("vkCreateShaderModule returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004347 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
4348 stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004349 countingStream->clearPool();
4350 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004351 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004352 mImpl->log("finish vkCreateShaderModule");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004353 return vkCreateShaderModule_VkResult_return;
4354}
4355
4356void VkEncoder::vkDestroyShaderModule(
4357 VkDevice device,
4358 VkShaderModule shaderModule,
4359 const VkAllocationCallbacks* pAllocator)
4360{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004361 AEMU_SCOPED_TRACE("vkDestroyShaderModule encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004362 mImpl->log("start vkDestroyShaderModule");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004363 auto stream = mImpl->stream();
4364 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004365 auto resources = mImpl->resources();
4366 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004367 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004368 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004369 VkShaderModule local_shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004370 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004371 local_device = device;
4372 local_shaderModule = shaderModule;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004373 local_pAllocator = nullptr;
4374 if (pAllocator)
4375 {
4376 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4377 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4378 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004379 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004380 if (local_pAllocator)
4381 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004382 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004383 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004384 countingStream->rewind();
4385 {
David Reveman9875f2c2019-06-11 21:47:12 -04004386 uint64_t cgen_var_306;
4387 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_306, 1);
4388 countingStream->write((uint64_t*)&cgen_var_306, 1 * 8);
4389 uint64_t cgen_var_307;
4390 countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_307, 1);
4391 countingStream->write((uint64_t*)&cgen_var_307, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004392 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004393 uint64_t cgen_var_308 = (uint64_t)(uintptr_t)local_pAllocator;
4394 countingStream->putBe64(cgen_var_308);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004395 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004396 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004397 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004398 }
4399 }
4400 uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4401 countingStream->rewind();
4402 uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
4403 stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
4404 stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004405 uint64_t cgen_var_309;
4406 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_309, 1);
4407 stream->write((uint64_t*)&cgen_var_309, 1 * 8);
4408 uint64_t cgen_var_310;
4409 stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_310, 1);
4410 stream->write((uint64_t*)&cgen_var_310, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004411 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004412 uint64_t cgen_var_311 = (uint64_t)(uintptr_t)local_pAllocator;
4413 stream->putBe64(cgen_var_311);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004414 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004415 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004416 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004417 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004418 AEMU_SCOPED_TRACE("vkDestroyShaderModule readParams");
4419 AEMU_SCOPED_TRACE("vkDestroyShaderModule returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004420 resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004421 mImpl->log("finish vkDestroyShaderModule");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004422}
4423
4424VkResult VkEncoder::vkCreatePipelineCache(
4425 VkDevice device,
4426 const VkPipelineCacheCreateInfo* pCreateInfo,
4427 const VkAllocationCallbacks* pAllocator,
4428 VkPipelineCache* pPipelineCache)
4429{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004430 AEMU_SCOPED_TRACE("vkCreatePipelineCache encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004431 mImpl->log("start vkCreatePipelineCache");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004432 auto stream = mImpl->stream();
4433 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004434 auto resources = mImpl->resources();
4435 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004436 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004437 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004438 VkPipelineCacheCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004439 VkAllocationCallbacks* local_pAllocator;
4440 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004441 local_pCreateInfo = nullptr;
4442 if (pCreateInfo)
4443 {
4444 local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
4445 deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
4446 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004447 local_pAllocator = nullptr;
4448 if (pAllocator)
4449 {
4450 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4451 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4452 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004453 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004454 if (local_pCreateInfo)
4455 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004456 transform_tohost_VkPipelineCacheCreateInfo(mImpl->resources(), (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004457 }
4458 if (local_pAllocator)
4459 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004460 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004461 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004462 countingStream->rewind();
4463 {
David Reveman9875f2c2019-06-11 21:47:12 -04004464 uint64_t cgen_var_312;
4465 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_312, 1);
4466 countingStream->write((uint64_t*)&cgen_var_312, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004467 marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004468 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004469 uint64_t cgen_var_313 = (uint64_t)(uintptr_t)local_pAllocator;
4470 countingStream->putBe64(cgen_var_313);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004471 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004472 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004473 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004474 }
David Reveman9875f2c2019-06-11 21:47:12 -04004475 uint64_t cgen_var_314;
4476 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_314, 1);
4477 countingStream->write((uint64_t*)&cgen_var_314, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004478 }
4479 uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4480 countingStream->rewind();
4481 uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
4482 stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
4483 stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004484 uint64_t cgen_var_315;
4485 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_315, 1);
4486 stream->write((uint64_t*)&cgen_var_315, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004487 marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004488 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004489 uint64_t cgen_var_316 = (uint64_t)(uintptr_t)local_pAllocator;
4490 stream->putBe64(cgen_var_316);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004491 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004492 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004493 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004494 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004495 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04004496 uint64_t cgen_var_317;
4497 stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_317, 1);
4498 stream->write((uint64_t*)&cgen_var_317, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004499 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004500 AEMU_SCOPED_TRACE("vkCreatePipelineCache readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08004501 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04004502 uint64_t cgen_var_318;
4503 stream->read((uint64_t*)&cgen_var_318, 8);
4504 stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_318, (VkPipelineCache*)pPipelineCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08004505 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004506 AEMU_SCOPED_TRACE("vkCreatePipelineCache returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004507 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
4508 stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004509 countingStream->clearPool();
4510 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004511 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004512 mImpl->log("finish vkCreatePipelineCache");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004513 return vkCreatePipelineCache_VkResult_return;
4514}
4515
4516void VkEncoder::vkDestroyPipelineCache(
4517 VkDevice device,
4518 VkPipelineCache pipelineCache,
4519 const VkAllocationCallbacks* pAllocator)
4520{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004521 AEMU_SCOPED_TRACE("vkDestroyPipelineCache encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004522 mImpl->log("start vkDestroyPipelineCache");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004523 auto stream = mImpl->stream();
4524 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004525 auto resources = mImpl->resources();
4526 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004527 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004528 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004529 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004530 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004531 local_device = device;
4532 local_pipelineCache = pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004533 local_pAllocator = nullptr;
4534 if (pAllocator)
4535 {
4536 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4537 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4538 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004539 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004540 if (local_pAllocator)
4541 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004542 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004543 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004544 countingStream->rewind();
4545 {
David Reveman9875f2c2019-06-11 21:47:12 -04004546 uint64_t cgen_var_319;
4547 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_319, 1);
4548 countingStream->write((uint64_t*)&cgen_var_319, 1 * 8);
4549 uint64_t cgen_var_320;
4550 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_320, 1);
4551 countingStream->write((uint64_t*)&cgen_var_320, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004552 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004553 uint64_t cgen_var_321 = (uint64_t)(uintptr_t)local_pAllocator;
4554 countingStream->putBe64(cgen_var_321);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004555 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004556 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004557 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004558 }
4559 }
4560 uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4561 countingStream->rewind();
4562 uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
4563 stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
4564 stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004565 uint64_t cgen_var_322;
4566 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_322, 1);
4567 stream->write((uint64_t*)&cgen_var_322, 1 * 8);
4568 uint64_t cgen_var_323;
4569 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_323, 1);
4570 stream->write((uint64_t*)&cgen_var_323, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004571 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004572 uint64_t cgen_var_324 = (uint64_t)(uintptr_t)local_pAllocator;
4573 stream->putBe64(cgen_var_324);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004574 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004575 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004576 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004577 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004578 AEMU_SCOPED_TRACE("vkDestroyPipelineCache readParams");
4579 AEMU_SCOPED_TRACE("vkDestroyPipelineCache returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004580 resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004581 mImpl->log("finish vkDestroyPipelineCache");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004582}
4583
4584VkResult VkEncoder::vkGetPipelineCacheData(
4585 VkDevice device,
4586 VkPipelineCache pipelineCache,
4587 size_t* pDataSize,
4588 void* pData)
4589{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004590 AEMU_SCOPED_TRACE("vkGetPipelineCacheData encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004591 mImpl->log("start vkGetPipelineCacheData");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004592 auto stream = mImpl->stream();
4593 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004594 auto resources = mImpl->resources();
4595 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004596 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004597 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004598 VkPipelineCache local_pipelineCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004599 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004600 local_pipelineCache = pipelineCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004601 countingStream->rewind();
4602 {
David Reveman9875f2c2019-06-11 21:47:12 -04004603 uint64_t cgen_var_325;
4604 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_325, 1);
4605 countingStream->write((uint64_t*)&cgen_var_325, 1 * 8);
4606 uint64_t cgen_var_326;
4607 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_326, 1);
4608 countingStream->write((uint64_t*)&cgen_var_326, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004609 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004610 uint64_t cgen_var_327 = (uint64_t)(uintptr_t)pDataSize;
4611 countingStream->putBe64(cgen_var_327);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004612 if (pDataSize)
4613 {
David Reveman9875f2c2019-06-11 21:47:12 -04004614 uint64_t cgen_var_328 = (uint64_t)(*pDataSize);
4615 countingStream->putBe64(cgen_var_328);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004616 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004617 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004618 uint64_t cgen_var_329 = (uint64_t)(uintptr_t)pData;
4619 countingStream->putBe64(cgen_var_329);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004620 if (pData)
4621 {
4622 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4623 }
4624 }
4625 uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4626 countingStream->rewind();
4627 uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
4628 stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
4629 stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004630 uint64_t cgen_var_330;
4631 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_330, 1);
4632 stream->write((uint64_t*)&cgen_var_330, 1 * 8);
4633 uint64_t cgen_var_331;
4634 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_331, 1);
4635 stream->write((uint64_t*)&cgen_var_331, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004636 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004637 uint64_t cgen_var_332 = (uint64_t)(uintptr_t)pDataSize;
4638 stream->putBe64(cgen_var_332);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004639 if (pDataSize)
4640 {
David Reveman9875f2c2019-06-11 21:47:12 -04004641 uint64_t cgen_var_333 = (uint64_t)(*pDataSize);
4642 stream->putBe64(cgen_var_333);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004643 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004644 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004645 uint64_t cgen_var_334 = (uint64_t)(uintptr_t)pData;
4646 stream->putBe64(cgen_var_334);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004647 if (pData)
4648 {
4649 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4650 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004651 AEMU_SCOPED_TRACE("vkGetPipelineCacheData readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004652 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004653 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004654 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004655 if (pDataSize)
4656 {
4657 if (!(check_pDataSize))
4658 {
4659 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
4660 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -08004661 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004662 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004663 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004664 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004665 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004666 if (pData)
4667 {
4668 if (!(check_pData))
4669 {
4670 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
4671 }
4672 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4673 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004674 AEMU_SCOPED_TRACE("vkGetPipelineCacheData returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004675 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
4676 stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004677 countingStream->clearPool();
4678 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004679 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004680 mImpl->log("finish vkGetPipelineCacheData");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004681 return vkGetPipelineCacheData_VkResult_return;
4682}
4683
4684VkResult VkEncoder::vkMergePipelineCaches(
4685 VkDevice device,
4686 VkPipelineCache dstCache,
4687 uint32_t srcCacheCount,
4688 const VkPipelineCache* pSrcCaches)
4689{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004690 AEMU_SCOPED_TRACE("vkMergePipelineCaches encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004691 mImpl->log("start vkMergePipelineCaches");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004692 auto stream = mImpl->stream();
4693 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004694 auto resources = mImpl->resources();
4695 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004696 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004697 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004698 VkPipelineCache local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004699 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004700 VkPipelineCache* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004701 local_device = device;
4702 local_dstCache = dstCache;
4703 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004704 local_pSrcCaches = nullptr;
4705 if (pSrcCaches)
4706 {
4707 local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
4708 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004709 countingStream->rewind();
4710 {
David Reveman9875f2c2019-06-11 21:47:12 -04004711 uint64_t cgen_var_338;
4712 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_338, 1);
4713 countingStream->write((uint64_t*)&cgen_var_338, 1 * 8);
4714 uint64_t cgen_var_339;
4715 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_339, 1);
4716 countingStream->write((uint64_t*)&cgen_var_339, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004717 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004718 if (((srcCacheCount)))
4719 {
David Reveman9875f2c2019-06-11 21:47:12 -04004720 uint64_t* cgen_var_340;
4721 countingStream->alloc((void**)&cgen_var_340, ((srcCacheCount)) * 8);
4722 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_340, ((srcCacheCount)));
4723 countingStream->write((uint64_t*)cgen_var_340, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004724 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004725 }
4726 uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4727 countingStream->rewind();
4728 uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4729 stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4730 stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004731 uint64_t cgen_var_341;
4732 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_341, 1);
4733 stream->write((uint64_t*)&cgen_var_341, 1 * 8);
4734 uint64_t cgen_var_342;
4735 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_342, 1);
4736 stream->write((uint64_t*)&cgen_var_342, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004737 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004738 if (((srcCacheCount)))
4739 {
David Reveman9875f2c2019-06-11 21:47:12 -04004740 uint64_t* cgen_var_343;
4741 stream->alloc((void**)&cgen_var_343, ((srcCacheCount)) * 8);
4742 stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_343, ((srcCacheCount)));
4743 stream->write((uint64_t*)cgen_var_343, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004744 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004745 AEMU_SCOPED_TRACE("vkMergePipelineCaches readParams");
4746 AEMU_SCOPED_TRACE("vkMergePipelineCaches returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004747 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4748 stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004749 countingStream->clearPool();
4750 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004751 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004752 mImpl->log("finish vkMergePipelineCaches");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004753 return vkMergePipelineCaches_VkResult_return;
4754}
4755
4756VkResult VkEncoder::vkCreateGraphicsPipelines(
4757 VkDevice device,
4758 VkPipelineCache pipelineCache,
4759 uint32_t createInfoCount,
4760 const VkGraphicsPipelineCreateInfo* pCreateInfos,
4761 const VkAllocationCallbacks* pAllocator,
4762 VkPipeline* pPipelines)
4763{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004764 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004765 mImpl->log("start vkCreateGraphicsPipelines");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004766 auto stream = mImpl->stream();
4767 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004768 auto resources = mImpl->resources();
4769 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004770 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004771 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004772 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004773 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004774 VkGraphicsPipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004775 VkAllocationCallbacks* local_pAllocator;
4776 local_device = device;
4777 local_pipelineCache = pipelineCache;
4778 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004779 local_pCreateInfos = nullptr;
4780 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004781 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004782 local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004783 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4784 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004785 deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004786 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004787 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004788 local_pAllocator = nullptr;
4789 if (pAllocator)
4790 {
4791 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4792 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4793 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004794 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004795 if (local_pCreateInfos)
4796 {
4797 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4798 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004799 transform_tohost_VkGraphicsPipelineCreateInfo(mImpl->resources(), (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004800 }
4801 }
4802 if (local_pAllocator)
4803 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004804 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004805 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004806 countingStream->rewind();
4807 {
David Reveman9875f2c2019-06-11 21:47:12 -04004808 uint64_t cgen_var_344;
4809 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_344, 1);
4810 countingStream->write((uint64_t*)&cgen_var_344, 1 * 8);
4811 uint64_t cgen_var_345;
4812 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_345, 1);
4813 countingStream->write((uint64_t*)&cgen_var_345, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004814 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4815 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4816 {
4817 marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4818 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004819 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004820 uint64_t cgen_var_346 = (uint64_t)(uintptr_t)local_pAllocator;
4821 countingStream->putBe64(cgen_var_346);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004822 if (local_pAllocator)
4823 {
4824 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004825 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004826 if (((createInfoCount)))
4827 {
David Reveman9875f2c2019-06-11 21:47:12 -04004828 uint64_t* cgen_var_347;
4829 countingStream->alloc((void**)&cgen_var_347, ((createInfoCount)) * 8);
4830 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_347, ((createInfoCount)));
4831 countingStream->write((uint64_t*)cgen_var_347, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004832 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004833 }
4834 uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4835 countingStream->rewind();
4836 uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4837 stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4838 stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004839 uint64_t cgen_var_348;
4840 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_348, 1);
4841 stream->write((uint64_t*)&cgen_var_348, 1 * 8);
4842 uint64_t cgen_var_349;
4843 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_349, 1);
4844 stream->write((uint64_t*)&cgen_var_349, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004845 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004846 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4847 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004848 marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004849 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004850 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004851 uint64_t cgen_var_350 = (uint64_t)(uintptr_t)local_pAllocator;
4852 stream->putBe64(cgen_var_350);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004853 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004854 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004855 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004856 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004857 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004858 if (((createInfoCount)))
4859 {
David Reveman9875f2c2019-06-11 21:47:12 -04004860 uint64_t* cgen_var_351;
4861 stream->alloc((void**)&cgen_var_351, ((createInfoCount)) * 8);
4862 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_351, ((createInfoCount)));
4863 stream->write((uint64_t*)cgen_var_351, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004864 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004865 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004866 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08004867 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004868 if (((createInfoCount)))
4869 {
David Reveman9875f2c2019-06-11 21:47:12 -04004870 uint64_t* cgen_var_352;
4871 stream->alloc((void**)&cgen_var_352, ((createInfoCount)) * 8);
4872 stream->read((uint64_t*)cgen_var_352, ((createInfoCount)) * 8);
4873 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_352, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004874 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004875 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004876 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004877 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4878 stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08004879 countingStream->clearPool();
4880 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004881 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004882 mImpl->log("finish vkCreateGraphicsPipelines");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004883 return vkCreateGraphicsPipelines_VkResult_return;
4884}
4885
4886VkResult VkEncoder::vkCreateComputePipelines(
4887 VkDevice device,
4888 VkPipelineCache pipelineCache,
4889 uint32_t createInfoCount,
4890 const VkComputePipelineCreateInfo* pCreateInfos,
4891 const VkAllocationCallbacks* pAllocator,
4892 VkPipeline* pPipelines)
4893{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004894 AEMU_SCOPED_TRACE("vkCreateComputePipelines encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08004895 mImpl->log("start vkCreateComputePipelines");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004896 auto stream = mImpl->stream();
4897 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004898 auto resources = mImpl->resources();
4899 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08004900 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004901 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004902 VkPipelineCache local_pipelineCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004903 uint32_t local_createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004904 VkComputePipelineCreateInfo* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08004905 VkAllocationCallbacks* local_pAllocator;
4906 local_device = device;
4907 local_pipelineCache = pipelineCache;
4908 local_createInfoCount = createInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004909 local_pCreateInfos = nullptr;
4910 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004911 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004912 local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004913 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4914 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004915 deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004916 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004917 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004918 local_pAllocator = nullptr;
4919 if (pAllocator)
4920 {
4921 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4922 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4923 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08004924 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08004925 if (local_pCreateInfos)
4926 {
4927 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4928 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004929 transform_tohost_VkComputePipelineCreateInfo(mImpl->resources(), (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004930 }
4931 }
4932 if (local_pAllocator)
4933 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08004934 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08004935 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004936 countingStream->rewind();
4937 {
David Reveman9875f2c2019-06-11 21:47:12 -04004938 uint64_t cgen_var_353;
4939 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4940 countingStream->write((uint64_t*)&cgen_var_353, 1 * 8);
4941 uint64_t cgen_var_354;
4942 countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_354, 1);
4943 countingStream->write((uint64_t*)&cgen_var_354, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004944 countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4945 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4946 {
4947 marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4948 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004949 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004950 uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4951 countingStream->putBe64(cgen_var_355);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004952 if (local_pAllocator)
4953 {
4954 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004955 }
Lingfeng Yang2285df12018-11-17 16:25:11 -08004956 if (((createInfoCount)))
4957 {
David Reveman9875f2c2019-06-11 21:47:12 -04004958 uint64_t* cgen_var_356;
4959 countingStream->alloc((void**)&cgen_var_356, ((createInfoCount)) * 8);
4960 countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_356, ((createInfoCount)));
4961 countingStream->write((uint64_t*)cgen_var_356, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004962 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004963 }
4964 uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4965 countingStream->rewind();
4966 uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4967 stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4968 stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04004969 uint64_t cgen_var_357;
4970 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_357, 1);
4971 stream->write((uint64_t*)&cgen_var_357, 1 * 8);
4972 uint64_t cgen_var_358;
4973 stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_358, 1);
4974 stream->write((uint64_t*)&cgen_var_358, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004975 stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004976 for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4977 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004978 marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004979 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -08004980 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04004981 uint64_t cgen_var_359 = (uint64_t)(uintptr_t)local_pAllocator;
4982 stream->putBe64(cgen_var_359);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004983 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004984 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08004985 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07004986 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004987 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08004988 if (((createInfoCount)))
4989 {
David Reveman9875f2c2019-06-11 21:47:12 -04004990 uint64_t* cgen_var_360;
4991 stream->alloc((void**)&cgen_var_360, ((createInfoCount)) * 8);
4992 stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_360, ((createInfoCount)));
4993 stream->write((uint64_t*)cgen_var_360, ((createInfoCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08004994 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08004995 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004996 AEMU_SCOPED_TRACE("vkCreateComputePipelines readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08004997 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08004998 if (((createInfoCount)))
4999 {
David Reveman9875f2c2019-06-11 21:47:12 -04005000 uint64_t* cgen_var_361;
5001 stream->alloc((void**)&cgen_var_361, ((createInfoCount)) * 8);
5002 stream->read((uint64_t*)cgen_var_361, ((createInfoCount)) * 8);
5003 stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_361, (VkPipeline*)pPipelines, ((createInfoCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005004 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005005 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005006 AEMU_SCOPED_TRACE("vkCreateComputePipelines returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005007 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
5008 stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005009 countingStream->clearPool();
5010 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005011 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005012 mImpl->log("finish vkCreateComputePipelines");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005013 return vkCreateComputePipelines_VkResult_return;
5014}
5015
5016void VkEncoder::vkDestroyPipeline(
5017 VkDevice device,
5018 VkPipeline pipeline,
5019 const VkAllocationCallbacks* pAllocator)
5020{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005021 AEMU_SCOPED_TRACE("vkDestroyPipeline encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005022 mImpl->log("start vkDestroyPipeline");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005023 auto stream = mImpl->stream();
5024 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005025 auto resources = mImpl->resources();
5026 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005027 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005028 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005029 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005030 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005031 local_device = device;
5032 local_pipeline = pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005033 local_pAllocator = nullptr;
5034 if (pAllocator)
5035 {
5036 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5037 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5038 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005039 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005040 if (local_pAllocator)
5041 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005042 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005043 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005044 countingStream->rewind();
5045 {
David Reveman9875f2c2019-06-11 21:47:12 -04005046 uint64_t cgen_var_362;
5047 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_362, 1);
5048 countingStream->write((uint64_t*)&cgen_var_362, 1 * 8);
5049 uint64_t cgen_var_363;
5050 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_363, 1);
5051 countingStream->write((uint64_t*)&cgen_var_363, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005052 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005053 uint64_t cgen_var_364 = (uint64_t)(uintptr_t)local_pAllocator;
5054 countingStream->putBe64(cgen_var_364);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005055 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005056 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005057 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005058 }
5059 }
5060 uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5061 countingStream->rewind();
5062 uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
5063 stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
5064 stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005065 uint64_t cgen_var_365;
5066 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_365, 1);
5067 stream->write((uint64_t*)&cgen_var_365, 1 * 8);
5068 uint64_t cgen_var_366;
5069 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_366, 1);
5070 stream->write((uint64_t*)&cgen_var_366, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005071 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005072 uint64_t cgen_var_367 = (uint64_t)(uintptr_t)local_pAllocator;
5073 stream->putBe64(cgen_var_367);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005074 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005075 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005076 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005077 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005078 AEMU_SCOPED_TRACE("vkDestroyPipeline readParams");
5079 AEMU_SCOPED_TRACE("vkDestroyPipeline returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005080 resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005081 mImpl->log("finish vkDestroyPipeline");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005082}
5083
5084VkResult VkEncoder::vkCreatePipelineLayout(
5085 VkDevice device,
5086 const VkPipelineLayoutCreateInfo* pCreateInfo,
5087 const VkAllocationCallbacks* pAllocator,
5088 VkPipelineLayout* pPipelineLayout)
5089{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005090 AEMU_SCOPED_TRACE("vkCreatePipelineLayout encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005091 mImpl->log("start vkCreatePipelineLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005092 auto stream = mImpl->stream();
5093 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005094 auto resources = mImpl->resources();
5095 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005096 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005097 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005098 VkPipelineLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005099 VkAllocationCallbacks* local_pAllocator;
5100 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005101 local_pCreateInfo = nullptr;
5102 if (pCreateInfo)
5103 {
5104 local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
5105 deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
5106 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005107 local_pAllocator = nullptr;
5108 if (pAllocator)
5109 {
5110 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5111 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5112 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005113 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005114 if (local_pCreateInfo)
5115 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005116 transform_tohost_VkPipelineLayoutCreateInfo(mImpl->resources(), (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005117 }
5118 if (local_pAllocator)
5119 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005120 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005121 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005122 countingStream->rewind();
5123 {
David Reveman9875f2c2019-06-11 21:47:12 -04005124 uint64_t cgen_var_368;
5125 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_368, 1);
5126 countingStream->write((uint64_t*)&cgen_var_368, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005127 marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005128 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005129 uint64_t cgen_var_369 = (uint64_t)(uintptr_t)local_pAllocator;
5130 countingStream->putBe64(cgen_var_369);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005131 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005132 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005133 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005134 }
David Reveman9875f2c2019-06-11 21:47:12 -04005135 uint64_t cgen_var_370;
5136 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_370, 1);
5137 countingStream->write((uint64_t*)&cgen_var_370, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005138 }
5139 uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5140 countingStream->rewind();
5141 uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
5142 stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
5143 stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005144 uint64_t cgen_var_371;
5145 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_371, 1);
5146 stream->write((uint64_t*)&cgen_var_371, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005147 marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005148 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005149 uint64_t cgen_var_372 = (uint64_t)(uintptr_t)local_pAllocator;
5150 stream->putBe64(cgen_var_372);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005151 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005152 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005153 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005154 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005155 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04005156 uint64_t cgen_var_373;
5157 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_373, 1);
5158 stream->write((uint64_t*)&cgen_var_373, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005159 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005160 AEMU_SCOPED_TRACE("vkCreatePipelineLayout readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08005161 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04005162 uint64_t cgen_var_374;
5163 stream->read((uint64_t*)&cgen_var_374, 8);
5164 stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_374, (VkPipelineLayout*)pPipelineLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005165 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005166 AEMU_SCOPED_TRACE("vkCreatePipelineLayout returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005167 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
5168 stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005169 countingStream->clearPool();
5170 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005171 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005172 mImpl->log("finish vkCreatePipelineLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005173 return vkCreatePipelineLayout_VkResult_return;
5174}
5175
5176void VkEncoder::vkDestroyPipelineLayout(
5177 VkDevice device,
5178 VkPipelineLayout pipelineLayout,
5179 const VkAllocationCallbacks* pAllocator)
5180{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005181 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005182 mImpl->log("start vkDestroyPipelineLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005183 auto stream = mImpl->stream();
5184 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005185 auto resources = mImpl->resources();
5186 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005187 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005188 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005189 VkPipelineLayout local_pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005190 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005191 local_device = device;
5192 local_pipelineLayout = pipelineLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005193 local_pAllocator = nullptr;
5194 if (pAllocator)
5195 {
5196 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5197 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5198 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005199 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005200 if (local_pAllocator)
5201 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005202 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005203 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005204 countingStream->rewind();
5205 {
David Reveman9875f2c2019-06-11 21:47:12 -04005206 uint64_t cgen_var_375;
5207 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_375, 1);
5208 countingStream->write((uint64_t*)&cgen_var_375, 1 * 8);
5209 uint64_t cgen_var_376;
5210 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_376, 1);
5211 countingStream->write((uint64_t*)&cgen_var_376, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005212 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005213 uint64_t cgen_var_377 = (uint64_t)(uintptr_t)local_pAllocator;
5214 countingStream->putBe64(cgen_var_377);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005215 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005216 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005217 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005218 }
5219 }
5220 uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5221 countingStream->rewind();
5222 uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
5223 stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
5224 stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005225 uint64_t cgen_var_378;
5226 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_378, 1);
5227 stream->write((uint64_t*)&cgen_var_378, 1 * 8);
5228 uint64_t cgen_var_379;
5229 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_379, 1);
5230 stream->write((uint64_t*)&cgen_var_379, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005231 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005232 uint64_t cgen_var_380 = (uint64_t)(uintptr_t)local_pAllocator;
5233 stream->putBe64(cgen_var_380);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005234 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005235 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005236 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005237 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005238 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout readParams");
5239 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005240 resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005241 mImpl->log("finish vkDestroyPipelineLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005242}
5243
5244VkResult VkEncoder::vkCreateSampler(
5245 VkDevice device,
5246 const VkSamplerCreateInfo* pCreateInfo,
5247 const VkAllocationCallbacks* pAllocator,
5248 VkSampler* pSampler)
5249{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005250 AEMU_SCOPED_TRACE("vkCreateSampler encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005251 mImpl->log("start vkCreateSampler");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005252 auto stream = mImpl->stream();
5253 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005254 auto resources = mImpl->resources();
5255 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005256 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005257 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005258 VkSamplerCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005259 VkAllocationCallbacks* local_pAllocator;
5260 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005261 local_pCreateInfo = nullptr;
5262 if (pCreateInfo)
5263 {
5264 local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
5265 deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
5266 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005267 local_pAllocator = nullptr;
5268 if (pAllocator)
5269 {
5270 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5271 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5272 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005273 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005274 if (local_pCreateInfo)
5275 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005276 transform_tohost_VkSamplerCreateInfo(mImpl->resources(), (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005277 }
5278 if (local_pAllocator)
5279 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005280 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005281 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005282 countingStream->rewind();
5283 {
David Reveman9875f2c2019-06-11 21:47:12 -04005284 uint64_t cgen_var_381;
5285 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_381, 1);
5286 countingStream->write((uint64_t*)&cgen_var_381, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005287 marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005288 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005289 uint64_t cgen_var_382 = (uint64_t)(uintptr_t)local_pAllocator;
5290 countingStream->putBe64(cgen_var_382);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005291 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005292 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005293 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005294 }
David Reveman9875f2c2019-06-11 21:47:12 -04005295 uint64_t cgen_var_383;
5296 countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_383, 1);
5297 countingStream->write((uint64_t*)&cgen_var_383, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005298 }
5299 uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5300 countingStream->rewind();
5301 uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
5302 stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
5303 stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005304 uint64_t cgen_var_384;
5305 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_384, 1);
5306 stream->write((uint64_t*)&cgen_var_384, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005307 marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005308 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005309 uint64_t cgen_var_385 = (uint64_t)(uintptr_t)local_pAllocator;
5310 stream->putBe64(cgen_var_385);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005311 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005312 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005313 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005314 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005315 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04005316 uint64_t cgen_var_386;
5317 stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_386, 1);
5318 stream->write((uint64_t*)&cgen_var_386, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005319 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005320 AEMU_SCOPED_TRACE("vkCreateSampler readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08005321 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04005322 uint64_t cgen_var_387;
5323 stream->read((uint64_t*)&cgen_var_387, 8);
5324 stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_387, (VkSampler*)pSampler, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005325 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005326 AEMU_SCOPED_TRACE("vkCreateSampler returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005327 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
5328 stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005329 countingStream->clearPool();
5330 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005331 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005332 mImpl->log("finish vkCreateSampler");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005333 return vkCreateSampler_VkResult_return;
5334}
5335
5336void VkEncoder::vkDestroySampler(
5337 VkDevice device,
5338 VkSampler sampler,
5339 const VkAllocationCallbacks* pAllocator)
5340{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005341 AEMU_SCOPED_TRACE("vkDestroySampler encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005342 mImpl->log("start vkDestroySampler");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005343 auto stream = mImpl->stream();
5344 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005345 auto resources = mImpl->resources();
5346 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005347 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005348 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005349 VkSampler local_sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005350 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005351 local_device = device;
5352 local_sampler = sampler;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005353 local_pAllocator = nullptr;
5354 if (pAllocator)
5355 {
5356 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5357 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5358 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005359 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005360 if (local_pAllocator)
5361 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005362 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005363 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005364 countingStream->rewind();
5365 {
David Reveman9875f2c2019-06-11 21:47:12 -04005366 uint64_t cgen_var_388;
5367 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_388, 1);
5368 countingStream->write((uint64_t*)&cgen_var_388, 1 * 8);
5369 uint64_t cgen_var_389;
5370 countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_389, 1);
5371 countingStream->write((uint64_t*)&cgen_var_389, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005372 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005373 uint64_t cgen_var_390 = (uint64_t)(uintptr_t)local_pAllocator;
5374 countingStream->putBe64(cgen_var_390);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005375 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005376 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005377 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005378 }
5379 }
5380 uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5381 countingStream->rewind();
5382 uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
5383 stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
5384 stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005385 uint64_t cgen_var_391;
5386 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_391, 1);
5387 stream->write((uint64_t*)&cgen_var_391, 1 * 8);
5388 uint64_t cgen_var_392;
5389 stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_392, 1);
5390 stream->write((uint64_t*)&cgen_var_392, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005391 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005392 uint64_t cgen_var_393 = (uint64_t)(uintptr_t)local_pAllocator;
5393 stream->putBe64(cgen_var_393);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005394 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005395 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005396 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005397 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005398 AEMU_SCOPED_TRACE("vkDestroySampler readParams");
5399 AEMU_SCOPED_TRACE("vkDestroySampler returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005400 resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005401 mImpl->log("finish vkDestroySampler");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005402}
5403
5404VkResult VkEncoder::vkCreateDescriptorSetLayout(
5405 VkDevice device,
5406 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
5407 const VkAllocationCallbacks* pAllocator,
5408 VkDescriptorSetLayout* pSetLayout)
5409{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005410 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005411 mImpl->log("start vkCreateDescriptorSetLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005412 auto stream = mImpl->stream();
5413 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005414 auto resources = mImpl->resources();
5415 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005416 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005417 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005418 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005419 VkAllocationCallbacks* local_pAllocator;
5420 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005421 local_pCreateInfo = nullptr;
5422 if (pCreateInfo)
5423 {
5424 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
5425 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
5426 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005427 local_pAllocator = nullptr;
5428 if (pAllocator)
5429 {
5430 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5431 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5432 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005433 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005434 if (local_pCreateInfo)
5435 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005436 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005437 }
5438 if (local_pAllocator)
5439 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005440 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005441 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005442 countingStream->rewind();
5443 {
David Reveman9875f2c2019-06-11 21:47:12 -04005444 uint64_t cgen_var_394;
5445 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_394, 1);
5446 countingStream->write((uint64_t*)&cgen_var_394, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005447 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005448 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005449 uint64_t cgen_var_395 = (uint64_t)(uintptr_t)local_pAllocator;
5450 countingStream->putBe64(cgen_var_395);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005451 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005452 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005453 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005454 }
David Reveman9875f2c2019-06-11 21:47:12 -04005455 uint64_t cgen_var_396;
5456 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_396, 1);
5457 countingStream->write((uint64_t*)&cgen_var_396, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005458 }
5459 uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5460 countingStream->rewind();
5461 uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
5462 stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
5463 stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005464 uint64_t cgen_var_397;
5465 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_397, 1);
5466 stream->write((uint64_t*)&cgen_var_397, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005467 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005468 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005469 uint64_t cgen_var_398 = (uint64_t)(uintptr_t)local_pAllocator;
5470 stream->putBe64(cgen_var_398);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005471 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005472 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005473 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005474 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005475 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04005476 uint64_t cgen_var_399;
5477 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_399, 1);
5478 stream->write((uint64_t*)&cgen_var_399, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005479 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005480 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08005481 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04005482 uint64_t cgen_var_400;
5483 stream->read((uint64_t*)&cgen_var_400, 8);
5484 stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_400, (VkDescriptorSetLayout*)pSetLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005485 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005486 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005487 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
5488 stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005489 countingStream->clearPool();
5490 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005491 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005492 mImpl->log("finish vkCreateDescriptorSetLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005493 return vkCreateDescriptorSetLayout_VkResult_return;
5494}
5495
5496void VkEncoder::vkDestroyDescriptorSetLayout(
5497 VkDevice device,
5498 VkDescriptorSetLayout descriptorSetLayout,
5499 const VkAllocationCallbacks* pAllocator)
5500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005501 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005502 mImpl->log("start vkDestroyDescriptorSetLayout");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005503 auto stream = mImpl->stream();
5504 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005505 auto resources = mImpl->resources();
5506 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005507 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005508 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005509 VkDescriptorSetLayout local_descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005510 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005511 local_device = device;
5512 local_descriptorSetLayout = descriptorSetLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005513 local_pAllocator = nullptr;
5514 if (pAllocator)
5515 {
5516 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5517 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5518 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005519 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005520 if (local_pAllocator)
5521 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005522 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005523 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005524 countingStream->rewind();
5525 {
David Reveman9875f2c2019-06-11 21:47:12 -04005526 uint64_t cgen_var_401;
5527 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_401, 1);
5528 countingStream->write((uint64_t*)&cgen_var_401, 1 * 8);
5529 uint64_t cgen_var_402;
5530 countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_402, 1);
5531 countingStream->write((uint64_t*)&cgen_var_402, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005532 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005533 uint64_t cgen_var_403 = (uint64_t)(uintptr_t)local_pAllocator;
5534 countingStream->putBe64(cgen_var_403);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005535 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005536 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005537 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005538 }
5539 }
5540 uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5541 countingStream->rewind();
5542 uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
5543 stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
5544 stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005545 uint64_t cgen_var_404;
5546 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_404, 1);
5547 stream->write((uint64_t*)&cgen_var_404, 1 * 8);
5548 uint64_t cgen_var_405;
5549 stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_405, 1);
5550 stream->write((uint64_t*)&cgen_var_405, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005551 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005552 uint64_t cgen_var_406 = (uint64_t)(uintptr_t)local_pAllocator;
5553 stream->putBe64(cgen_var_406);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005554 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005555 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005556 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005557 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005558 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout readParams");
5559 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005560 resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005561 mImpl->log("finish vkDestroyDescriptorSetLayout");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005562}
5563
5564VkResult VkEncoder::vkCreateDescriptorPool(
5565 VkDevice device,
5566 const VkDescriptorPoolCreateInfo* pCreateInfo,
5567 const VkAllocationCallbacks* pAllocator,
5568 VkDescriptorPool* pDescriptorPool)
5569{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005570 AEMU_SCOPED_TRACE("vkCreateDescriptorPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005571 mImpl->log("start vkCreateDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005572 auto stream = mImpl->stream();
5573 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005574 auto resources = mImpl->resources();
5575 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005576 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005577 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005578 VkDescriptorPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005579 VkAllocationCallbacks* local_pAllocator;
5580 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005581 local_pCreateInfo = nullptr;
5582 if (pCreateInfo)
5583 {
5584 local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
5585 deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5586 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005587 local_pAllocator = nullptr;
5588 if (pAllocator)
5589 {
5590 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5591 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5592 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005593 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005594 if (local_pCreateInfo)
5595 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005596 transform_tohost_VkDescriptorPoolCreateInfo(mImpl->resources(), (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005597 }
5598 if (local_pAllocator)
5599 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005600 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005601 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005602 countingStream->rewind();
5603 {
David Reveman9875f2c2019-06-11 21:47:12 -04005604 uint64_t cgen_var_407;
5605 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_407, 1);
5606 countingStream->write((uint64_t*)&cgen_var_407, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005607 marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005608 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005609 uint64_t cgen_var_408 = (uint64_t)(uintptr_t)local_pAllocator;
5610 countingStream->putBe64(cgen_var_408);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005611 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005612 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005613 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005614 }
David Reveman9875f2c2019-06-11 21:47:12 -04005615 uint64_t cgen_var_409;
5616 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_409, 1);
5617 countingStream->write((uint64_t*)&cgen_var_409, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005618 }
5619 uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5620 countingStream->rewind();
5621 uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
5622 stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
5623 stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005624 uint64_t cgen_var_410;
5625 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
5626 stream->write((uint64_t*)&cgen_var_410, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005627 marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005628 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005629 uint64_t cgen_var_411 = (uint64_t)(uintptr_t)local_pAllocator;
5630 stream->putBe64(cgen_var_411);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005631 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005632 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005633 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005634 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005635 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04005636 uint64_t cgen_var_412;
5637 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_412, 1);
5638 stream->write((uint64_t*)&cgen_var_412, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005639 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005640 AEMU_SCOPED_TRACE("vkCreateDescriptorPool readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08005641 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04005642 uint64_t cgen_var_413;
5643 stream->read((uint64_t*)&cgen_var_413, 8);
5644 stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_413, (VkDescriptorPool*)pDescriptorPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08005645 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005646 AEMU_SCOPED_TRACE("vkCreateDescriptorPool returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005647 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
5648 stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005649 countingStream->clearPool();
5650 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005651 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005652 mImpl->log("finish vkCreateDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005653 return vkCreateDescriptorPool_VkResult_return;
5654}
5655
5656void VkEncoder::vkDestroyDescriptorPool(
5657 VkDevice device,
5658 VkDescriptorPool descriptorPool,
5659 const VkAllocationCallbacks* pAllocator)
5660{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005661 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005662 mImpl->log("start vkDestroyDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005663 auto stream = mImpl->stream();
5664 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005665 auto resources = mImpl->resources();
5666 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005667 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005668 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005669 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005670 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005671 local_device = device;
5672 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005673 local_pAllocator = nullptr;
5674 if (pAllocator)
5675 {
5676 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5677 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5678 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005679 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08005680 if (local_pAllocator)
5681 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005682 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005683 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005684 countingStream->rewind();
5685 {
David Reveman9875f2c2019-06-11 21:47:12 -04005686 uint64_t cgen_var_414;
5687 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_414, 1);
5688 countingStream->write((uint64_t*)&cgen_var_414, 1 * 8);
5689 uint64_t cgen_var_415;
5690 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_415, 1);
5691 countingStream->write((uint64_t*)&cgen_var_415, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005692 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005693 uint64_t cgen_var_416 = (uint64_t)(uintptr_t)local_pAllocator;
5694 countingStream->putBe64(cgen_var_416);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005695 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005696 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005697 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005698 }
5699 }
5700 uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5701 countingStream->rewind();
5702 uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
5703 stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
5704 stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005705 uint64_t cgen_var_417;
5706 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_417, 1);
5707 stream->write((uint64_t*)&cgen_var_417, 1 * 8);
5708 uint64_t cgen_var_418;
5709 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_418, 1);
5710 stream->write((uint64_t*)&cgen_var_418, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005711 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005712 uint64_t cgen_var_419 = (uint64_t)(uintptr_t)local_pAllocator;
5713 stream->putBe64(cgen_var_419);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005714 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005715 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005716 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005717 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005718 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool readParams");
5719 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005720 resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005721 mImpl->log("finish vkDestroyDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005722}
5723
5724VkResult VkEncoder::vkResetDescriptorPool(
5725 VkDevice device,
5726 VkDescriptorPool descriptorPool,
5727 VkDescriptorPoolResetFlags flags)
5728{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005729 AEMU_SCOPED_TRACE("vkResetDescriptorPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005730 mImpl->log("start vkResetDescriptorPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005731 auto stream = mImpl->stream();
5732 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005733 auto resources = mImpl->resources();
5734 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005735 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005736 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005737 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005738 VkDescriptorPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005739 local_device = device;
5740 local_descriptorPool = descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005741 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005742 countingStream->rewind();
5743 {
David Reveman9875f2c2019-06-11 21:47:12 -04005744 uint64_t cgen_var_420;
5745 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_420, 1);
5746 countingStream->write((uint64_t*)&cgen_var_420, 1 * 8);
5747 uint64_t cgen_var_421;
5748 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_421, 1);
5749 countingStream->write((uint64_t*)&cgen_var_421, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005750 countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005751 }
5752 uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5753 countingStream->rewind();
5754 uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
5755 stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
5756 stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005757 uint64_t cgen_var_422;
5758 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_422, 1);
5759 stream->write((uint64_t*)&cgen_var_422, 1 * 8);
5760 uint64_t cgen_var_423;
5761 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_423, 1);
5762 stream->write((uint64_t*)&cgen_var_423, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005763 stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005764 AEMU_SCOPED_TRACE("vkResetDescriptorPool readParams");
5765 AEMU_SCOPED_TRACE("vkResetDescriptorPool returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005766 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
5767 stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005768 countingStream->clearPool();
5769 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005770 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005771 mImpl->log("finish vkResetDescriptorPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005772 return vkResetDescriptorPool_VkResult_return;
5773}
5774
5775VkResult VkEncoder::vkAllocateDescriptorSets(
5776 VkDevice device,
5777 const VkDescriptorSetAllocateInfo* pAllocateInfo,
5778 VkDescriptorSet* pDescriptorSets)
5779{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005780 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005781 mImpl->log("start vkAllocateDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005782 auto stream = mImpl->stream();
5783 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005784 auto resources = mImpl->resources();
5785 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005786 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005787 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005788 VkDescriptorSetAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005789 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005790 local_pAllocateInfo = nullptr;
5791 if (pAllocateInfo)
5792 {
5793 local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
5794 deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5795 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005796 if (local_pAllocateInfo)
5797 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005798 transform_tohost_VkDescriptorSetAllocateInfo(mImpl->resources(), (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005799 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005800 countingStream->rewind();
5801 {
David Reveman9875f2c2019-06-11 21:47:12 -04005802 uint64_t cgen_var_424;
5803 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_424, 1);
5804 countingStream->write((uint64_t*)&cgen_var_424, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005805 marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005806 if (pAllocateInfo->descriptorSetCount)
5807 {
David Reveman9875f2c2019-06-11 21:47:12 -04005808 uint64_t* cgen_var_425;
5809 countingStream->alloc((void**)&cgen_var_425, pAllocateInfo->descriptorSetCount * 8);
5810 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_425, pAllocateInfo->descriptorSetCount);
5811 countingStream->write((uint64_t*)cgen_var_425, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005812 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005813 }
5814 uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5815 countingStream->rewind();
5816 uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
5817 stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
5818 stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005819 uint64_t cgen_var_426;
5820 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_426, 1);
5821 stream->write((uint64_t*)&cgen_var_426, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005822 marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08005823 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08005824 if (pAllocateInfo->descriptorSetCount)
5825 {
David Reveman9875f2c2019-06-11 21:47:12 -04005826 uint64_t* cgen_var_427;
5827 stream->alloc((void**)&cgen_var_427, pAllocateInfo->descriptorSetCount * 8);
5828 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_427, pAllocateInfo->descriptorSetCount);
5829 stream->write((uint64_t*)cgen_var_427, pAllocateInfo->descriptorSetCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005830 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005831 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005832 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08005833 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08005834 if (pAllocateInfo->descriptorSetCount)
5835 {
David Reveman9875f2c2019-06-11 21:47:12 -04005836 uint64_t* cgen_var_428;
5837 stream->alloc((void**)&cgen_var_428, pAllocateInfo->descriptorSetCount * 8);
5838 stream->read((uint64_t*)cgen_var_428, pAllocateInfo->descriptorSetCount * 8);
5839 stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_428, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005840 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08005841 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005842 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005843 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
5844 stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005845 countingStream->clearPool();
5846 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005847 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005848 mImpl->log("finish vkAllocateDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005849 return vkAllocateDescriptorSets_VkResult_return;
5850}
5851
5852VkResult VkEncoder::vkFreeDescriptorSets(
5853 VkDevice device,
5854 VkDescriptorPool descriptorPool,
5855 uint32_t descriptorSetCount,
5856 const VkDescriptorSet* pDescriptorSets)
5857{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005858 AEMU_SCOPED_TRACE("vkFreeDescriptorSets encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005859 mImpl->log("start vkFreeDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005860 auto stream = mImpl->stream();
5861 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005862 auto resources = mImpl->resources();
5863 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005864 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005865 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005866 VkDescriptorPool local_descriptorPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005867 uint32_t local_descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005868 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005869 local_device = device;
5870 local_descriptorPool = descriptorPool;
5871 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005872 local_pDescriptorSets = nullptr;
5873 if (pDescriptorSets)
5874 {
5875 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5876 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005877 countingStream->rewind();
5878 {
David Reveman9875f2c2019-06-11 21:47:12 -04005879 uint64_t cgen_var_429;
5880 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_429, 1);
5881 countingStream->write((uint64_t*)&cgen_var_429, 1 * 8);
5882 uint64_t cgen_var_430;
5883 countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_430, 1);
5884 countingStream->write((uint64_t*)&cgen_var_430, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005885 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005886 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005887 uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5888 countingStream->putBe64(cgen_var_431);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005889 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005890 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005891 if (((descriptorSetCount)))
5892 {
David Reveman9875f2c2019-06-11 21:47:12 -04005893 uint64_t* cgen_var_432;
5894 countingStream->alloc((void**)&cgen_var_432, ((descriptorSetCount)) * 8);
5895 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_432, ((descriptorSetCount)));
5896 countingStream->write((uint64_t*)cgen_var_432, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005897 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005898 }
5899 }
5900 uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5901 countingStream->rewind();
5902 uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5903 stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5904 stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04005905 uint64_t cgen_var_433;
5906 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_433, 1);
5907 stream->write((uint64_t*)&cgen_var_433, 1 * 8);
5908 uint64_t cgen_var_434;
5909 stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_434, 1);
5910 stream->write((uint64_t*)&cgen_var_434, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005911 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08005912 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04005913 uint64_t cgen_var_435 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5914 stream->putBe64(cgen_var_435);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08005915 if (local_pDescriptorSets)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005916 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08005917 if (((descriptorSetCount)))
5918 {
David Reveman9875f2c2019-06-11 21:47:12 -04005919 uint64_t* cgen_var_436;
5920 stream->alloc((void**)&cgen_var_436, ((descriptorSetCount)) * 8);
5921 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_436, ((descriptorSetCount)));
5922 stream->write((uint64_t*)cgen_var_436, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08005923 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005924 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005925 AEMU_SCOPED_TRACE("vkFreeDescriptorSets readParams");
5926 AEMU_SCOPED_TRACE("vkFreeDescriptorSets returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005927 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5928 stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08005929 countingStream->clearPool();
5930 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005931 pool->freeAll();
Lingfeng Yang6ab1b0d2018-11-27 23:36:03 -08005932 if (pDescriptorSets)
5933 {
5934 resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5935 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005936 mImpl->log("finish vkFreeDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005937 return vkFreeDescriptorSets_VkResult_return;
5938}
5939
5940void VkEncoder::vkUpdateDescriptorSets(
5941 VkDevice device,
5942 uint32_t descriptorWriteCount,
5943 const VkWriteDescriptorSet* pDescriptorWrites,
5944 uint32_t descriptorCopyCount,
5945 const VkCopyDescriptorSet* pDescriptorCopies)
5946{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005947 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08005948 mImpl->log("start vkUpdateDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005949 auto stream = mImpl->stream();
5950 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005951 auto resources = mImpl->resources();
5952 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08005953 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005954 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005955 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005956 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -08005957 uint32_t local_descriptorCopyCount;
5958 VkCopyDescriptorSet* local_pDescriptorCopies;
5959 local_device = device;
5960 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005961 local_pDescriptorWrites = nullptr;
5962 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005963 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005964 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005965 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5966 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005967 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005968 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005969 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005970 local_descriptorCopyCount = descriptorCopyCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005971 local_pDescriptorCopies = nullptr;
5972 if (pDescriptorCopies)
5973 {
5974 local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07005975 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5976 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005977 deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5978 }
5979 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08005980 if (local_pDescriptorWrites)
5981 {
5982 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5983 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005984 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005985 }
5986 }
5987 if (local_pDescriptorCopies)
5988 {
5989 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5990 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08005991 transform_tohost_VkCopyDescriptorSet(mImpl->resources(), (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08005992 }
5993 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005994 countingStream->rewind();
5995 {
David Reveman9875f2c2019-06-11 21:47:12 -04005996 uint64_t cgen_var_437;
5997 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_437, 1);
5998 countingStream->write((uint64_t*)&cgen_var_437, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08005999 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
6000 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
6001 {
6002 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
6003 }
6004 countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
6005 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
6006 {
6007 marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006008 }
6009 }
6010 uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6011 countingStream->rewind();
6012 uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
6013 stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
6014 stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006015 uint64_t cgen_var_438;
6016 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_438, 1);
6017 stream->write((uint64_t*)&cgen_var_438, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006018 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006019 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
6020 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006021 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006022 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006023 stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006024 for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
6025 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006026 marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006027 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006028 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets readParams");
6029 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006030 mImpl->log("finish vkUpdateDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006031}
6032
6033VkResult VkEncoder::vkCreateFramebuffer(
6034 VkDevice device,
6035 const VkFramebufferCreateInfo* pCreateInfo,
6036 const VkAllocationCallbacks* pAllocator,
6037 VkFramebuffer* pFramebuffer)
6038{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006039 AEMU_SCOPED_TRACE("vkCreateFramebuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006040 mImpl->log("start vkCreateFramebuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006041 auto stream = mImpl->stream();
6042 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006043 auto resources = mImpl->resources();
6044 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006045 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006046 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006047 VkFramebufferCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006048 VkAllocationCallbacks* local_pAllocator;
6049 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006050 local_pCreateInfo = nullptr;
6051 if (pCreateInfo)
6052 {
6053 local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
6054 deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
6055 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006056 local_pAllocator = nullptr;
6057 if (pAllocator)
6058 {
6059 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6060 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6061 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006062 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006063 if (local_pCreateInfo)
6064 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006065 transform_tohost_VkFramebufferCreateInfo(mImpl->resources(), (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006066 }
6067 if (local_pAllocator)
6068 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006069 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006070 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006071 countingStream->rewind();
6072 {
David Reveman9875f2c2019-06-11 21:47:12 -04006073 uint64_t cgen_var_439;
6074 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_439, 1);
6075 countingStream->write((uint64_t*)&cgen_var_439, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006076 marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006077 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006078 uint64_t cgen_var_440 = (uint64_t)(uintptr_t)local_pAllocator;
6079 countingStream->putBe64(cgen_var_440);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006080 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006081 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006082 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006083 }
David Reveman9875f2c2019-06-11 21:47:12 -04006084 uint64_t cgen_var_441;
6085 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_441, 1);
6086 countingStream->write((uint64_t*)&cgen_var_441, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006087 }
6088 uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6089 countingStream->rewind();
6090 uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
6091 stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
6092 stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006093 uint64_t cgen_var_442;
6094 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_442, 1);
6095 stream->write((uint64_t*)&cgen_var_442, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006096 marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006097 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006098 uint64_t cgen_var_443 = (uint64_t)(uintptr_t)local_pAllocator;
6099 stream->putBe64(cgen_var_443);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006100 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006101 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006102 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006103 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006104 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04006105 uint64_t cgen_var_444;
6106 stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_444, 1);
6107 stream->write((uint64_t*)&cgen_var_444, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006108 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006109 AEMU_SCOPED_TRACE("vkCreateFramebuffer readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08006110 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04006111 uint64_t cgen_var_445;
6112 stream->read((uint64_t*)&cgen_var_445, 8);
6113 stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_445, (VkFramebuffer*)pFramebuffer, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006114 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006115 AEMU_SCOPED_TRACE("vkCreateFramebuffer returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006116 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
6117 stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006118 countingStream->clearPool();
6119 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006120 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006121 mImpl->log("finish vkCreateFramebuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006122 return vkCreateFramebuffer_VkResult_return;
6123}
6124
6125void VkEncoder::vkDestroyFramebuffer(
6126 VkDevice device,
6127 VkFramebuffer framebuffer,
6128 const VkAllocationCallbacks* pAllocator)
6129{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006130 AEMU_SCOPED_TRACE("vkDestroyFramebuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006131 mImpl->log("start vkDestroyFramebuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006132 auto stream = mImpl->stream();
6133 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006134 auto resources = mImpl->resources();
6135 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006136 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006137 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006138 VkFramebuffer local_framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006139 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006140 local_device = device;
6141 local_framebuffer = framebuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006142 local_pAllocator = nullptr;
6143 if (pAllocator)
6144 {
6145 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6146 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6147 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006148 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006149 if (local_pAllocator)
6150 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006151 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006152 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006153 countingStream->rewind();
6154 {
David Reveman9875f2c2019-06-11 21:47:12 -04006155 uint64_t cgen_var_446;
6156 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_446, 1);
6157 countingStream->write((uint64_t*)&cgen_var_446, 1 * 8);
6158 uint64_t cgen_var_447;
6159 countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_447, 1);
6160 countingStream->write((uint64_t*)&cgen_var_447, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006161 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006162 uint64_t cgen_var_448 = (uint64_t)(uintptr_t)local_pAllocator;
6163 countingStream->putBe64(cgen_var_448);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006164 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006165 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006166 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006167 }
6168 }
6169 uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6170 countingStream->rewind();
6171 uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
6172 stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
6173 stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006174 uint64_t cgen_var_449;
6175 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_449, 1);
6176 stream->write((uint64_t*)&cgen_var_449, 1 * 8);
6177 uint64_t cgen_var_450;
6178 stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_450, 1);
6179 stream->write((uint64_t*)&cgen_var_450, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006180 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006181 uint64_t cgen_var_451 = (uint64_t)(uintptr_t)local_pAllocator;
6182 stream->putBe64(cgen_var_451);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006183 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006184 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006185 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006186 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006187 AEMU_SCOPED_TRACE("vkDestroyFramebuffer readParams");
6188 AEMU_SCOPED_TRACE("vkDestroyFramebuffer returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006189 resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006190 mImpl->log("finish vkDestroyFramebuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006191}
6192
6193VkResult VkEncoder::vkCreateRenderPass(
6194 VkDevice device,
6195 const VkRenderPassCreateInfo* pCreateInfo,
6196 const VkAllocationCallbacks* pAllocator,
6197 VkRenderPass* pRenderPass)
6198{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006199 AEMU_SCOPED_TRACE("vkCreateRenderPass encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006200 mImpl->log("start vkCreateRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006201 auto stream = mImpl->stream();
6202 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006203 auto resources = mImpl->resources();
6204 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006205 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006206 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006207 VkRenderPassCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006208 VkAllocationCallbacks* local_pAllocator;
6209 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006210 local_pCreateInfo = nullptr;
6211 if (pCreateInfo)
6212 {
6213 local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
6214 deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
6215 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006216 local_pAllocator = nullptr;
6217 if (pAllocator)
6218 {
6219 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6220 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6221 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006222 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006223 if (local_pCreateInfo)
6224 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006225 transform_tohost_VkRenderPassCreateInfo(mImpl->resources(), (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006226 }
6227 if (local_pAllocator)
6228 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006229 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006230 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006231 countingStream->rewind();
6232 {
David Reveman9875f2c2019-06-11 21:47:12 -04006233 uint64_t cgen_var_452;
6234 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_452, 1);
6235 countingStream->write((uint64_t*)&cgen_var_452, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006236 marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006237 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006238 uint64_t cgen_var_453 = (uint64_t)(uintptr_t)local_pAllocator;
6239 countingStream->putBe64(cgen_var_453);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006240 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006241 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006242 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006243 }
David Reveman9875f2c2019-06-11 21:47:12 -04006244 uint64_t cgen_var_454;
6245 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_454, 1);
6246 countingStream->write((uint64_t*)&cgen_var_454, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006247 }
6248 uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6249 countingStream->rewind();
6250 uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
6251 stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
6252 stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006253 uint64_t cgen_var_455;
6254 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
6255 stream->write((uint64_t*)&cgen_var_455, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006256 marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006257 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006258 uint64_t cgen_var_456 = (uint64_t)(uintptr_t)local_pAllocator;
6259 stream->putBe64(cgen_var_456);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006260 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006261 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006262 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006263 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006264 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04006265 uint64_t cgen_var_457;
6266 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_457, 1);
6267 stream->write((uint64_t*)&cgen_var_457, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006268 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006269 AEMU_SCOPED_TRACE("vkCreateRenderPass readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08006270 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04006271 uint64_t cgen_var_458;
6272 stream->read((uint64_t*)&cgen_var_458, 8);
6273 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_458, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006274 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006275 AEMU_SCOPED_TRACE("vkCreateRenderPass returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006276 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
6277 stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006278 countingStream->clearPool();
6279 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006280 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006281 mImpl->log("finish vkCreateRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006282 return vkCreateRenderPass_VkResult_return;
6283}
6284
6285void VkEncoder::vkDestroyRenderPass(
6286 VkDevice device,
6287 VkRenderPass renderPass,
6288 const VkAllocationCallbacks* pAllocator)
6289{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006290 AEMU_SCOPED_TRACE("vkDestroyRenderPass encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006291 mImpl->log("start vkDestroyRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006292 auto stream = mImpl->stream();
6293 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006294 auto resources = mImpl->resources();
6295 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006296 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006297 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006298 VkRenderPass local_renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006299 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006300 local_device = device;
6301 local_renderPass = renderPass;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006302 local_pAllocator = nullptr;
6303 if (pAllocator)
6304 {
6305 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6306 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6307 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006308 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006309 if (local_pAllocator)
6310 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006311 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006312 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006313 countingStream->rewind();
6314 {
David Reveman9875f2c2019-06-11 21:47:12 -04006315 uint64_t cgen_var_459;
6316 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_459, 1);
6317 countingStream->write((uint64_t*)&cgen_var_459, 1 * 8);
6318 uint64_t cgen_var_460;
6319 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_460, 1);
6320 countingStream->write((uint64_t*)&cgen_var_460, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006321 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006322 uint64_t cgen_var_461 = (uint64_t)(uintptr_t)local_pAllocator;
6323 countingStream->putBe64(cgen_var_461);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006324 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006325 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006326 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006327 }
6328 }
6329 uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6330 countingStream->rewind();
6331 uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
6332 stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
6333 stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006334 uint64_t cgen_var_462;
6335 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_462, 1);
6336 stream->write((uint64_t*)&cgen_var_462, 1 * 8);
6337 uint64_t cgen_var_463;
6338 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_463, 1);
6339 stream->write((uint64_t*)&cgen_var_463, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006340 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006341 uint64_t cgen_var_464 = (uint64_t)(uintptr_t)local_pAllocator;
6342 stream->putBe64(cgen_var_464);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006343 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006344 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006345 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006346 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006347 AEMU_SCOPED_TRACE("vkDestroyRenderPass readParams");
6348 AEMU_SCOPED_TRACE("vkDestroyRenderPass returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006349 resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006350 mImpl->log("finish vkDestroyRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006351}
6352
6353void VkEncoder::vkGetRenderAreaGranularity(
6354 VkDevice device,
6355 VkRenderPass renderPass,
6356 VkExtent2D* pGranularity)
6357{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006358 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006359 mImpl->log("start vkGetRenderAreaGranularity");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006360 auto stream = mImpl->stream();
6361 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006362 auto resources = mImpl->resources();
6363 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006364 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006365 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006366 VkRenderPass local_renderPass;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006367 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006368 local_renderPass = renderPass;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006369 countingStream->rewind();
6370 {
David Reveman9875f2c2019-06-11 21:47:12 -04006371 uint64_t cgen_var_465;
6372 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_465, 1);
6373 countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
6374 uint64_t cgen_var_466;
6375 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_466, 1);
6376 countingStream->write((uint64_t*)&cgen_var_466, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006377 marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
6378 }
6379 uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6380 countingStream->rewind();
6381 uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
6382 stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
6383 stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006384 uint64_t cgen_var_467;
6385 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1);
6386 stream->write((uint64_t*)&cgen_var_467, 1 * 8);
6387 uint64_t cgen_var_468;
6388 stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_468, 1);
6389 stream->write((uint64_t*)&cgen_var_468, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006390 marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006391 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006392 unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
Lingfeng Yang97a06702018-12-24 17:02:43 -08006393 if (pGranularity)
6394 {
6395 transform_fromhost_VkExtent2D(mImpl->resources(), (VkExtent2D*)(pGranularity));
6396 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006397 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006398 mImpl->log("finish vkGetRenderAreaGranularity");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006399}
6400
6401VkResult VkEncoder::vkCreateCommandPool(
6402 VkDevice device,
6403 const VkCommandPoolCreateInfo* pCreateInfo,
6404 const VkAllocationCallbacks* pAllocator,
6405 VkCommandPool* pCommandPool)
6406{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006407 AEMU_SCOPED_TRACE("vkCreateCommandPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006408 mImpl->log("start vkCreateCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006409 auto stream = mImpl->stream();
6410 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006411 auto resources = mImpl->resources();
6412 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006413 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006414 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006415 VkCommandPoolCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006416 VkAllocationCallbacks* local_pAllocator;
6417 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006418 local_pCreateInfo = nullptr;
6419 if (pCreateInfo)
6420 {
6421 local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
6422 deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
6423 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006424 local_pAllocator = nullptr;
6425 if (pAllocator)
6426 {
6427 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6428 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6429 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006430 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006431 if (local_pCreateInfo)
6432 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006433 transform_tohost_VkCommandPoolCreateInfo(mImpl->resources(), (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006434 }
6435 if (local_pAllocator)
6436 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006437 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006438 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006439 countingStream->rewind();
6440 {
David Reveman9875f2c2019-06-11 21:47:12 -04006441 uint64_t cgen_var_469;
6442 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_469, 1);
6443 countingStream->write((uint64_t*)&cgen_var_469, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006444 marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006445 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006446 uint64_t cgen_var_470 = (uint64_t)(uintptr_t)local_pAllocator;
6447 countingStream->putBe64(cgen_var_470);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006448 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006449 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006450 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006451 }
David Reveman9875f2c2019-06-11 21:47:12 -04006452 uint64_t cgen_var_471;
6453 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_471, 1);
6454 countingStream->write((uint64_t*)&cgen_var_471, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006455 }
6456 uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6457 countingStream->rewind();
6458 uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
6459 stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
6460 stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006461 uint64_t cgen_var_472;
6462 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
6463 stream->write((uint64_t*)&cgen_var_472, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006464 marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006465 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006466 uint64_t cgen_var_473 = (uint64_t)(uintptr_t)local_pAllocator;
6467 stream->putBe64(cgen_var_473);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006468 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006469 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006470 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006471 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006472 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -04006473 uint64_t cgen_var_474;
6474 stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_474, 1);
6475 stream->write((uint64_t*)&cgen_var_474, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006476 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006477 AEMU_SCOPED_TRACE("vkCreateCommandPool readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08006478 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -04006479 uint64_t cgen_var_475;
6480 stream->read((uint64_t*)&cgen_var_475, 8);
6481 stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_475, (VkCommandPool*)pCommandPool, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -08006482 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006483 AEMU_SCOPED_TRACE("vkCreateCommandPool returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006484 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
6485 stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006486 countingStream->clearPool();
6487 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006488 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006489 mImpl->log("finish vkCreateCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006490 return vkCreateCommandPool_VkResult_return;
6491}
6492
6493void VkEncoder::vkDestroyCommandPool(
6494 VkDevice device,
6495 VkCommandPool commandPool,
6496 const VkAllocationCallbacks* pAllocator)
6497{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006498 AEMU_SCOPED_TRACE("vkDestroyCommandPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006499 mImpl->log("start vkDestroyCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006500 auto stream = mImpl->stream();
6501 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006502 auto resources = mImpl->resources();
6503 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006504 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006505 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006506 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006507 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006508 local_device = device;
6509 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006510 local_pAllocator = nullptr;
6511 if (pAllocator)
6512 {
6513 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6514 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6515 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006516 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -08006517 if (local_pAllocator)
6518 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006519 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006520 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006521 countingStream->rewind();
6522 {
David Reveman9875f2c2019-06-11 21:47:12 -04006523 uint64_t cgen_var_476;
6524 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_476, 1);
6525 countingStream->write((uint64_t*)&cgen_var_476, 1 * 8);
6526 uint64_t cgen_var_477;
6527 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_477, 1);
6528 countingStream->write((uint64_t*)&cgen_var_477, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006529 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006530 uint64_t cgen_var_478 = (uint64_t)(uintptr_t)local_pAllocator;
6531 countingStream->putBe64(cgen_var_478);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006532 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006533 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006534 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006535 }
6536 }
6537 uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6538 countingStream->rewind();
6539 uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
6540 stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
6541 stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006542 uint64_t cgen_var_479;
6543 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_479, 1);
6544 stream->write((uint64_t*)&cgen_var_479, 1 * 8);
6545 uint64_t cgen_var_480;
6546 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_480, 1);
6547 stream->write((uint64_t*)&cgen_var_480, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006548 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006549 uint64_t cgen_var_481 = (uint64_t)(uintptr_t)local_pAllocator;
6550 stream->putBe64(cgen_var_481);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006551 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006552 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006553 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006554 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006555 AEMU_SCOPED_TRACE("vkDestroyCommandPool readParams");
6556 AEMU_SCOPED_TRACE("vkDestroyCommandPool returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006557 resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006558 mImpl->log("finish vkDestroyCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006559}
6560
6561VkResult VkEncoder::vkResetCommandPool(
6562 VkDevice device,
6563 VkCommandPool commandPool,
6564 VkCommandPoolResetFlags flags)
6565{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006566 AEMU_SCOPED_TRACE("vkResetCommandPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006567 mImpl->log("start vkResetCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006568 auto stream = mImpl->stream();
6569 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006570 auto resources = mImpl->resources();
6571 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006572 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006573 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006574 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006575 VkCommandPoolResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006576 local_device = device;
6577 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006578 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006579 countingStream->rewind();
6580 {
David Reveman9875f2c2019-06-11 21:47:12 -04006581 uint64_t cgen_var_482;
6582 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_482, 1);
6583 countingStream->write((uint64_t*)&cgen_var_482, 1 * 8);
6584 uint64_t cgen_var_483;
6585 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_483, 1);
6586 countingStream->write((uint64_t*)&cgen_var_483, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006587 countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006588 }
6589 uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6590 countingStream->rewind();
6591 uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
6592 stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
6593 stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006594 uint64_t cgen_var_484;
6595 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_484, 1);
6596 stream->write((uint64_t*)&cgen_var_484, 1 * 8);
6597 uint64_t cgen_var_485;
6598 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_485, 1);
6599 stream->write((uint64_t*)&cgen_var_485, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006600 stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006601 AEMU_SCOPED_TRACE("vkResetCommandPool readParams");
6602 AEMU_SCOPED_TRACE("vkResetCommandPool returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006603 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
6604 stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006605 countingStream->clearPool();
6606 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006607 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006608 mImpl->log("finish vkResetCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006609 return vkResetCommandPool_VkResult_return;
6610}
6611
6612VkResult VkEncoder::vkAllocateCommandBuffers(
6613 VkDevice device,
6614 const VkCommandBufferAllocateInfo* pAllocateInfo,
6615 VkCommandBuffer* pCommandBuffers)
6616{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006617 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006618 mImpl->log("start vkAllocateCommandBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006619 auto stream = mImpl->stream();
6620 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006621 auto resources = mImpl->resources();
6622 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006623 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006624 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006625 VkCommandBufferAllocateInfo* local_pAllocateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006626 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006627 local_pAllocateInfo = nullptr;
6628 if (pAllocateInfo)
6629 {
6630 local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
6631 deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
6632 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006633 if (local_pAllocateInfo)
6634 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006635 transform_tohost_VkCommandBufferAllocateInfo(mImpl->resources(), (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006636 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006637 countingStream->rewind();
6638 {
David Reveman9875f2c2019-06-11 21:47:12 -04006639 uint64_t cgen_var_486;
6640 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_486, 1);
6641 countingStream->write((uint64_t*)&cgen_var_486, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006642 marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006643 if (pAllocateInfo->commandBufferCount)
6644 {
David Reveman9875f2c2019-06-11 21:47:12 -04006645 uint64_t* cgen_var_487;
6646 countingStream->alloc((void**)&cgen_var_487, pAllocateInfo->commandBufferCount * 8);
6647 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_487, pAllocateInfo->commandBufferCount);
6648 countingStream->write((uint64_t*)cgen_var_487, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006649 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006650 }
6651 uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6652 countingStream->rewind();
6653 uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
6654 stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
6655 stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006656 uint64_t cgen_var_488;
6657 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_488, 1);
6658 stream->write((uint64_t*)&cgen_var_488, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006659 marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -08006660 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -08006661 if (pAllocateInfo->commandBufferCount)
6662 {
David Reveman9875f2c2019-06-11 21:47:12 -04006663 uint64_t* cgen_var_489;
6664 stream->alloc((void**)&cgen_var_489, pAllocateInfo->commandBufferCount * 8);
6665 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_489, pAllocateInfo->commandBufferCount);
6666 stream->write((uint64_t*)cgen_var_489, pAllocateInfo->commandBufferCount * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006667 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006668 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006669 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -08006670 stream->setHandleMapping(resources->createMapping());
Lingfeng Yang2285df12018-11-17 16:25:11 -08006671 if (pAllocateInfo->commandBufferCount)
6672 {
David Reveman9875f2c2019-06-11 21:47:12 -04006673 uint64_t* cgen_var_490;
6674 stream->alloc((void**)&cgen_var_490, pAllocateInfo->commandBufferCount * 8);
6675 stream->read((uint64_t*)cgen_var_490, pAllocateInfo->commandBufferCount * 8);
6676 stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_490, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006677 }
Lingfeng Yange4008a02018-11-18 12:22:48 -08006678 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006679 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006680 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
6681 stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006682 countingStream->clearPool();
6683 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006684 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006685 mImpl->log("finish vkAllocateCommandBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006686 return vkAllocateCommandBuffers_VkResult_return;
6687}
6688
6689void VkEncoder::vkFreeCommandBuffers(
6690 VkDevice device,
6691 VkCommandPool commandPool,
6692 uint32_t commandBufferCount,
6693 const VkCommandBuffer* pCommandBuffers)
6694{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006695 AEMU_SCOPED_TRACE("vkFreeCommandBuffers encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006696 mImpl->log("start vkFreeCommandBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006697 auto stream = mImpl->stream();
6698 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006699 auto resources = mImpl->resources();
6700 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006701 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006702 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006703 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006704 uint32_t local_commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006705 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006706 local_device = device;
6707 local_commandPool = commandPool;
6708 local_commandBufferCount = commandBufferCount;
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006709 local_pCommandBuffers = nullptr;
6710 if (pCommandBuffers)
6711 {
6712 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
6713 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006714 countingStream->rewind();
6715 {
David Reveman9875f2c2019-06-11 21:47:12 -04006716 uint64_t cgen_var_491;
6717 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_491, 1);
6718 countingStream->write((uint64_t*)&cgen_var_491, 1 * 8);
6719 uint64_t cgen_var_492;
6720 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_492, 1);
6721 countingStream->write((uint64_t*)&cgen_var_492, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006722 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006723 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006724 uint64_t cgen_var_493 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6725 countingStream->putBe64(cgen_var_493);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006726 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006727 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006728 if (((commandBufferCount)))
6729 {
David Reveman9875f2c2019-06-11 21:47:12 -04006730 uint64_t* cgen_var_494;
6731 countingStream->alloc((void**)&cgen_var_494, ((commandBufferCount)) * 8);
6732 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_494, ((commandBufferCount)));
6733 countingStream->write((uint64_t*)cgen_var_494, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006734 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006735 }
6736 }
6737 uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6738 countingStream->rewind();
6739 uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
6740 stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
6741 stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006742 uint64_t cgen_var_495;
6743 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_495, 1);
6744 stream->write((uint64_t*)&cgen_var_495, 1 * 8);
6745 uint64_t cgen_var_496;
6746 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_496, 1);
6747 stream->write((uint64_t*)&cgen_var_496, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006748 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -08006749 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -04006750 uint64_t cgen_var_497 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6751 stream->putBe64(cgen_var_497);
Lingfeng Yang9d02e102018-11-10 01:51:46 -08006752 if (local_pCommandBuffers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006753 {
Lingfeng Yang2285df12018-11-17 16:25:11 -08006754 if (((commandBufferCount)))
6755 {
David Reveman9875f2c2019-06-11 21:47:12 -04006756 uint64_t* cgen_var_498;
6757 stream->alloc((void**)&cgen_var_498, ((commandBufferCount)) * 8);
6758 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_498, ((commandBufferCount)));
6759 stream->write((uint64_t*)cgen_var_498, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08006760 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006761 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006762 AEMU_SCOPED_TRACE("vkFreeCommandBuffers readParams");
6763 AEMU_SCOPED_TRACE("vkFreeCommandBuffers returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006764 if (pCommandBuffers)
6765 {
6766 resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
6767 }
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006768 mImpl->log("finish vkFreeCommandBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006769}
6770
6771VkResult VkEncoder::vkBeginCommandBuffer(
6772 VkCommandBuffer commandBuffer,
6773 const VkCommandBufferBeginInfo* pBeginInfo)
6774{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006775 AEMU_SCOPED_TRACE("vkBeginCommandBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006776 mImpl->log("start vkBeginCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006777 auto stream = mImpl->stream();
6778 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006779 auto resources = mImpl->resources();
6780 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006781 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006782 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006783 VkCommandBufferBeginInfo* local_pBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006784 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006785 local_pBeginInfo = nullptr;
6786 if (pBeginInfo)
6787 {
6788 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
6789 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6790 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006791 if (local_pBeginInfo)
6792 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006793 transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006794 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006795 countingStream->rewind();
6796 {
David Reveman9875f2c2019-06-11 21:47:12 -04006797 uint64_t cgen_var_499;
6798 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6799 countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006800 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006801 }
6802 uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6803 countingStream->rewind();
6804 uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
6805 stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
6806 stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006807 uint64_t cgen_var_500;
6808 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6809 stream->write((uint64_t*)&cgen_var_500, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006810 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006811 AEMU_SCOPED_TRACE("vkBeginCommandBuffer readParams");
6812 AEMU_SCOPED_TRACE("vkBeginCommandBuffer returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006813 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
6814 stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006815 countingStream->clearPool();
6816 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006817 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006818 mImpl->log("finish vkBeginCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006819 return vkBeginCommandBuffer_VkResult_return;
6820}
6821
6822VkResult VkEncoder::vkEndCommandBuffer(
6823 VkCommandBuffer commandBuffer)
6824{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006825 AEMU_SCOPED_TRACE("vkEndCommandBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006826 mImpl->log("start vkEndCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006827 auto stream = mImpl->stream();
6828 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006829 auto resources = mImpl->resources();
6830 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006831 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006832 VkCommandBuffer local_commandBuffer;
6833 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006834 countingStream->rewind();
6835 {
David Reveman9875f2c2019-06-11 21:47:12 -04006836 uint64_t cgen_var_501;
6837 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6838 countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006839 }
6840 uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6841 countingStream->rewind();
6842 uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
6843 stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
6844 stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006845 uint64_t cgen_var_502;
6846 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1);
6847 stream->write((uint64_t*)&cgen_var_502, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006848 AEMU_SCOPED_TRACE("vkEndCommandBuffer readParams");
6849 AEMU_SCOPED_TRACE("vkEndCommandBuffer returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006850 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
6851 stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006852 countingStream->clearPool();
6853 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006854 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006855 mImpl->log("finish vkEndCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006856 return vkEndCommandBuffer_VkResult_return;
6857}
6858
6859VkResult VkEncoder::vkResetCommandBuffer(
6860 VkCommandBuffer commandBuffer,
6861 VkCommandBufferResetFlags flags)
6862{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006863 AEMU_SCOPED_TRACE("vkResetCommandBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006864 mImpl->log("start vkResetCommandBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006865 auto stream = mImpl->stream();
6866 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006867 auto resources = mImpl->resources();
6868 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006869 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006870 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006871 VkCommandBufferResetFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006872 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006873 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006874 countingStream->rewind();
6875 {
David Reveman9875f2c2019-06-11 21:47:12 -04006876 uint64_t cgen_var_503;
6877 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6878 countingStream->write((uint64_t*)&cgen_var_503, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006879 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006880 }
6881 uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6882 countingStream->rewind();
6883 uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
6884 stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
6885 stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006886 uint64_t cgen_var_504;
6887 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1);
6888 stream->write((uint64_t*)&cgen_var_504, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006889 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006890 AEMU_SCOPED_TRACE("vkResetCommandBuffer readParams");
6891 AEMU_SCOPED_TRACE("vkResetCommandBuffer returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006892 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
6893 stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08006894 countingStream->clearPool();
6895 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006896 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006897 mImpl->log("finish vkResetCommandBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006898 return vkResetCommandBuffer_VkResult_return;
6899}
6900
6901void VkEncoder::vkCmdBindPipeline(
6902 VkCommandBuffer commandBuffer,
6903 VkPipelineBindPoint pipelineBindPoint,
6904 VkPipeline pipeline)
6905{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006906 AEMU_SCOPED_TRACE("vkCmdBindPipeline encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006907 mImpl->log("start vkCmdBindPipeline");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006908 auto stream = mImpl->stream();
6909 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006910 auto resources = mImpl->resources();
6911 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006912 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006913 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006914 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006915 VkPipeline local_pipeline;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006916 local_commandBuffer = commandBuffer;
6917 local_pipelineBindPoint = pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006918 local_pipeline = pipeline;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006919 countingStream->rewind();
6920 {
David Reveman9875f2c2019-06-11 21:47:12 -04006921 uint64_t cgen_var_505;
6922 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6923 countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006924 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
David Reveman9875f2c2019-06-11 21:47:12 -04006925 uint64_t cgen_var_506;
6926 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_506, 1);
6927 countingStream->write((uint64_t*)&cgen_var_506, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006928 }
6929 uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6930 countingStream->rewind();
6931 uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
6932 stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
6933 stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006934 uint64_t cgen_var_507;
6935 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
6936 stream->write((uint64_t*)&cgen_var_507, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006937 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
David Reveman9875f2c2019-06-11 21:47:12 -04006938 uint64_t cgen_var_508;
6939 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_508, 1);
6940 stream->write((uint64_t*)&cgen_var_508, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006941 AEMU_SCOPED_TRACE("vkCmdBindPipeline readParams");
6942 AEMU_SCOPED_TRACE("vkCmdBindPipeline returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006943 mImpl->log("finish vkCmdBindPipeline");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006944}
6945
6946void VkEncoder::vkCmdSetViewport(
6947 VkCommandBuffer commandBuffer,
6948 uint32_t firstViewport,
6949 uint32_t viewportCount,
6950 const VkViewport* pViewports)
6951{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08006952 AEMU_SCOPED_TRACE("vkCmdSetViewport encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08006953 mImpl->log("start vkCmdSetViewport");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006954 auto stream = mImpl->stream();
6955 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006956 auto resources = mImpl->resources();
6957 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08006958 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006959 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006960 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006961 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006962 VkViewport* local_pViewports;
Lingfeng Yang9666b852018-11-13 23:09:59 -08006963 local_commandBuffer = commandBuffer;
6964 local_firstViewport = firstViewport;
6965 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006966 local_pViewports = nullptr;
6967 if (pViewports)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006968 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006969 local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006970 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6971 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006972 deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
6973 }
6974 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08006975 if (local_pViewports)
6976 {
6977 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6978 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08006979 transform_tohost_VkViewport(mImpl->resources(), (VkViewport*)(local_pViewports + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08006980 }
6981 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006982 countingStream->rewind();
6983 {
David Reveman9875f2c2019-06-11 21:47:12 -04006984 uint64_t cgen_var_509;
6985 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
6986 countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08006987 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6988 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
6989 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6990 {
6991 marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07006992 }
6993 }
6994 uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6995 countingStream->rewind();
6996 uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
6997 stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
6998 stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04006999 uint64_t cgen_var_510;
7000 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
7001 stream->write((uint64_t*)&cgen_var_510, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007002 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
7003 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007004 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
7005 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007006 marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007007 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007008 AEMU_SCOPED_TRACE("vkCmdSetViewport readParams");
7009 AEMU_SCOPED_TRACE("vkCmdSetViewport returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007010 mImpl->log("finish vkCmdSetViewport");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007011}
7012
7013void VkEncoder::vkCmdSetScissor(
7014 VkCommandBuffer commandBuffer,
7015 uint32_t firstScissor,
7016 uint32_t scissorCount,
7017 const VkRect2D* pScissors)
7018{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007019 AEMU_SCOPED_TRACE("vkCmdSetScissor encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007020 mImpl->log("start vkCmdSetScissor");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007021 auto stream = mImpl->stream();
7022 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007023 auto resources = mImpl->resources();
7024 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007025 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007026 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007027 uint32_t local_firstScissor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007028 uint32_t local_scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007029 VkRect2D* local_pScissors;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007030 local_commandBuffer = commandBuffer;
7031 local_firstScissor = firstScissor;
7032 local_scissorCount = scissorCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007033 local_pScissors = nullptr;
7034 if (pScissors)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007035 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007036 local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007037 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7038 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007039 deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
7040 }
7041 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007042 if (local_pScissors)
7043 {
7044 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7045 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007046 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pScissors + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007047 }
7048 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007049 countingStream->rewind();
7050 {
David Reveman9875f2c2019-06-11 21:47:12 -04007051 uint64_t cgen_var_511;
7052 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
7053 countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007054 countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
7055 countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
7056 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7057 {
7058 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007059 }
7060 }
7061 uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7062 countingStream->rewind();
7063 uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
7064 stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
7065 stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007066 uint64_t cgen_var_512;
7067 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
7068 stream->write((uint64_t*)&cgen_var_512, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007069 stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
7070 stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007071 for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7072 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007073 marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007074 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007075 AEMU_SCOPED_TRACE("vkCmdSetScissor readParams");
7076 AEMU_SCOPED_TRACE("vkCmdSetScissor returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007077 mImpl->log("finish vkCmdSetScissor");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007078}
7079
7080void VkEncoder::vkCmdSetLineWidth(
7081 VkCommandBuffer commandBuffer,
7082 float lineWidth)
7083{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007084 AEMU_SCOPED_TRACE("vkCmdSetLineWidth encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007085 mImpl->log("start vkCmdSetLineWidth");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007086 auto stream = mImpl->stream();
7087 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007088 auto resources = mImpl->resources();
7089 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007090 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007091 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007092 float local_lineWidth;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007093 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007094 local_lineWidth = lineWidth;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007095 countingStream->rewind();
7096 {
David Reveman9875f2c2019-06-11 21:47:12 -04007097 uint64_t cgen_var_513;
7098 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
7099 countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007100 countingStream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007101 }
7102 uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7103 countingStream->rewind();
7104 uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
7105 stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
7106 stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007107 uint64_t cgen_var_514;
7108 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
7109 stream->write((uint64_t*)&cgen_var_514, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007110 stream->write((float*)&local_lineWidth, sizeof(float));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007111 AEMU_SCOPED_TRACE("vkCmdSetLineWidth readParams");
7112 AEMU_SCOPED_TRACE("vkCmdSetLineWidth returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007113 mImpl->log("finish vkCmdSetLineWidth");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007114}
7115
7116void VkEncoder::vkCmdSetDepthBias(
7117 VkCommandBuffer commandBuffer,
7118 float depthBiasConstantFactor,
7119 float depthBiasClamp,
7120 float depthBiasSlopeFactor)
7121{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007122 AEMU_SCOPED_TRACE("vkCmdSetDepthBias encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007123 mImpl->log("start vkCmdSetDepthBias");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007124 auto stream = mImpl->stream();
7125 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007126 auto resources = mImpl->resources();
7127 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007128 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007129 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007130 float local_depthBiasConstantFactor;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007131 float local_depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007132 float local_depthBiasSlopeFactor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007133 local_commandBuffer = commandBuffer;
7134 local_depthBiasConstantFactor = depthBiasConstantFactor;
7135 local_depthBiasClamp = depthBiasClamp;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007136 local_depthBiasSlopeFactor = depthBiasSlopeFactor;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007137 countingStream->rewind();
7138 {
David Reveman9875f2c2019-06-11 21:47:12 -04007139 uint64_t cgen_var_515;
7140 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
7141 countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007142 countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
7143 countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
7144 countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007145 }
7146 uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7147 countingStream->rewind();
7148 uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
7149 stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
7150 stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007151 uint64_t cgen_var_516;
7152 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_516, 1);
7153 stream->write((uint64_t*)&cgen_var_516, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007154 stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
7155 stream->write((float*)&local_depthBiasClamp, sizeof(float));
7156 stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007157 AEMU_SCOPED_TRACE("vkCmdSetDepthBias readParams");
7158 AEMU_SCOPED_TRACE("vkCmdSetDepthBias returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007159 mImpl->log("finish vkCmdSetDepthBias");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007160}
7161
7162void VkEncoder::vkCmdSetBlendConstants(
7163 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07007164 const float blendConstants[4])
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007165{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007166 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007167 mImpl->log("start vkCmdSetBlendConstants");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007168 auto stream = mImpl->stream();
7169 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007170 auto resources = mImpl->resources();
7171 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007172 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007173 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007174 float local_blendConstants[4];
Lingfeng Yang9666b852018-11-13 23:09:59 -08007175 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007176 memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007177 countingStream->rewind();
7178 {
David Reveman9875f2c2019-06-11 21:47:12 -04007179 uint64_t cgen_var_517;
7180 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_517, 1);
7181 countingStream->write((uint64_t*)&cgen_var_517, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007182 countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007183 }
7184 uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7185 countingStream->rewind();
7186 uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
7187 stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
7188 stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007189 uint64_t cgen_var_518;
7190 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
7191 stream->write((uint64_t*)&cgen_var_518, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007192 stream->write((float*)&local_blendConstants, 4 * sizeof(float));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007193 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants readParams");
7194 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007195 mImpl->log("finish vkCmdSetBlendConstants");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007196}
7197
7198void VkEncoder::vkCmdSetDepthBounds(
7199 VkCommandBuffer commandBuffer,
7200 float minDepthBounds,
7201 float maxDepthBounds)
7202{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007203 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007204 mImpl->log("start vkCmdSetDepthBounds");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007205 auto stream = mImpl->stream();
7206 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007207 auto resources = mImpl->resources();
7208 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007209 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007210 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007211 float local_minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007212 float local_maxDepthBounds;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007213 local_commandBuffer = commandBuffer;
7214 local_minDepthBounds = minDepthBounds;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007215 local_maxDepthBounds = maxDepthBounds;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007216 countingStream->rewind();
7217 {
David Reveman9875f2c2019-06-11 21:47:12 -04007218 uint64_t cgen_var_519;
7219 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_519, 1);
7220 countingStream->write((uint64_t*)&cgen_var_519, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007221 countingStream->write((float*)&local_minDepthBounds, sizeof(float));
7222 countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007223 }
7224 uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7225 countingStream->rewind();
7226 uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
7227 stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
7228 stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007229 uint64_t cgen_var_520;
7230 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_520, 1);
7231 stream->write((uint64_t*)&cgen_var_520, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007232 stream->write((float*)&local_minDepthBounds, sizeof(float));
7233 stream->write((float*)&local_maxDepthBounds, sizeof(float));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007234 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds readParams");
7235 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007236 mImpl->log("finish vkCmdSetDepthBounds");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007237}
7238
7239void VkEncoder::vkCmdSetStencilCompareMask(
7240 VkCommandBuffer commandBuffer,
7241 VkStencilFaceFlags faceMask,
7242 uint32_t compareMask)
7243{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007244 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007245 mImpl->log("start vkCmdSetStencilCompareMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007246 auto stream = mImpl->stream();
7247 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007248 auto resources = mImpl->resources();
7249 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007250 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007251 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007252 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007253 uint32_t local_compareMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007254 local_commandBuffer = commandBuffer;
7255 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007256 local_compareMask = compareMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007257 countingStream->rewind();
7258 {
David Reveman9875f2c2019-06-11 21:47:12 -04007259 uint64_t cgen_var_521;
7260 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
7261 countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007262 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7263 countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007264 }
7265 uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7266 countingStream->rewind();
7267 uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
7268 stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
7269 stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007270 uint64_t cgen_var_522;
7271 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_522, 1);
7272 stream->write((uint64_t*)&cgen_var_522, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007273 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7274 stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007275 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask readParams");
7276 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007277 mImpl->log("finish vkCmdSetStencilCompareMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007278}
7279
7280void VkEncoder::vkCmdSetStencilWriteMask(
7281 VkCommandBuffer commandBuffer,
7282 VkStencilFaceFlags faceMask,
7283 uint32_t writeMask)
7284{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007285 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007286 mImpl->log("start vkCmdSetStencilWriteMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007287 auto stream = mImpl->stream();
7288 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007289 auto resources = mImpl->resources();
7290 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007291 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007292 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007293 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007294 uint32_t local_writeMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007295 local_commandBuffer = commandBuffer;
7296 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007297 local_writeMask = writeMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007298 countingStream->rewind();
7299 {
David Reveman9875f2c2019-06-11 21:47:12 -04007300 uint64_t cgen_var_523;
7301 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
7302 countingStream->write((uint64_t*)&cgen_var_523, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007303 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7304 countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007305 }
7306 uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7307 countingStream->rewind();
7308 uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
7309 stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
7310 stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007311 uint64_t cgen_var_524;
7312 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_524, 1);
7313 stream->write((uint64_t*)&cgen_var_524, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007314 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7315 stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007316 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask readParams");
7317 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007318 mImpl->log("finish vkCmdSetStencilWriteMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007319}
7320
7321void VkEncoder::vkCmdSetStencilReference(
7322 VkCommandBuffer commandBuffer,
7323 VkStencilFaceFlags faceMask,
7324 uint32_t reference)
7325{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007326 AEMU_SCOPED_TRACE("vkCmdSetStencilReference encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007327 mImpl->log("start vkCmdSetStencilReference");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007328 auto stream = mImpl->stream();
7329 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007330 auto resources = mImpl->resources();
7331 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007332 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007333 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007334 VkStencilFaceFlags local_faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007335 uint32_t local_reference;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007336 local_commandBuffer = commandBuffer;
7337 local_faceMask = faceMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007338 local_reference = reference;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007339 countingStream->rewind();
7340 {
David Reveman9875f2c2019-06-11 21:47:12 -04007341 uint64_t cgen_var_525;
7342 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_525, 1);
7343 countingStream->write((uint64_t*)&cgen_var_525, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007344 countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7345 countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007346 }
7347 uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7348 countingStream->rewind();
7349 uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
7350 stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
7351 stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007352 uint64_t cgen_var_526;
7353 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_526, 1);
7354 stream->write((uint64_t*)&cgen_var_526, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007355 stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7356 stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007357 AEMU_SCOPED_TRACE("vkCmdSetStencilReference readParams");
7358 AEMU_SCOPED_TRACE("vkCmdSetStencilReference returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007359 mImpl->log("finish vkCmdSetStencilReference");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007360}
7361
7362void VkEncoder::vkCmdBindDescriptorSets(
7363 VkCommandBuffer commandBuffer,
7364 VkPipelineBindPoint pipelineBindPoint,
7365 VkPipelineLayout layout,
7366 uint32_t firstSet,
7367 uint32_t descriptorSetCount,
7368 const VkDescriptorSet* pDescriptorSets,
7369 uint32_t dynamicOffsetCount,
7370 const uint32_t* pDynamicOffsets)
7371{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007372 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007373 mImpl->log("start vkCmdBindDescriptorSets");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007374 auto stream = mImpl->stream();
7375 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007376 auto resources = mImpl->resources();
7377 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007378 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007379 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007380 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007381 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007382 uint32_t local_firstSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007383 uint32_t local_descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007384 VkDescriptorSet* local_pDescriptorSets;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007385 uint32_t local_dynamicOffsetCount;
7386 uint32_t* local_pDynamicOffsets;
7387 local_commandBuffer = commandBuffer;
7388 local_pipelineBindPoint = pipelineBindPoint;
7389 local_layout = layout;
7390 local_firstSet = firstSet;
7391 local_descriptorSetCount = descriptorSetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007392 local_pDescriptorSets = nullptr;
7393 if (pDescriptorSets)
7394 {
7395 local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
7396 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007397 local_dynamicOffsetCount = dynamicOffsetCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007398 local_pDynamicOffsets = nullptr;
7399 if (pDynamicOffsets)
7400 {
7401 local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
7402 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007403 countingStream->rewind();
7404 {
David Reveman9875f2c2019-06-11 21:47:12 -04007405 uint64_t cgen_var_527;
7406 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1);
7407 countingStream->write((uint64_t*)&cgen_var_527, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007408 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
David Reveman9875f2c2019-06-11 21:47:12 -04007409 uint64_t cgen_var_528;
7410 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_528, 1);
7411 countingStream->write((uint64_t*)&cgen_var_528, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007412 countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
7413 countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007414 if (((descriptorSetCount)))
7415 {
David Reveman9875f2c2019-06-11 21:47:12 -04007416 uint64_t* cgen_var_529;
7417 countingStream->alloc((void**)&cgen_var_529, ((descriptorSetCount)) * 8);
7418 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_529, ((descriptorSetCount)));
7419 countingStream->write((uint64_t*)cgen_var_529, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007420 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007421 countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
7422 countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007423 }
7424 uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7425 countingStream->rewind();
7426 uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
7427 stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
7428 stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007429 uint64_t cgen_var_530;
7430 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1);
7431 stream->write((uint64_t*)&cgen_var_530, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007432 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
David Reveman9875f2c2019-06-11 21:47:12 -04007433 uint64_t cgen_var_531;
7434 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_531, 1);
7435 stream->write((uint64_t*)&cgen_var_531, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007436 stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
7437 stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007438 if (((descriptorSetCount)))
7439 {
David Reveman9875f2c2019-06-11 21:47:12 -04007440 uint64_t* cgen_var_532;
7441 stream->alloc((void**)&cgen_var_532, ((descriptorSetCount)) * 8);
7442 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_532, ((descriptorSetCount)));
7443 stream->write((uint64_t*)cgen_var_532, ((descriptorSetCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007444 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007445 stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
7446 stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007447 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets readParams");
7448 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007449 mImpl->log("finish vkCmdBindDescriptorSets");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007450}
7451
7452void VkEncoder::vkCmdBindIndexBuffer(
7453 VkCommandBuffer commandBuffer,
7454 VkBuffer buffer,
7455 VkDeviceSize offset,
7456 VkIndexType indexType)
7457{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007458 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007459 mImpl->log("start vkCmdBindIndexBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007460 auto stream = mImpl->stream();
7461 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007462 auto resources = mImpl->resources();
7463 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007464 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007465 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007466 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007467 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007468 VkIndexType local_indexType;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007469 local_commandBuffer = commandBuffer;
7470 local_buffer = buffer;
7471 local_offset = offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007472 local_indexType = indexType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007473 countingStream->rewind();
7474 {
David Reveman9875f2c2019-06-11 21:47:12 -04007475 uint64_t cgen_var_533;
7476 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
7477 countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
7478 uint64_t cgen_var_534;
7479 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_534, 1);
7480 countingStream->write((uint64_t*)&cgen_var_534, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007481 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7482 countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007483 }
7484 uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7485 countingStream->rewind();
7486 uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
7487 stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
7488 stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007489 uint64_t cgen_var_535;
7490 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
7491 stream->write((uint64_t*)&cgen_var_535, 1 * 8);
7492 uint64_t cgen_var_536;
7493 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_536, 1);
7494 stream->write((uint64_t*)&cgen_var_536, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007495 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7496 stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007497 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer readParams");
7498 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007499 mImpl->log("finish vkCmdBindIndexBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007500}
7501
7502void VkEncoder::vkCmdBindVertexBuffers(
7503 VkCommandBuffer commandBuffer,
7504 uint32_t firstBinding,
7505 uint32_t bindingCount,
7506 const VkBuffer* pBuffers,
7507 const VkDeviceSize* pOffsets)
7508{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007509 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007510 mImpl->log("start vkCmdBindVertexBuffers");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007511 auto stream = mImpl->stream();
7512 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007513 auto resources = mImpl->resources();
7514 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007515 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007516 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007517 uint32_t local_firstBinding;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007518 uint32_t local_bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007519 VkBuffer* local_pBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007520 VkDeviceSize* local_pOffsets;
7521 local_commandBuffer = commandBuffer;
7522 local_firstBinding = firstBinding;
7523 local_bindingCount = bindingCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007524 local_pBuffers = nullptr;
7525 if (pBuffers)
7526 {
7527 local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
7528 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007529 local_pOffsets = nullptr;
7530 if (pOffsets)
7531 {
7532 local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
7533 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007534 countingStream->rewind();
7535 {
David Reveman9875f2c2019-06-11 21:47:12 -04007536 uint64_t cgen_var_537;
7537 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
7538 countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007539 countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7540 countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007541 if (((bindingCount)))
7542 {
David Reveman9875f2c2019-06-11 21:47:12 -04007543 uint64_t* cgen_var_538;
7544 countingStream->alloc((void**)&cgen_var_538, ((bindingCount)) * 8);
7545 countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_538, ((bindingCount)));
7546 countingStream->write((uint64_t*)cgen_var_538, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007547 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007548 countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007549 }
7550 uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7551 countingStream->rewind();
7552 uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
7553 stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
7554 stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007555 uint64_t cgen_var_539;
7556 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
7557 stream->write((uint64_t*)&cgen_var_539, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007558 stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7559 stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08007560 if (((bindingCount)))
7561 {
David Reveman9875f2c2019-06-11 21:47:12 -04007562 uint64_t* cgen_var_540;
7563 stream->alloc((void**)&cgen_var_540, ((bindingCount)) * 8);
7564 stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_540, ((bindingCount)));
7565 stream->write((uint64_t*)cgen_var_540, ((bindingCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08007566 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007567 stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007568 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers readParams");
7569 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007570 mImpl->log("finish vkCmdBindVertexBuffers");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007571}
7572
7573void VkEncoder::vkCmdDraw(
7574 VkCommandBuffer commandBuffer,
7575 uint32_t vertexCount,
7576 uint32_t instanceCount,
7577 uint32_t firstVertex,
7578 uint32_t firstInstance)
7579{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007580 AEMU_SCOPED_TRACE("vkCmdDraw encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007581 mImpl->log("start vkCmdDraw");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007582 auto stream = mImpl->stream();
7583 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007584 auto resources = mImpl->resources();
7585 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007586 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007587 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007588 uint32_t local_vertexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007589 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007590 uint32_t local_firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007591 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007592 local_commandBuffer = commandBuffer;
7593 local_vertexCount = vertexCount;
7594 local_instanceCount = instanceCount;
7595 local_firstVertex = firstVertex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007596 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007597 countingStream->rewind();
7598 {
David Reveman9875f2c2019-06-11 21:47:12 -04007599 uint64_t cgen_var_541;
7600 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
7601 countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007602 countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7603 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7604 countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7605 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007606 }
7607 uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7608 countingStream->rewind();
7609 uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
7610 stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
7611 stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007612 uint64_t cgen_var_542;
7613 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1);
7614 stream->write((uint64_t*)&cgen_var_542, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007615 stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7616 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7617 stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7618 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007619 AEMU_SCOPED_TRACE("vkCmdDraw readParams");
7620 AEMU_SCOPED_TRACE("vkCmdDraw returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007621 mImpl->log("finish vkCmdDraw");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007622}
7623
7624void VkEncoder::vkCmdDrawIndexed(
7625 VkCommandBuffer commandBuffer,
7626 uint32_t indexCount,
7627 uint32_t instanceCount,
7628 uint32_t firstIndex,
7629 int32_t vertexOffset,
7630 uint32_t firstInstance)
7631{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007632 AEMU_SCOPED_TRACE("vkCmdDrawIndexed encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007633 mImpl->log("start vkCmdDrawIndexed");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007634 auto stream = mImpl->stream();
7635 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007636 auto resources = mImpl->resources();
7637 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007638 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007639 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007640 uint32_t local_indexCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007641 uint32_t local_instanceCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007642 uint32_t local_firstIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007643 int32_t local_vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007644 uint32_t local_firstInstance;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007645 local_commandBuffer = commandBuffer;
7646 local_indexCount = indexCount;
7647 local_instanceCount = instanceCount;
7648 local_firstIndex = firstIndex;
7649 local_vertexOffset = vertexOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007650 local_firstInstance = firstInstance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007651 countingStream->rewind();
7652 {
David Reveman9875f2c2019-06-11 21:47:12 -04007653 uint64_t cgen_var_543;
7654 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
7655 countingStream->write((uint64_t*)&cgen_var_543, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007656 countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7657 countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7658 countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7659 countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7660 countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007661 }
7662 uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7663 countingStream->rewind();
7664 uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
7665 stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
7666 stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007667 uint64_t cgen_var_544;
7668 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_544, 1);
7669 stream->write((uint64_t*)&cgen_var_544, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007670 stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7671 stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7672 stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7673 stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7674 stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007675 AEMU_SCOPED_TRACE("vkCmdDrawIndexed readParams");
7676 AEMU_SCOPED_TRACE("vkCmdDrawIndexed returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007677 mImpl->log("finish vkCmdDrawIndexed");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007678}
7679
7680void VkEncoder::vkCmdDrawIndirect(
7681 VkCommandBuffer commandBuffer,
7682 VkBuffer buffer,
7683 VkDeviceSize offset,
7684 uint32_t drawCount,
7685 uint32_t stride)
7686{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007687 AEMU_SCOPED_TRACE("vkCmdDrawIndirect encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007688 mImpl->log("start vkCmdDrawIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007689 auto stream = mImpl->stream();
7690 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007691 auto resources = mImpl->resources();
7692 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007693 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007694 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007695 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007696 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007697 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007698 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007699 local_commandBuffer = commandBuffer;
7700 local_buffer = buffer;
7701 local_offset = offset;
7702 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007703 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007704 countingStream->rewind();
7705 {
David Reveman9875f2c2019-06-11 21:47:12 -04007706 uint64_t cgen_var_545;
7707 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
7708 countingStream->write((uint64_t*)&cgen_var_545, 1 * 8);
7709 uint64_t cgen_var_546;
7710 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
7711 countingStream->write((uint64_t*)&cgen_var_546, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007712 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7713 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7714 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007715 }
7716 uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7717 countingStream->rewind();
7718 uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
7719 stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
7720 stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007721 uint64_t cgen_var_547;
7722 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
7723 stream->write((uint64_t*)&cgen_var_547, 1 * 8);
7724 uint64_t cgen_var_548;
7725 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_548, 1);
7726 stream->write((uint64_t*)&cgen_var_548, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007727 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7728 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7729 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007730 AEMU_SCOPED_TRACE("vkCmdDrawIndirect readParams");
7731 AEMU_SCOPED_TRACE("vkCmdDrawIndirect returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007732 mImpl->log("finish vkCmdDrawIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007733}
7734
7735void VkEncoder::vkCmdDrawIndexedIndirect(
7736 VkCommandBuffer commandBuffer,
7737 VkBuffer buffer,
7738 VkDeviceSize offset,
7739 uint32_t drawCount,
7740 uint32_t stride)
7741{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007742 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007743 mImpl->log("start vkCmdDrawIndexedIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007744 auto stream = mImpl->stream();
7745 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007746 auto resources = mImpl->resources();
7747 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007748 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007749 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007750 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007751 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007752 uint32_t local_drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007753 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007754 local_commandBuffer = commandBuffer;
7755 local_buffer = buffer;
7756 local_offset = offset;
7757 local_drawCount = drawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007758 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007759 countingStream->rewind();
7760 {
David Reveman9875f2c2019-06-11 21:47:12 -04007761 uint64_t cgen_var_549;
7762 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_549, 1);
7763 countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
7764 uint64_t cgen_var_550;
7765 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_550, 1);
7766 countingStream->write((uint64_t*)&cgen_var_550, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007767 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7768 countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7769 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007770 }
7771 uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7772 countingStream->rewind();
7773 uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
7774 stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
7775 stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007776 uint64_t cgen_var_551;
7777 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_551, 1);
7778 stream->write((uint64_t*)&cgen_var_551, 1 * 8);
7779 uint64_t cgen_var_552;
7780 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_552, 1);
7781 stream->write((uint64_t*)&cgen_var_552, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007782 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7783 stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7784 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007785 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect readParams");
7786 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007787 mImpl->log("finish vkCmdDrawIndexedIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007788}
7789
7790void VkEncoder::vkCmdDispatch(
7791 VkCommandBuffer commandBuffer,
7792 uint32_t groupCountX,
7793 uint32_t groupCountY,
7794 uint32_t groupCountZ)
7795{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007796 AEMU_SCOPED_TRACE("vkCmdDispatch encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007797 mImpl->log("start vkCmdDispatch");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007798 auto stream = mImpl->stream();
7799 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007800 auto resources = mImpl->resources();
7801 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007802 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007803 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007804 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007805 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007806 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007807 local_commandBuffer = commandBuffer;
7808 local_groupCountX = groupCountX;
7809 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007810 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007811 countingStream->rewind();
7812 {
David Reveman9875f2c2019-06-11 21:47:12 -04007813 uint64_t cgen_var_553;
7814 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
7815 countingStream->write((uint64_t*)&cgen_var_553, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007816 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7817 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7818 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007819 }
7820 uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7821 countingStream->rewind();
7822 uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
7823 stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
7824 stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007825 uint64_t cgen_var_554;
7826 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_554, 1);
7827 stream->write((uint64_t*)&cgen_var_554, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007828 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7829 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7830 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007831 AEMU_SCOPED_TRACE("vkCmdDispatch readParams");
7832 AEMU_SCOPED_TRACE("vkCmdDispatch returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007833 mImpl->log("finish vkCmdDispatch");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007834}
7835
7836void VkEncoder::vkCmdDispatchIndirect(
7837 VkCommandBuffer commandBuffer,
7838 VkBuffer buffer,
7839 VkDeviceSize offset)
7840{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007841 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007842 mImpl->log("start vkCmdDispatchIndirect");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007843 auto stream = mImpl->stream();
7844 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007845 auto resources = mImpl->resources();
7846 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007847 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007848 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007849 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007850 VkDeviceSize local_offset;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007851 local_commandBuffer = commandBuffer;
7852 local_buffer = buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007853 local_offset = offset;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007854 countingStream->rewind();
7855 {
David Reveman9875f2c2019-06-11 21:47:12 -04007856 uint64_t cgen_var_555;
7857 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_555, 1);
7858 countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
7859 uint64_t cgen_var_556;
7860 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_556, 1);
7861 countingStream->write((uint64_t*)&cgen_var_556, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007862 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007863 }
7864 uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7865 countingStream->rewind();
7866 uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
7867 stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
7868 stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007869 uint64_t cgen_var_557;
7870 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_557, 1);
7871 stream->write((uint64_t*)&cgen_var_557, 1 * 8);
7872 uint64_t cgen_var_558;
7873 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_558, 1);
7874 stream->write((uint64_t*)&cgen_var_558, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007875 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007876 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect readParams");
7877 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007878 mImpl->log("finish vkCmdDispatchIndirect");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007879}
7880
7881void VkEncoder::vkCmdCopyBuffer(
7882 VkCommandBuffer commandBuffer,
7883 VkBuffer srcBuffer,
7884 VkBuffer dstBuffer,
7885 uint32_t regionCount,
7886 const VkBufferCopy* pRegions)
7887{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007888 AEMU_SCOPED_TRACE("vkCmdCopyBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007889 mImpl->log("start vkCmdCopyBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007890 auto stream = mImpl->stream();
7891 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007892 auto resources = mImpl->resources();
7893 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007894 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007895 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007896 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007897 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007898 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007899 VkBufferCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007900 local_commandBuffer = commandBuffer;
7901 local_srcBuffer = srcBuffer;
7902 local_dstBuffer = dstBuffer;
7903 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007904 local_pRegions = nullptr;
7905 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007906 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007907 local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007908 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7909 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007910 deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
7911 }
7912 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007913 if (local_pRegions)
7914 {
7915 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7916 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08007917 transform_tohost_VkBufferCopy(mImpl->resources(), (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08007918 }
7919 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007920 countingStream->rewind();
7921 {
David Reveman9875f2c2019-06-11 21:47:12 -04007922 uint64_t cgen_var_559;
7923 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_559, 1);
7924 countingStream->write((uint64_t*)&cgen_var_559, 1 * 8);
7925 uint64_t cgen_var_560;
7926 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_560, 1);
7927 countingStream->write((uint64_t*)&cgen_var_560, 1 * 8);
7928 uint64_t cgen_var_561;
7929 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_561, 1);
7930 countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007931 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7932 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7933 {
7934 marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007935 }
7936 }
7937 uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7938 countingStream->rewind();
7939 uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
7940 stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
7941 stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04007942 uint64_t cgen_var_562;
7943 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_562, 1);
7944 stream->write((uint64_t*)&cgen_var_562, 1 * 8);
7945 uint64_t cgen_var_563;
7946 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_563, 1);
7947 stream->write((uint64_t*)&cgen_var_563, 1 * 8);
7948 uint64_t cgen_var_564;
7949 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_564, 1);
7950 stream->write((uint64_t*)&cgen_var_564, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007951 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007952 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7953 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007954 marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007955 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007956 AEMU_SCOPED_TRACE("vkCmdCopyBuffer readParams");
7957 AEMU_SCOPED_TRACE("vkCmdCopyBuffer returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007958 mImpl->log("finish vkCmdCopyBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007959}
7960
7961void VkEncoder::vkCmdCopyImage(
7962 VkCommandBuffer commandBuffer,
7963 VkImage srcImage,
7964 VkImageLayout srcImageLayout,
7965 VkImage dstImage,
7966 VkImageLayout dstImageLayout,
7967 uint32_t regionCount,
7968 const VkImageCopy* pRegions)
7969{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08007970 AEMU_SCOPED_TRACE("vkCmdCopyImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08007971 mImpl->log("start vkCmdCopyImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007972 auto stream = mImpl->stream();
7973 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007974 auto resources = mImpl->resources();
7975 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08007976 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007977 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007978 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007979 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007980 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007981 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007982 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007983 VkImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08007984 local_commandBuffer = commandBuffer;
7985 local_srcImage = srcImage;
7986 local_srcImageLayout = srcImageLayout;
7987 local_dstImage = dstImage;
7988 local_dstImageLayout = dstImageLayout;
7989 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007990 local_pRegions = nullptr;
7991 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007992 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007993 local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07007994 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7995 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08007996 deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
7997 }
7998 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08007999 if (local_pRegions)
8000 {
8001 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8002 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008003 transform_tohost_VkImageCopy(mImpl->resources(), (VkImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008004 }
8005 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008006 countingStream->rewind();
8007 {
David Reveman9875f2c2019-06-11 21:47:12 -04008008 uint64_t cgen_var_565;
8009 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_565, 1);
8010 countingStream->write((uint64_t*)&cgen_var_565, 1 * 8);
8011 uint64_t cgen_var_566;
8012 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_566, 1);
8013 countingStream->write((uint64_t*)&cgen_var_566, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008014 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
David Reveman9875f2c2019-06-11 21:47:12 -04008015 uint64_t cgen_var_567;
8016 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_567, 1);
8017 countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008018 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8019 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8020 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8021 {
8022 marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008023 }
8024 }
8025 uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8026 countingStream->rewind();
8027 uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
8028 stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
8029 stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008030 uint64_t cgen_var_568;
8031 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_568, 1);
8032 stream->write((uint64_t*)&cgen_var_568, 1 * 8);
8033 uint64_t cgen_var_569;
8034 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_569, 1);
8035 stream->write((uint64_t*)&cgen_var_569, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008036 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
David Reveman9875f2c2019-06-11 21:47:12 -04008037 uint64_t cgen_var_570;
8038 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_570, 1);
8039 stream->write((uint64_t*)&cgen_var_570, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008040 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8041 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008042 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8043 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008044 marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008045 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008046 AEMU_SCOPED_TRACE("vkCmdCopyImage readParams");
8047 AEMU_SCOPED_TRACE("vkCmdCopyImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008048 mImpl->log("finish vkCmdCopyImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008049}
8050
8051void VkEncoder::vkCmdBlitImage(
8052 VkCommandBuffer commandBuffer,
8053 VkImage srcImage,
8054 VkImageLayout srcImageLayout,
8055 VkImage dstImage,
8056 VkImageLayout dstImageLayout,
8057 uint32_t regionCount,
8058 const VkImageBlit* pRegions,
8059 VkFilter filter)
8060{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008061 AEMU_SCOPED_TRACE("vkCmdBlitImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008062 mImpl->log("start vkCmdBlitImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008063 auto stream = mImpl->stream();
8064 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008065 auto resources = mImpl->resources();
8066 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008067 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008068 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008069 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008070 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008071 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008072 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008073 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008074 VkImageBlit* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008075 VkFilter local_filter;
8076 local_commandBuffer = commandBuffer;
8077 local_srcImage = srcImage;
8078 local_srcImageLayout = srcImageLayout;
8079 local_dstImage = dstImage;
8080 local_dstImageLayout = dstImageLayout;
8081 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008082 local_pRegions = nullptr;
8083 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008084 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008085 local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008086 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8087 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008088 deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008089 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008090 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008091 local_filter = filter;
Lingfeng Yang62b23322018-12-24 12:45:47 -08008092 if (local_pRegions)
8093 {
8094 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8095 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008096 transform_tohost_VkImageBlit(mImpl->resources(), (VkImageBlit*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008097 }
8098 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008099 countingStream->rewind();
8100 {
David Reveman9875f2c2019-06-11 21:47:12 -04008101 uint64_t cgen_var_571;
8102 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_571, 1);
8103 countingStream->write((uint64_t*)&cgen_var_571, 1 * 8);
8104 uint64_t cgen_var_572;
8105 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_572, 1);
8106 countingStream->write((uint64_t*)&cgen_var_572, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008107 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
David Reveman9875f2c2019-06-11 21:47:12 -04008108 uint64_t cgen_var_573;
8109 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_573, 1);
8110 countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008111 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8112 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8113 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8114 {
8115 marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
8116 }
8117 countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008118 }
8119 uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8120 countingStream->rewind();
8121 uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
8122 stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
8123 stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008124 uint64_t cgen_var_574;
8125 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1);
8126 stream->write((uint64_t*)&cgen_var_574, 1 * 8);
8127 uint64_t cgen_var_575;
8128 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_575, 1);
8129 stream->write((uint64_t*)&cgen_var_575, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008130 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
David Reveman9875f2c2019-06-11 21:47:12 -04008131 uint64_t cgen_var_576;
8132 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_576, 1);
8133 stream->write((uint64_t*)&cgen_var_576, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008134 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8135 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008136 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8137 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008138 marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008139 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008140 stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008141 AEMU_SCOPED_TRACE("vkCmdBlitImage readParams");
8142 AEMU_SCOPED_TRACE("vkCmdBlitImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008143 mImpl->log("finish vkCmdBlitImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008144}
8145
8146void VkEncoder::vkCmdCopyBufferToImage(
8147 VkCommandBuffer commandBuffer,
8148 VkBuffer srcBuffer,
8149 VkImage dstImage,
8150 VkImageLayout dstImageLayout,
8151 uint32_t regionCount,
8152 const VkBufferImageCopy* pRegions)
8153{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008154 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008155 mImpl->log("start vkCmdCopyBufferToImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008156 auto stream = mImpl->stream();
8157 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008158 auto resources = mImpl->resources();
8159 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008160 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008161 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008162 VkBuffer local_srcBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008163 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008164 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008165 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008166 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008167 local_commandBuffer = commandBuffer;
8168 local_srcBuffer = srcBuffer;
8169 local_dstImage = dstImage;
8170 local_dstImageLayout = dstImageLayout;
8171 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008172 local_pRegions = nullptr;
8173 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008174 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008175 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008176 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8177 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008178 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
8179 }
8180 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008181 if (local_pRegions)
8182 {
8183 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8184 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008185 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008186 }
8187 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008188 countingStream->rewind();
8189 {
David Reveman9875f2c2019-06-11 21:47:12 -04008190 uint64_t cgen_var_577;
8191 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_577, 1);
8192 countingStream->write((uint64_t*)&cgen_var_577, 1 * 8);
8193 uint64_t cgen_var_578;
8194 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_578, 1);
8195 countingStream->write((uint64_t*)&cgen_var_578, 1 * 8);
8196 uint64_t cgen_var_579;
8197 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_579, 1);
8198 countingStream->write((uint64_t*)&cgen_var_579, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008199 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8200 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8201 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8202 {
8203 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008204 }
8205 }
8206 uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8207 countingStream->rewind();
8208 uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
8209 stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
8210 stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008211 uint64_t cgen_var_580;
8212 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_580, 1);
8213 stream->write((uint64_t*)&cgen_var_580, 1 * 8);
8214 uint64_t cgen_var_581;
8215 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_581, 1);
8216 stream->write((uint64_t*)&cgen_var_581, 1 * 8);
8217 uint64_t cgen_var_582;
8218 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_582, 1);
8219 stream->write((uint64_t*)&cgen_var_582, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008220 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8221 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008222 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8223 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008224 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008225 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008226 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage readParams");
8227 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008228 mImpl->log("finish vkCmdCopyBufferToImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008229}
8230
8231void VkEncoder::vkCmdCopyImageToBuffer(
8232 VkCommandBuffer commandBuffer,
8233 VkImage srcImage,
8234 VkImageLayout srcImageLayout,
8235 VkBuffer dstBuffer,
8236 uint32_t regionCount,
8237 const VkBufferImageCopy* pRegions)
8238{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008239 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008240 mImpl->log("start vkCmdCopyImageToBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008241 auto stream = mImpl->stream();
8242 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008243 auto resources = mImpl->resources();
8244 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008245 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008246 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008247 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008248 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008249 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008250 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008251 VkBufferImageCopy* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008252 local_commandBuffer = commandBuffer;
8253 local_srcImage = srcImage;
8254 local_srcImageLayout = srcImageLayout;
8255 local_dstBuffer = dstBuffer;
8256 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008257 local_pRegions = nullptr;
8258 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008259 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008260 local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008261 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8262 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008263 deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
8264 }
8265 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008266 if (local_pRegions)
8267 {
8268 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8269 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008270 transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008271 }
8272 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008273 countingStream->rewind();
8274 {
David Reveman9875f2c2019-06-11 21:47:12 -04008275 uint64_t cgen_var_583;
8276 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_583, 1);
8277 countingStream->write((uint64_t*)&cgen_var_583, 1 * 8);
8278 uint64_t cgen_var_584;
8279 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_584, 1);
8280 countingStream->write((uint64_t*)&cgen_var_584, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008281 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
David Reveman9875f2c2019-06-11 21:47:12 -04008282 uint64_t cgen_var_585;
8283 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_585, 1);
8284 countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008285 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8286 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8287 {
8288 marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008289 }
8290 }
8291 uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8292 countingStream->rewind();
8293 uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
8294 stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
8295 stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008296 uint64_t cgen_var_586;
8297 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_586, 1);
8298 stream->write((uint64_t*)&cgen_var_586, 1 * 8);
8299 uint64_t cgen_var_587;
8300 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_587, 1);
8301 stream->write((uint64_t*)&cgen_var_587, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008302 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
David Reveman9875f2c2019-06-11 21:47:12 -04008303 uint64_t cgen_var_588;
8304 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_588, 1);
8305 stream->write((uint64_t*)&cgen_var_588, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008306 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008307 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8308 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008309 marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008310 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008311 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer readParams");
8312 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008313 mImpl->log("finish vkCmdCopyImageToBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008314}
8315
8316void VkEncoder::vkCmdUpdateBuffer(
8317 VkCommandBuffer commandBuffer,
8318 VkBuffer dstBuffer,
8319 VkDeviceSize dstOffset,
8320 VkDeviceSize dataSize,
8321 const void* pData)
8322{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008323 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008324 mImpl->log("start vkCmdUpdateBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008325 auto stream = mImpl->stream();
8326 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008327 auto resources = mImpl->resources();
8328 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008329 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008330 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008331 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008332 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008333 VkDeviceSize local_dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008334 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008335 local_commandBuffer = commandBuffer;
8336 local_dstBuffer = dstBuffer;
8337 local_dstOffset = dstOffset;
8338 local_dataSize = dataSize;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008339 local_pData = nullptr;
8340 if (pData)
8341 {
8342 local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
8343 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008344 countingStream->rewind();
8345 {
David Reveman9875f2c2019-06-11 21:47:12 -04008346 uint64_t cgen_var_589;
8347 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
8348 countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
8349 uint64_t cgen_var_590;
8350 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_590, 1);
8351 countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008352 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8353 countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
8354 countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008355 }
8356 uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8357 countingStream->rewind();
8358 uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
8359 stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
8360 stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008361 uint64_t cgen_var_591;
8362 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
8363 stream->write((uint64_t*)&cgen_var_591, 1 * 8);
8364 uint64_t cgen_var_592;
8365 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_592, 1);
8366 stream->write((uint64_t*)&cgen_var_592, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008367 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8368 stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
8369 stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008370 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer readParams");
8371 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008372 mImpl->log("finish vkCmdUpdateBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008373}
8374
8375void VkEncoder::vkCmdFillBuffer(
8376 VkCommandBuffer commandBuffer,
8377 VkBuffer dstBuffer,
8378 VkDeviceSize dstOffset,
8379 VkDeviceSize size,
8380 uint32_t data)
8381{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008382 AEMU_SCOPED_TRACE("vkCmdFillBuffer encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008383 mImpl->log("start vkCmdFillBuffer");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008384 auto stream = mImpl->stream();
8385 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008386 auto resources = mImpl->resources();
8387 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008388 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008389 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008390 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008391 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008392 VkDeviceSize local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008393 uint32_t local_data;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008394 local_commandBuffer = commandBuffer;
8395 local_dstBuffer = dstBuffer;
8396 local_dstOffset = dstOffset;
8397 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008398 local_data = data;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008399 countingStream->rewind();
8400 {
David Reveman9875f2c2019-06-11 21:47:12 -04008401 uint64_t cgen_var_593;
8402 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
8403 countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
8404 uint64_t cgen_var_594;
8405 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_594, 1);
8406 countingStream->write((uint64_t*)&cgen_var_594, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008407 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8408 countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
8409 countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008410 }
8411 uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8412 countingStream->rewind();
8413 uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
8414 stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
8415 stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008416 uint64_t cgen_var_595;
8417 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
8418 stream->write((uint64_t*)&cgen_var_595, 1 * 8);
8419 uint64_t cgen_var_596;
8420 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_596, 1);
8421 stream->write((uint64_t*)&cgen_var_596, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008422 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8423 stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
8424 stream->write((uint32_t*)&local_data, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008425 AEMU_SCOPED_TRACE("vkCmdFillBuffer readParams");
8426 AEMU_SCOPED_TRACE("vkCmdFillBuffer returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008427 mImpl->log("finish vkCmdFillBuffer");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008428}
8429
8430void VkEncoder::vkCmdClearColorImage(
8431 VkCommandBuffer commandBuffer,
8432 VkImage image,
8433 VkImageLayout imageLayout,
8434 const VkClearColorValue* pColor,
8435 uint32_t rangeCount,
8436 const VkImageSubresourceRange* pRanges)
8437{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008438 AEMU_SCOPED_TRACE("vkCmdClearColorImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008439 mImpl->log("start vkCmdClearColorImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008440 auto stream = mImpl->stream();
8441 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008442 auto resources = mImpl->resources();
8443 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008444 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008445 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008446 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008447 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008448 VkClearColorValue* local_pColor;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008449 uint32_t local_rangeCount;
8450 VkImageSubresourceRange* local_pRanges;
8451 local_commandBuffer = commandBuffer;
8452 local_image = image;
8453 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008454 local_pColor = nullptr;
8455 if (pColor)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008456 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008457 local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
8458 deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
8459 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008460 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008461 local_pRanges = nullptr;
8462 if (pRanges)
8463 {
8464 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008465 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8466 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008467 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
8468 }
8469 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008470 if (local_pColor)
8471 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008472 transform_tohost_VkClearColorValue(mImpl->resources(), (VkClearColorValue*)(local_pColor));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008473 }
8474 if (local_pRanges)
8475 {
8476 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8477 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008478 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008479 }
8480 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008481 countingStream->rewind();
8482 {
David Reveman9875f2c2019-06-11 21:47:12 -04008483 uint64_t cgen_var_597;
8484 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_597, 1);
8485 countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
8486 uint64_t cgen_var_598;
8487 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_598, 1);
8488 countingStream->write((uint64_t*)&cgen_var_598, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008489 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8490 marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
8491 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8492 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8493 {
8494 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008495 }
8496 }
8497 uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8498 countingStream->rewind();
8499 uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
8500 stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
8501 stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008502 uint64_t cgen_var_599;
8503 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_599, 1);
8504 stream->write((uint64_t*)&cgen_var_599, 1 * 8);
8505 uint64_t cgen_var_600;
8506 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_600, 1);
8507 stream->write((uint64_t*)&cgen_var_600, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008508 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8509 marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
8510 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008511 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8512 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008513 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008514 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008515 AEMU_SCOPED_TRACE("vkCmdClearColorImage readParams");
8516 AEMU_SCOPED_TRACE("vkCmdClearColorImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008517 mImpl->log("finish vkCmdClearColorImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008518}
8519
8520void VkEncoder::vkCmdClearDepthStencilImage(
8521 VkCommandBuffer commandBuffer,
8522 VkImage image,
8523 VkImageLayout imageLayout,
8524 const VkClearDepthStencilValue* pDepthStencil,
8525 uint32_t rangeCount,
8526 const VkImageSubresourceRange* pRanges)
8527{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008528 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008529 mImpl->log("start vkCmdClearDepthStencilImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008530 auto stream = mImpl->stream();
8531 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008532 auto resources = mImpl->resources();
8533 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008534 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008535 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008536 VkImage local_image;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008537 VkImageLayout local_imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008538 VkClearDepthStencilValue* local_pDepthStencil;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008539 uint32_t local_rangeCount;
8540 VkImageSubresourceRange* local_pRanges;
8541 local_commandBuffer = commandBuffer;
8542 local_image = image;
8543 local_imageLayout = imageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008544 local_pDepthStencil = nullptr;
8545 if (pDepthStencil)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008546 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008547 local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
8548 deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
8549 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008550 local_rangeCount = rangeCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008551 local_pRanges = nullptr;
8552 if (pRanges)
8553 {
8554 local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008555 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8556 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008557 deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
8558 }
8559 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008560 if (local_pDepthStencil)
8561 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008562 transform_tohost_VkClearDepthStencilValue(mImpl->resources(), (VkClearDepthStencilValue*)(local_pDepthStencil));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008563 }
8564 if (local_pRanges)
8565 {
8566 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8567 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008568 transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008569 }
8570 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008571 countingStream->rewind();
8572 {
David Reveman9875f2c2019-06-11 21:47:12 -04008573 uint64_t cgen_var_601;
8574 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
8575 countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
8576 uint64_t cgen_var_602;
8577 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_602, 1);
8578 countingStream->write((uint64_t*)&cgen_var_602, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008579 countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8580 marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8581 countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8582 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8583 {
8584 marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008585 }
8586 }
8587 uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8588 countingStream->rewind();
8589 uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
8590 stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
8591 stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008592 uint64_t cgen_var_603;
8593 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
8594 stream->write((uint64_t*)&cgen_var_603, 1 * 8);
8595 uint64_t cgen_var_604;
8596 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_604, 1);
8597 stream->write((uint64_t*)&cgen_var_604, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008598 stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8599 marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8600 stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008601 for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8602 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008603 marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008604 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008605 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage readParams");
8606 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008607 mImpl->log("finish vkCmdClearDepthStencilImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008608}
8609
8610void VkEncoder::vkCmdClearAttachments(
8611 VkCommandBuffer commandBuffer,
8612 uint32_t attachmentCount,
8613 const VkClearAttachment* pAttachments,
8614 uint32_t rectCount,
8615 const VkClearRect* pRects)
8616{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008617 AEMU_SCOPED_TRACE("vkCmdClearAttachments encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008618 mImpl->log("start vkCmdClearAttachments");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008619 auto stream = mImpl->stream();
8620 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008621 auto resources = mImpl->resources();
8622 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008623 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008624 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008625 uint32_t local_attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008626 VkClearAttachment* local_pAttachments;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008627 uint32_t local_rectCount;
8628 VkClearRect* local_pRects;
8629 local_commandBuffer = commandBuffer;
8630 local_attachmentCount = attachmentCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008631 local_pAttachments = nullptr;
8632 if (pAttachments)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008633 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008634 local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008635 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8636 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008637 deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008638 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008639 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008640 local_rectCount = rectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008641 local_pRects = nullptr;
8642 if (pRects)
8643 {
8644 local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008645 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8646 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008647 deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
8648 }
8649 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008650 if (local_pAttachments)
8651 {
8652 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8653 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008654 transform_tohost_VkClearAttachment(mImpl->resources(), (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008655 }
8656 }
8657 if (local_pRects)
8658 {
8659 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8660 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008661 transform_tohost_VkClearRect(mImpl->resources(), (VkClearRect*)(local_pRects + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008662 }
8663 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008664 countingStream->rewind();
8665 {
David Reveman9875f2c2019-06-11 21:47:12 -04008666 uint64_t cgen_var_605;
8667 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_605, 1);
8668 countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008669 countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
8670 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8671 {
8672 marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
8673 }
8674 countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
8675 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8676 {
8677 marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008678 }
8679 }
8680 uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8681 countingStream->rewind();
8682 uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
8683 stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
8684 stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008685 uint64_t cgen_var_606;
8686 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_606, 1);
8687 stream->write((uint64_t*)&cgen_var_606, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008688 stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008689 for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8690 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008691 marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008692 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008693 stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008694 for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8695 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008696 marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008697 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008698 AEMU_SCOPED_TRACE("vkCmdClearAttachments readParams");
8699 AEMU_SCOPED_TRACE("vkCmdClearAttachments returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008700 mImpl->log("finish vkCmdClearAttachments");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008701}
8702
8703void VkEncoder::vkCmdResolveImage(
8704 VkCommandBuffer commandBuffer,
8705 VkImage srcImage,
8706 VkImageLayout srcImageLayout,
8707 VkImage dstImage,
8708 VkImageLayout dstImageLayout,
8709 uint32_t regionCount,
8710 const VkImageResolve* pRegions)
8711{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008712 AEMU_SCOPED_TRACE("vkCmdResolveImage encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008713 mImpl->log("start vkCmdResolveImage");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008714 auto stream = mImpl->stream();
8715 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008716 auto resources = mImpl->resources();
8717 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008718 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008719 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008720 VkImage local_srcImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008721 VkImageLayout local_srcImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008722 VkImage local_dstImage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008723 VkImageLayout local_dstImageLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008724 uint32_t local_regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008725 VkImageResolve* local_pRegions;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008726 local_commandBuffer = commandBuffer;
8727 local_srcImage = srcImage;
8728 local_srcImageLayout = srcImageLayout;
8729 local_dstImage = dstImage;
8730 local_dstImageLayout = dstImageLayout;
8731 local_regionCount = regionCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008732 local_pRegions = nullptr;
8733 if (pRegions)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008734 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008735 local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008736 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8737 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008738 deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
8739 }
8740 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008741 if (local_pRegions)
8742 {
8743 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8744 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008745 transform_tohost_VkImageResolve(mImpl->resources(), (VkImageResolve*)(local_pRegions + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008746 }
8747 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008748 countingStream->rewind();
8749 {
David Reveman9875f2c2019-06-11 21:47:12 -04008750 uint64_t cgen_var_607;
8751 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_607, 1);
8752 countingStream->write((uint64_t*)&cgen_var_607, 1 * 8);
8753 uint64_t cgen_var_608;
8754 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_608, 1);
8755 countingStream->write((uint64_t*)&cgen_var_608, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008756 countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
David Reveman9875f2c2019-06-11 21:47:12 -04008757 uint64_t cgen_var_609;
8758 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_609, 1);
8759 countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008760 countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8761 countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8762 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8763 {
8764 marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008765 }
8766 }
8767 uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8768 countingStream->rewind();
8769 uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
8770 stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
8771 stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008772 uint64_t cgen_var_610;
8773 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_610, 1);
8774 stream->write((uint64_t*)&cgen_var_610, 1 * 8);
8775 uint64_t cgen_var_611;
8776 stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_611, 1);
8777 stream->write((uint64_t*)&cgen_var_611, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -08008778 stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
David Reveman9875f2c2019-06-11 21:47:12 -04008779 uint64_t cgen_var_612;
8780 stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_612, 1);
8781 stream->write((uint64_t*)&cgen_var_612, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008782 stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8783 stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008784 for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8785 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008786 marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008787 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008788 AEMU_SCOPED_TRACE("vkCmdResolveImage readParams");
8789 AEMU_SCOPED_TRACE("vkCmdResolveImage returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008790 mImpl->log("finish vkCmdResolveImage");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008791}
8792
8793void VkEncoder::vkCmdSetEvent(
8794 VkCommandBuffer commandBuffer,
8795 VkEvent event,
8796 VkPipelineStageFlags stageMask)
8797{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008798 AEMU_SCOPED_TRACE("vkCmdSetEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008799 mImpl->log("start vkCmdSetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008800 auto stream = mImpl->stream();
8801 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008802 auto resources = mImpl->resources();
8803 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008804 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008805 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008806 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008807 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008808 local_commandBuffer = commandBuffer;
8809 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008810 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008811 countingStream->rewind();
8812 {
David Reveman9875f2c2019-06-11 21:47:12 -04008813 uint64_t cgen_var_613;
8814 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
8815 countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
8816 uint64_t cgen_var_614;
8817 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_614, 1);
8818 countingStream->write((uint64_t*)&cgen_var_614, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008819 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008820 }
8821 uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8822 countingStream->rewind();
8823 uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
8824 stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
8825 stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008826 uint64_t cgen_var_615;
8827 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
8828 stream->write((uint64_t*)&cgen_var_615, 1 * 8);
8829 uint64_t cgen_var_616;
8830 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_616, 1);
8831 stream->write((uint64_t*)&cgen_var_616, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008832 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008833 AEMU_SCOPED_TRACE("vkCmdSetEvent readParams");
8834 AEMU_SCOPED_TRACE("vkCmdSetEvent returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008835 mImpl->log("finish vkCmdSetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008836}
8837
8838void VkEncoder::vkCmdResetEvent(
8839 VkCommandBuffer commandBuffer,
8840 VkEvent event,
8841 VkPipelineStageFlags stageMask)
8842{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008843 AEMU_SCOPED_TRACE("vkCmdResetEvent encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008844 mImpl->log("start vkCmdResetEvent");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008845 auto stream = mImpl->stream();
8846 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008847 auto resources = mImpl->resources();
8848 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008849 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008850 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008851 VkEvent local_event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008852 VkPipelineStageFlags local_stageMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008853 local_commandBuffer = commandBuffer;
8854 local_event = event;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008855 local_stageMask = stageMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008856 countingStream->rewind();
8857 {
David Reveman9875f2c2019-06-11 21:47:12 -04008858 uint64_t cgen_var_617;
8859 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
8860 countingStream->write((uint64_t*)&cgen_var_617, 1 * 8);
8861 uint64_t cgen_var_618;
8862 countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_618, 1);
8863 countingStream->write((uint64_t*)&cgen_var_618, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008864 countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008865 }
8866 uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8867 countingStream->rewind();
8868 uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
8869 stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
8870 stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04008871 uint64_t cgen_var_619;
8872 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
8873 stream->write((uint64_t*)&cgen_var_619, 1 * 8);
8874 uint64_t cgen_var_620;
8875 stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_620, 1);
8876 stream->write((uint64_t*)&cgen_var_620, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008877 stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008878 AEMU_SCOPED_TRACE("vkCmdResetEvent readParams");
8879 AEMU_SCOPED_TRACE("vkCmdResetEvent returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008880 mImpl->log("finish vkCmdResetEvent");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008881}
8882
8883void VkEncoder::vkCmdWaitEvents(
8884 VkCommandBuffer commandBuffer,
8885 uint32_t eventCount,
8886 const VkEvent* pEvents,
8887 VkPipelineStageFlags srcStageMask,
8888 VkPipelineStageFlags dstStageMask,
8889 uint32_t memoryBarrierCount,
8890 const VkMemoryBarrier* pMemoryBarriers,
8891 uint32_t bufferMemoryBarrierCount,
8892 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8893 uint32_t imageMemoryBarrierCount,
8894 const VkImageMemoryBarrier* pImageMemoryBarriers)
8895{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08008896 AEMU_SCOPED_TRACE("vkCmdWaitEvents encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08008897 mImpl->log("start vkCmdWaitEvents");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008898 auto stream = mImpl->stream();
8899 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008900 auto resources = mImpl->resources();
8901 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08008902 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008903 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008904 uint32_t local_eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008905 VkEvent* local_pEvents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08008906 VkPipelineStageFlags local_srcStageMask;
8907 VkPipelineStageFlags local_dstStageMask;
8908 uint32_t local_memoryBarrierCount;
8909 VkMemoryBarrier* local_pMemoryBarriers;
8910 uint32_t local_bufferMemoryBarrierCount;
8911 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8912 uint32_t local_imageMemoryBarrierCount;
8913 VkImageMemoryBarrier* local_pImageMemoryBarriers;
8914 local_commandBuffer = commandBuffer;
8915 local_eventCount = eventCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008916 local_pEvents = nullptr;
8917 if (pEvents)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008918 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008919 local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
8920 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008921 local_srcStageMask = srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008922 local_dstStageMask = dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008923 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008924 local_pMemoryBarriers = nullptr;
8925 if (pMemoryBarriers)
8926 {
8927 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008928 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8929 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008930 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008931 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008932 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008933 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008934 local_pBufferMemoryBarriers = nullptr;
8935 if (pBufferMemoryBarriers)
8936 {
8937 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008938 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8939 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008940 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008941 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008942 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008943 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008944 local_pImageMemoryBarriers = nullptr;
8945 if (pImageMemoryBarriers)
8946 {
8947 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07008948 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8949 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008950 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8951 }
8952 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08008953 if (local_pMemoryBarriers)
8954 {
8955 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8956 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008957 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008958 }
8959 }
8960 if (local_pBufferMemoryBarriers)
8961 {
8962 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8963 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008964 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008965 }
8966 }
8967 if (local_pImageMemoryBarriers)
8968 {
8969 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8970 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08008971 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08008972 }
8973 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008974 countingStream->rewind();
8975 {
David Reveman9875f2c2019-06-11 21:47:12 -04008976 uint64_t cgen_var_621;
8977 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
8978 countingStream->write((uint64_t*)&cgen_var_621, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008979 countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08008980 if (((eventCount)))
8981 {
David Reveman9875f2c2019-06-11 21:47:12 -04008982 uint64_t* cgen_var_622;
8983 countingStream->alloc((void**)&cgen_var_622, ((eventCount)) * 8);
8984 countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_622, ((eventCount)));
8985 countingStream->write((uint64_t*)cgen_var_622, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08008986 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08008987 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8988 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8989 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8990 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8991 {
8992 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8993 }
8994 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8995 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8996 {
8997 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8998 }
8999 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
9000 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9001 {
9002 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009003 }
9004 }
9005 uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9006 countingStream->rewind();
9007 uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
9008 stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
9009 stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009010 uint64_t cgen_var_623;
9011 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
9012 stream->write((uint64_t*)&cgen_var_623, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009013 stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009014 if (((eventCount)))
9015 {
David Reveman9875f2c2019-06-11 21:47:12 -04009016 uint64_t* cgen_var_624;
9017 stream->alloc((void**)&cgen_var_624, ((eventCount)) * 8);
9018 stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_624, ((eventCount)));
9019 stream->write((uint64_t*)cgen_var_624, ((eventCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08009020 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009021 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
9022 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
9023 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009024 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9025 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009026 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009027 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009028 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009029 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9030 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009031 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009032 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009033 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009034 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9035 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009036 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009037 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009038 AEMU_SCOPED_TRACE("vkCmdWaitEvents readParams");
9039 AEMU_SCOPED_TRACE("vkCmdWaitEvents returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009040 mImpl->log("finish vkCmdWaitEvents");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009041}
9042
9043void VkEncoder::vkCmdPipelineBarrier(
9044 VkCommandBuffer commandBuffer,
9045 VkPipelineStageFlags srcStageMask,
9046 VkPipelineStageFlags dstStageMask,
9047 VkDependencyFlags dependencyFlags,
9048 uint32_t memoryBarrierCount,
9049 const VkMemoryBarrier* pMemoryBarriers,
9050 uint32_t bufferMemoryBarrierCount,
9051 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
9052 uint32_t imageMemoryBarrierCount,
9053 const VkImageMemoryBarrier* pImageMemoryBarriers)
9054{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009055 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009056 mImpl->log("start vkCmdPipelineBarrier");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009057 auto stream = mImpl->stream();
9058 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009059 auto resources = mImpl->resources();
9060 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009061 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009062 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009063 VkPipelineStageFlags local_srcStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009064 VkPipelineStageFlags local_dstStageMask;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009065 VkDependencyFlags local_dependencyFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009066 uint32_t local_memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009067 VkMemoryBarrier* local_pMemoryBarriers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009068 uint32_t local_bufferMemoryBarrierCount;
9069 VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
9070 uint32_t local_imageMemoryBarrierCount;
9071 VkImageMemoryBarrier* local_pImageMemoryBarriers;
9072 local_commandBuffer = commandBuffer;
9073 local_srcStageMask = srcStageMask;
9074 local_dstStageMask = dstStageMask;
9075 local_dependencyFlags = dependencyFlags;
9076 local_memoryBarrierCount = memoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009077 local_pMemoryBarriers = nullptr;
9078 if (pMemoryBarriers)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009079 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009080 local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009081 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9082 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009083 deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009084 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009085 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009086 local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009087 local_pBufferMemoryBarriers = nullptr;
9088 if (pBufferMemoryBarriers)
9089 {
9090 local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009091 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9092 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009093 deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009094 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009095 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009096 local_imageMemoryBarrierCount = imageMemoryBarrierCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009097 local_pImageMemoryBarriers = nullptr;
9098 if (pImageMemoryBarriers)
9099 {
9100 local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009101 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9102 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009103 deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
9104 }
9105 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009106 if (local_pMemoryBarriers)
9107 {
9108 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9109 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009110 transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009111 }
9112 }
9113 if (local_pBufferMemoryBarriers)
9114 {
9115 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9116 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009117 transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009118 }
9119 }
9120 if (local_pImageMemoryBarriers)
9121 {
9122 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9123 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009124 transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009125 }
9126 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009127 countingStream->rewind();
9128 {
David Reveman9875f2c2019-06-11 21:47:12 -04009129 uint64_t cgen_var_625;
9130 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
9131 countingStream->write((uint64_t*)&cgen_var_625, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009132 countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
9133 countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
9134 countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
9135 countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
9136 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9137 {
9138 marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
9139 }
9140 countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
9141 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9142 {
9143 marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
9144 }
9145 countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
9146 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9147 {
9148 marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009149 }
9150 }
9151 uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9152 countingStream->rewind();
9153 uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
9154 stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
9155 stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009156 uint64_t cgen_var_626;
9157 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_626, 1);
9158 stream->write((uint64_t*)&cgen_var_626, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009159 stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
9160 stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
9161 stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
9162 stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009163 for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9164 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009165 marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009166 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009167 stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009168 for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9169 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009170 marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009171 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009172 stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009173 for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9174 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009175 marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009176 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009177 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier readParams");
9178 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009179 mImpl->log("finish vkCmdPipelineBarrier");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009180}
9181
9182void VkEncoder::vkCmdBeginQuery(
9183 VkCommandBuffer commandBuffer,
9184 VkQueryPool queryPool,
9185 uint32_t query,
9186 VkQueryControlFlags flags)
9187{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009188 AEMU_SCOPED_TRACE("vkCmdBeginQuery encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009189 mImpl->log("start vkCmdBeginQuery");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009190 auto stream = mImpl->stream();
9191 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009192 auto resources = mImpl->resources();
9193 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009194 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009195 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009196 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009197 uint32_t local_query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009198 VkQueryControlFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009199 local_commandBuffer = commandBuffer;
9200 local_queryPool = queryPool;
9201 local_query = query;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009202 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009203 countingStream->rewind();
9204 {
David Reveman9875f2c2019-06-11 21:47:12 -04009205 uint64_t cgen_var_627;
9206 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
9207 countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
9208 uint64_t cgen_var_628;
9209 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
9210 countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009211 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
9212 countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009213 }
9214 uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9215 countingStream->rewind();
9216 uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
9217 stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
9218 stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009219 uint64_t cgen_var_629;
9220 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
9221 stream->write((uint64_t*)&cgen_var_629, 1 * 8);
9222 uint64_t cgen_var_630;
9223 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
9224 stream->write((uint64_t*)&cgen_var_630, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009225 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
9226 stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009227 AEMU_SCOPED_TRACE("vkCmdBeginQuery readParams");
9228 AEMU_SCOPED_TRACE("vkCmdBeginQuery returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009229 mImpl->log("finish vkCmdBeginQuery");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009230}
9231
9232void VkEncoder::vkCmdEndQuery(
9233 VkCommandBuffer commandBuffer,
9234 VkQueryPool queryPool,
9235 uint32_t query)
9236{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009237 AEMU_SCOPED_TRACE("vkCmdEndQuery encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009238 mImpl->log("start vkCmdEndQuery");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009239 auto stream = mImpl->stream();
9240 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009241 auto resources = mImpl->resources();
9242 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009243 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009244 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009245 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009246 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009247 local_commandBuffer = commandBuffer;
9248 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009249 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009250 countingStream->rewind();
9251 {
David Reveman9875f2c2019-06-11 21:47:12 -04009252 uint64_t cgen_var_631;
9253 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
9254 countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
9255 uint64_t cgen_var_632;
9256 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
9257 countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009258 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009259 }
9260 uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9261 countingStream->rewind();
9262 uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
9263 stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
9264 stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009265 uint64_t cgen_var_633;
9266 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_633, 1);
9267 stream->write((uint64_t*)&cgen_var_633, 1 * 8);
9268 uint64_t cgen_var_634;
9269 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_634, 1);
9270 stream->write((uint64_t*)&cgen_var_634, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009271 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009272 AEMU_SCOPED_TRACE("vkCmdEndQuery readParams");
9273 AEMU_SCOPED_TRACE("vkCmdEndQuery returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009274 mImpl->log("finish vkCmdEndQuery");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009275}
9276
9277void VkEncoder::vkCmdResetQueryPool(
9278 VkCommandBuffer commandBuffer,
9279 VkQueryPool queryPool,
9280 uint32_t firstQuery,
9281 uint32_t queryCount)
9282{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009283 AEMU_SCOPED_TRACE("vkCmdResetQueryPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009284 mImpl->log("start vkCmdResetQueryPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009285 auto stream = mImpl->stream();
9286 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009287 auto resources = mImpl->resources();
9288 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009289 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009290 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009291 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009292 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009293 uint32_t local_queryCount;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009294 local_commandBuffer = commandBuffer;
9295 local_queryPool = queryPool;
9296 local_firstQuery = firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009297 local_queryCount = queryCount;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009298 countingStream->rewind();
9299 {
David Reveman9875f2c2019-06-11 21:47:12 -04009300 uint64_t cgen_var_635;
9301 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_635, 1);
9302 countingStream->write((uint64_t*)&cgen_var_635, 1 * 8);
9303 uint64_t cgen_var_636;
9304 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_636, 1);
9305 countingStream->write((uint64_t*)&cgen_var_636, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009306 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9307 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009308 }
9309 uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9310 countingStream->rewind();
9311 uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
9312 stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
9313 stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009314 uint64_t cgen_var_637;
9315 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
9316 stream->write((uint64_t*)&cgen_var_637, 1 * 8);
9317 uint64_t cgen_var_638;
9318 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_638, 1);
9319 stream->write((uint64_t*)&cgen_var_638, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009320 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9321 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009322 AEMU_SCOPED_TRACE("vkCmdResetQueryPool readParams");
9323 AEMU_SCOPED_TRACE("vkCmdResetQueryPool returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009324 mImpl->log("finish vkCmdResetQueryPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009325}
9326
9327void VkEncoder::vkCmdWriteTimestamp(
9328 VkCommandBuffer commandBuffer,
9329 VkPipelineStageFlagBits pipelineStage,
9330 VkQueryPool queryPool,
9331 uint32_t query)
9332{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009333 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009334 mImpl->log("start vkCmdWriteTimestamp");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009335 auto stream = mImpl->stream();
9336 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009337 auto resources = mImpl->resources();
9338 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009339 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009340 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009341 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009342 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009343 uint32_t local_query;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009344 local_commandBuffer = commandBuffer;
9345 local_pipelineStage = pipelineStage;
9346 local_queryPool = queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009347 local_query = query;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009348 countingStream->rewind();
9349 {
David Reveman9875f2c2019-06-11 21:47:12 -04009350 uint64_t cgen_var_639;
9351 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
9352 countingStream->write((uint64_t*)&cgen_var_639, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009353 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
David Reveman9875f2c2019-06-11 21:47:12 -04009354 uint64_t cgen_var_640;
9355 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_640, 1);
9356 countingStream->write((uint64_t*)&cgen_var_640, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009357 countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009358 }
9359 uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9360 countingStream->rewind();
9361 uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
9362 stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
9363 stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009364 uint64_t cgen_var_641;
9365 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1);
9366 stream->write((uint64_t*)&cgen_var_641, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009367 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
David Reveman9875f2c2019-06-11 21:47:12 -04009368 uint64_t cgen_var_642;
9369 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_642, 1);
9370 stream->write((uint64_t*)&cgen_var_642, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009371 stream->write((uint32_t*)&local_query, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009372 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp readParams");
9373 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009374 mImpl->log("finish vkCmdWriteTimestamp");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009375}
9376
9377void VkEncoder::vkCmdCopyQueryPoolResults(
9378 VkCommandBuffer commandBuffer,
9379 VkQueryPool queryPool,
9380 uint32_t firstQuery,
9381 uint32_t queryCount,
9382 VkBuffer dstBuffer,
9383 VkDeviceSize dstOffset,
9384 VkDeviceSize stride,
9385 VkQueryResultFlags flags)
9386{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009387 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009388 mImpl->log("start vkCmdCopyQueryPoolResults");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009389 auto stream = mImpl->stream();
9390 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009391 auto resources = mImpl->resources();
9392 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009393 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009394 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009395 VkQueryPool local_queryPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009396 uint32_t local_firstQuery;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009397 uint32_t local_queryCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009398 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009399 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009400 VkDeviceSize local_stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009401 VkQueryResultFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009402 local_commandBuffer = commandBuffer;
9403 local_queryPool = queryPool;
9404 local_firstQuery = firstQuery;
9405 local_queryCount = queryCount;
9406 local_dstBuffer = dstBuffer;
9407 local_dstOffset = dstOffset;
9408 local_stride = stride;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009409 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009410 countingStream->rewind();
9411 {
David Reveman9875f2c2019-06-11 21:47:12 -04009412 uint64_t cgen_var_643;
9413 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_643, 1);
9414 countingStream->write((uint64_t*)&cgen_var_643, 1 * 8);
9415 uint64_t cgen_var_644;
9416 countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_644, 1);
9417 countingStream->write((uint64_t*)&cgen_var_644, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009418 countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9419 countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009420 uint64_t cgen_var_645;
9421 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_645, 1);
9422 countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009423 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
9424 countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
9425 countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009426 }
9427 uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9428 countingStream->rewind();
9429 uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
9430 stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
9431 stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009432 uint64_t cgen_var_646;
9433 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_646, 1);
9434 stream->write((uint64_t*)&cgen_var_646, 1 * 8);
9435 uint64_t cgen_var_647;
9436 stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_647, 1);
9437 stream->write((uint64_t*)&cgen_var_647, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009438 stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9439 stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009440 uint64_t cgen_var_648;
9441 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_648, 1);
9442 stream->write((uint64_t*)&cgen_var_648, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009443 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
9444 stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
9445 stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009446 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults readParams");
9447 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009448 mImpl->log("finish vkCmdCopyQueryPoolResults");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009449}
9450
9451void VkEncoder::vkCmdPushConstants(
9452 VkCommandBuffer commandBuffer,
9453 VkPipelineLayout layout,
9454 VkShaderStageFlags stageFlags,
9455 uint32_t offset,
9456 uint32_t size,
9457 const void* pValues)
9458{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009459 AEMU_SCOPED_TRACE("vkCmdPushConstants encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009460 mImpl->log("start vkCmdPushConstants");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009461 auto stream = mImpl->stream();
9462 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009463 auto resources = mImpl->resources();
9464 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009465 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009466 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009467 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009468 VkShaderStageFlags local_stageFlags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009469 uint32_t local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009470 uint32_t local_size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009471 void* local_pValues;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009472 local_commandBuffer = commandBuffer;
9473 local_layout = layout;
9474 local_stageFlags = stageFlags;
9475 local_offset = offset;
9476 local_size = size;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009477 local_pValues = nullptr;
9478 if (pValues)
9479 {
9480 local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
9481 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009482 countingStream->rewind();
9483 {
David Reveman9875f2c2019-06-11 21:47:12 -04009484 uint64_t cgen_var_649;
9485 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
9486 countingStream->write((uint64_t*)&cgen_var_649, 1 * 8);
9487 uint64_t cgen_var_650;
9488 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_650, 1);
9489 countingStream->write((uint64_t*)&cgen_var_650, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009490 countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
9491 countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
9492 countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
9493 countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009494 }
9495 uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9496 countingStream->rewind();
9497 uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
9498 stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
9499 stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009500 uint64_t cgen_var_651;
9501 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_651, 1);
9502 stream->write((uint64_t*)&cgen_var_651, 1 * 8);
9503 uint64_t cgen_var_652;
9504 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_652, 1);
9505 stream->write((uint64_t*)&cgen_var_652, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009506 stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
9507 stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
9508 stream->write((uint32_t*)&local_size, sizeof(uint32_t));
9509 stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009510 AEMU_SCOPED_TRACE("vkCmdPushConstants readParams");
9511 AEMU_SCOPED_TRACE("vkCmdPushConstants returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009512 mImpl->log("finish vkCmdPushConstants");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009513}
9514
9515void VkEncoder::vkCmdBeginRenderPass(
9516 VkCommandBuffer commandBuffer,
9517 const VkRenderPassBeginInfo* pRenderPassBegin,
9518 VkSubpassContents contents)
9519{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009520 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009521 mImpl->log("start vkCmdBeginRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009522 auto stream = mImpl->stream();
9523 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009524 auto resources = mImpl->resources();
9525 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009526 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009527 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009528 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009529 VkSubpassContents local_contents;
9530 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009531 local_pRenderPassBegin = nullptr;
9532 if (pRenderPassBegin)
9533 {
9534 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
9535 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9536 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009537 local_contents = contents;
Lingfeng Yang62b23322018-12-24 12:45:47 -08009538 if (local_pRenderPassBegin)
9539 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009540 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009541 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009542 countingStream->rewind();
9543 {
David Reveman9875f2c2019-06-11 21:47:12 -04009544 uint64_t cgen_var_653;
9545 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_653, 1);
9546 countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009547 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9548 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009549 }
9550 uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9551 countingStream->rewind();
9552 uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
9553 stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
9554 stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009555 uint64_t cgen_var_654;
9556 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_654, 1);
9557 stream->write((uint64_t*)&cgen_var_654, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009558 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9559 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009560 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass readParams");
9561 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009562 mImpl->log("finish vkCmdBeginRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009563}
9564
9565void VkEncoder::vkCmdNextSubpass(
9566 VkCommandBuffer commandBuffer,
9567 VkSubpassContents contents)
9568{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009569 AEMU_SCOPED_TRACE("vkCmdNextSubpass encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009570 mImpl->log("start vkCmdNextSubpass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009571 auto stream = mImpl->stream();
9572 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009573 auto resources = mImpl->resources();
9574 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009575 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009576 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009577 VkSubpassContents local_contents;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009578 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009579 local_contents = contents;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009580 countingStream->rewind();
9581 {
David Reveman9875f2c2019-06-11 21:47:12 -04009582 uint64_t cgen_var_655;
9583 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_655, 1);
9584 countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009585 countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009586 }
9587 uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9588 countingStream->rewind();
9589 uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
9590 stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
9591 stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009592 uint64_t cgen_var_656;
9593 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_656, 1);
9594 stream->write((uint64_t*)&cgen_var_656, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009595 stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009596 AEMU_SCOPED_TRACE("vkCmdNextSubpass readParams");
9597 AEMU_SCOPED_TRACE("vkCmdNextSubpass returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009598 mImpl->log("finish vkCmdNextSubpass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009599}
9600
9601void VkEncoder::vkCmdEndRenderPass(
9602 VkCommandBuffer commandBuffer)
9603{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009604 AEMU_SCOPED_TRACE("vkCmdEndRenderPass encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009605 mImpl->log("start vkCmdEndRenderPass");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009606 auto stream = mImpl->stream();
9607 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009608 auto resources = mImpl->resources();
9609 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009610 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009611 VkCommandBuffer local_commandBuffer;
9612 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009613 countingStream->rewind();
9614 {
David Reveman9875f2c2019-06-11 21:47:12 -04009615 uint64_t cgen_var_657;
9616 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
9617 countingStream->write((uint64_t*)&cgen_var_657, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009618 }
9619 uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9620 countingStream->rewind();
9621 uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
9622 stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
9623 stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009624 uint64_t cgen_var_658;
9625 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_658, 1);
9626 stream->write((uint64_t*)&cgen_var_658, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009627 AEMU_SCOPED_TRACE("vkCmdEndRenderPass readParams");
9628 AEMU_SCOPED_TRACE("vkCmdEndRenderPass returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009629 mImpl->log("finish vkCmdEndRenderPass");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009630}
9631
9632void VkEncoder::vkCmdExecuteCommands(
9633 VkCommandBuffer commandBuffer,
9634 uint32_t commandBufferCount,
9635 const VkCommandBuffer* pCommandBuffers)
9636{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009637 AEMU_SCOPED_TRACE("vkCmdExecuteCommands encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009638 mImpl->log("start vkCmdExecuteCommands");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009639 auto stream = mImpl->stream();
9640 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009641 auto resources = mImpl->resources();
9642 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009643 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009644 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009645 uint32_t local_commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009646 VkCommandBuffer* local_pCommandBuffers;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009647 local_commandBuffer = commandBuffer;
9648 local_commandBufferCount = commandBufferCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009649 local_pCommandBuffers = nullptr;
9650 if (pCommandBuffers)
9651 {
9652 local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
9653 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009654 countingStream->rewind();
9655 {
David Reveman9875f2c2019-06-11 21:47:12 -04009656 uint64_t cgen_var_659;
9657 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_659, 1);
9658 countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009659 countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009660 if (((commandBufferCount)))
9661 {
David Reveman9875f2c2019-06-11 21:47:12 -04009662 uint64_t* cgen_var_660;
9663 countingStream->alloc((void**)&cgen_var_660, ((commandBufferCount)) * 8);
9664 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_660, ((commandBufferCount)));
9665 countingStream->write((uint64_t*)cgen_var_660, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08009666 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009667 }
9668 uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9669 countingStream->rewind();
9670 uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
9671 stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
9672 stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009673 uint64_t cgen_var_661;
9674 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_661, 1);
9675 stream->write((uint64_t*)&cgen_var_661, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009676 stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009677 if (((commandBufferCount)))
9678 {
David Reveman9875f2c2019-06-11 21:47:12 -04009679 uint64_t* cgen_var_662;
9680 stream->alloc((void**)&cgen_var_662, ((commandBufferCount)) * 8);
9681 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_662, ((commandBufferCount)));
9682 stream->write((uint64_t*)cgen_var_662, ((commandBufferCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -08009683 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009684 AEMU_SCOPED_TRACE("vkCmdExecuteCommands readParams");
9685 AEMU_SCOPED_TRACE("vkCmdExecuteCommands returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009686 mImpl->log("finish vkCmdExecuteCommands");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009687}
9688
9689#endif
9690#ifdef VK_VERSION_1_1
9691VkResult VkEncoder::vkEnumerateInstanceVersion(
9692 uint32_t* pApiVersion)
9693{
Lingfeng Yange7391992019-03-15 09:42:13 -07009694 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion encode");
9695 mImpl->log("start vkEnumerateInstanceVersion");
9696 auto stream = mImpl->stream();
9697 auto countingStream = mImpl->countingStream();
9698 auto resources = mImpl->resources();
9699 auto pool = mImpl->pool();
9700 stream->setHandleMapping(resources->unwrapMapping());
9701 countingStream->rewind();
9702 {
9703 countingStream->write((uint32_t*)pApiVersion, sizeof(uint32_t));
9704 }
9705 uint32_t packetSize_vkEnumerateInstanceVersion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9706 countingStream->rewind();
9707 uint32_t opcode_vkEnumerateInstanceVersion = OP_vkEnumerateInstanceVersion;
9708 stream->write(&opcode_vkEnumerateInstanceVersion, sizeof(uint32_t));
9709 stream->write(&packetSize_vkEnumerateInstanceVersion, sizeof(uint32_t));
9710 stream->write((uint32_t*)pApiVersion, sizeof(uint32_t));
9711 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion readParams");
9712 stream->read((uint32_t*)pApiVersion, sizeof(uint32_t));
9713 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009714 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
Lingfeng Yange7391992019-03-15 09:42:13 -07009715 stream->read(&vkEnumerateInstanceVersion_VkResult_return, sizeof(VkResult));
9716 countingStream->clearPool();
9717 stream->clearPool();
9718 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009719 mImpl->log("finish vkEnumerateInstanceVersion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009720 return vkEnumerateInstanceVersion_VkResult_return;
9721}
9722
9723VkResult VkEncoder::vkBindBufferMemory2(
9724 VkDevice device,
9725 uint32_t bindInfoCount,
9726 const VkBindBufferMemoryInfo* pBindInfos)
9727{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009728 AEMU_SCOPED_TRACE("vkBindBufferMemory2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009729 mImpl->log("start vkBindBufferMemory2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009730 auto stream = mImpl->stream();
9731 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009732 auto resources = mImpl->resources();
9733 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009734 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009735 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009736 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009737 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009738 local_device = device;
9739 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009740 local_pBindInfos = nullptr;
9741 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009742 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009743 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009744 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9745 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009746 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
9747 }
9748 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009749 if (local_pBindInfos)
9750 {
9751 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9752 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009753 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009754 }
9755 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009756 countingStream->rewind();
9757 {
David Reveman9875f2c2019-06-11 21:47:12 -04009758 uint64_t cgen_var_663;
9759 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_663, 1);
9760 countingStream->write((uint64_t*)&cgen_var_663, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009761 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9762 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9763 {
9764 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009765 }
9766 }
9767 uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9768 countingStream->rewind();
9769 uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
9770 stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
9771 stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009772 uint64_t cgen_var_664;
9773 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_664, 1);
9774 stream->write((uint64_t*)&cgen_var_664, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009775 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009776 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9777 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009778 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009779 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009780 AEMU_SCOPED_TRACE("vkBindBufferMemory2 readParams");
9781 AEMU_SCOPED_TRACE("vkBindBufferMemory2 returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009782 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
9783 stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009784 countingStream->clearPool();
9785 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009786 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009787 mImpl->log("finish vkBindBufferMemory2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009788 return vkBindBufferMemory2_VkResult_return;
9789}
9790
9791VkResult VkEncoder::vkBindImageMemory2(
9792 VkDevice device,
9793 uint32_t bindInfoCount,
9794 const VkBindImageMemoryInfo* pBindInfos)
9795{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009796 AEMU_SCOPED_TRACE("vkBindImageMemory2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009797 mImpl->log("start vkBindImageMemory2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009798 auto stream = mImpl->stream();
9799 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009800 auto resources = mImpl->resources();
9801 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009802 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009803 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009804 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009805 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009806 local_device = device;
9807 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009808 local_pBindInfos = nullptr;
9809 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009810 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009811 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009812 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9813 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009814 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
9815 }
9816 }
Lingfeng Yang62b23322018-12-24 12:45:47 -08009817 if (local_pBindInfos)
9818 {
9819 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9820 {
Lingfeng Yang97a06702018-12-24 17:02:43 -08009821 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -08009822 }
9823 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009824 countingStream->rewind();
9825 {
David Reveman9875f2c2019-06-11 21:47:12 -04009826 uint64_t cgen_var_665;
9827 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_665, 1);
9828 countingStream->write((uint64_t*)&cgen_var_665, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009829 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9830 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9831 {
9832 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009833 }
9834 }
9835 uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9836 countingStream->rewind();
9837 uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
9838 stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
9839 stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009840 uint64_t cgen_var_666;
9841 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_666, 1);
9842 stream->write((uint64_t*)&cgen_var_666, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009843 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009844 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9845 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009846 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009847 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009848 AEMU_SCOPED_TRACE("vkBindImageMemory2 readParams");
9849 AEMU_SCOPED_TRACE("vkBindImageMemory2 returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009850 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
9851 stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -08009852 countingStream->clearPool();
9853 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009854 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009855 mImpl->log("finish vkBindImageMemory2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009856 return vkBindImageMemory2_VkResult_return;
9857}
9858
9859void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
9860 VkDevice device,
9861 uint32_t heapIndex,
9862 uint32_t localDeviceIndex,
9863 uint32_t remoteDeviceIndex,
9864 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
9865{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009866 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009867 mImpl->log("start vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009868 auto stream = mImpl->stream();
9869 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009870 auto resources = mImpl->resources();
9871 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009872 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009873 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009874 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009875 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009876 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009877 local_device = device;
9878 local_heapIndex = heapIndex;
9879 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009880 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009881 countingStream->rewind();
9882 {
David Reveman9875f2c2019-06-11 21:47:12 -04009883 uint64_t cgen_var_667;
9884 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_667, 1);
9885 countingStream->write((uint64_t*)&cgen_var_667, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009886 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9887 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9888 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009889 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9890 }
9891 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9892 countingStream->rewind();
9893 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
9894 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
9895 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009896 uint64_t cgen_var_668;
9897 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_668, 1);
9898 stream->write((uint64_t*)&cgen_var_668, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009899 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9900 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9901 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009902 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009903 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009904 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009905 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009906 mImpl->log("finish vkGetDeviceGroupPeerMemoryFeatures");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009907}
9908
9909void VkEncoder::vkCmdSetDeviceMask(
9910 VkCommandBuffer commandBuffer,
9911 uint32_t deviceMask)
9912{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009913 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009914 mImpl->log("start vkCmdSetDeviceMask");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009915 auto stream = mImpl->stream();
9916 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009917 auto resources = mImpl->resources();
9918 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009919 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009920 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009921 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009922 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009923 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009924 countingStream->rewind();
9925 {
David Reveman9875f2c2019-06-11 21:47:12 -04009926 uint64_t cgen_var_669;
9927 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_669, 1);
9928 countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009929 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009930 }
9931 uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9932 countingStream->rewind();
9933 uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
9934 stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
9935 stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009936 uint64_t cgen_var_670;
9937 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_670, 1);
9938 stream->write((uint64_t*)&cgen_var_670, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009939 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009940 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask readParams");
9941 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009942 mImpl->log("finish vkCmdSetDeviceMask");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009943}
9944
9945void VkEncoder::vkCmdDispatchBase(
9946 VkCommandBuffer commandBuffer,
9947 uint32_t baseGroupX,
9948 uint32_t baseGroupY,
9949 uint32_t baseGroupZ,
9950 uint32_t groupCountX,
9951 uint32_t groupCountY,
9952 uint32_t groupCountZ)
9953{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08009954 AEMU_SCOPED_TRACE("vkCmdDispatchBase encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -08009955 mImpl->log("start vkCmdDispatchBase");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009956 auto stream = mImpl->stream();
9957 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009958 auto resources = mImpl->resources();
9959 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -08009960 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009961 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009962 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009963 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009964 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009965 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009966 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009967 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -08009968 local_commandBuffer = commandBuffer;
9969 local_baseGroupX = baseGroupX;
9970 local_baseGroupY = baseGroupY;
9971 local_baseGroupZ = baseGroupZ;
9972 local_groupCountX = groupCountX;
9973 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009974 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009975 countingStream->rewind();
9976 {
David Reveman9875f2c2019-06-11 21:47:12 -04009977 uint64_t cgen_var_671;
9978 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_671, 1);
9979 countingStream->write((uint64_t*)&cgen_var_671, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009980 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9981 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9982 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9983 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9984 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9985 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -07009986 }
9987 uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9988 countingStream->rewind();
9989 uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
9990 stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
9991 stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -04009992 uint64_t cgen_var_672;
9993 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_672, 1);
9994 stream->write((uint64_t*)&cgen_var_672, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -08009995 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9996 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9997 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9998 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9999 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
10000 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010001 AEMU_SCOPED_TRACE("vkCmdDispatchBase readParams");
10002 AEMU_SCOPED_TRACE("vkCmdDispatchBase returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010003 mImpl->log("finish vkCmdDispatchBase");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010004}
10005
10006VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
10007 VkInstance instance,
10008 uint32_t* pPhysicalDeviceGroupCount,
10009 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
10010{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010011 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010012 mImpl->log("start vkEnumeratePhysicalDeviceGroups");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010013 auto stream = mImpl->stream();
10014 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010015 auto resources = mImpl->resources();
10016 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010017 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010018 VkInstance local_instance;
10019 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010020 countingStream->rewind();
10021 {
David Reveman9875f2c2019-06-11 21:47:12 -040010022 uint64_t cgen_var_673;
10023 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_673, 1);
10024 countingStream->write((uint64_t*)&cgen_var_673, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010025 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010026 uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
10027 countingStream->putBe64(cgen_var_674);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010028 if (pPhysicalDeviceGroupCount)
10029 {
10030 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
10031 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010032 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010033 uint64_t cgen_var_675 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
10034 countingStream->putBe64(cgen_var_675);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010035 if (pPhysicalDeviceGroupProperties)
10036 {
10037 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10038 {
10039 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10040 }
10041 }
10042 }
10043 uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10044 countingStream->rewind();
10045 uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
10046 stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
10047 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010048 uint64_t cgen_var_676;
10049 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_676, 1);
10050 stream->write((uint64_t*)&cgen_var_676, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010051 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010052 uint64_t cgen_var_677 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
10053 stream->putBe64(cgen_var_677);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010054 if (pPhysicalDeviceGroupCount)
10055 {
10056 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
10057 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010058 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010059 uint64_t cgen_var_678 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
10060 stream->putBe64(cgen_var_678);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010061 if (pPhysicalDeviceGroupProperties)
10062 {
10063 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10064 {
10065 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10066 }
10067 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010068 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010069 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010070 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010071 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010072 if (pPhysicalDeviceGroupCount)
10073 {
10074 if (!(check_pPhysicalDeviceGroupCount))
10075 {
10076 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
10077 }
10078 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
10079 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010080 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010081 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010082 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010083 if (pPhysicalDeviceGroupProperties)
10084 {
10085 if (!(check_pPhysicalDeviceGroupProperties))
10086 {
10087 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
10088 }
10089 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10090 {
10091 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10092 }
10093 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010094 if (pPhysicalDeviceGroupProperties)
10095 {
10096 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10097 {
10098 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10099 }
10100 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010101 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010102 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
10103 stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010104 countingStream->clearPool();
10105 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010106 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010107 mImpl->log("finish vkEnumeratePhysicalDeviceGroups");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010108 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
10109}
10110
10111void VkEncoder::vkGetImageMemoryRequirements2(
10112 VkDevice device,
10113 const VkImageMemoryRequirementsInfo2* pInfo,
10114 VkMemoryRequirements2* pMemoryRequirements)
10115{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010116 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010117 mImpl->log("start vkGetImageMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010118 auto stream = mImpl->stream();
10119 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010120 auto resources = mImpl->resources();
10121 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010122 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010123 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010124 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010125 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010126 local_pInfo = nullptr;
10127 if (pInfo)
10128 {
10129 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
10130 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
10131 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010132 if (local_pInfo)
10133 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010134 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010135 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010136 countingStream->rewind();
10137 {
David Reveman9875f2c2019-06-11 21:47:12 -040010138 uint64_t cgen_var_681;
10139 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_681, 1);
10140 countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010141 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010142 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
10143 }
10144 uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10145 countingStream->rewind();
10146 uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
10147 stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
10148 stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010149 uint64_t cgen_var_682;
10150 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_682, 1);
10151 stream->write((uint64_t*)&cgen_var_682, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010152 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010153 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010154 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010155 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010156 if (pMemoryRequirements)
10157 {
10158 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
10159 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010160 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010161 mImpl->log("finish vkGetImageMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010162}
10163
10164void VkEncoder::vkGetBufferMemoryRequirements2(
10165 VkDevice device,
10166 const VkBufferMemoryRequirementsInfo2* pInfo,
10167 VkMemoryRequirements2* pMemoryRequirements)
10168{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010169 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010170 mImpl->log("start vkGetBufferMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010171 auto stream = mImpl->stream();
10172 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010173 auto resources = mImpl->resources();
10174 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010175 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010176 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010177 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010178 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010179 local_pInfo = nullptr;
10180 if (pInfo)
10181 {
10182 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
10183 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
10184 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010185 if (local_pInfo)
10186 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010187 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010188 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010189 countingStream->rewind();
10190 {
David Reveman9875f2c2019-06-11 21:47:12 -040010191 uint64_t cgen_var_683;
10192 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_683, 1);
10193 countingStream->write((uint64_t*)&cgen_var_683, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010194 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010195 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
10196 }
10197 uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10198 countingStream->rewind();
10199 uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
10200 stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
10201 stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010202 uint64_t cgen_var_684;
10203 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_684, 1);
10204 stream->write((uint64_t*)&cgen_var_684, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010205 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010206 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010207 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010208 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010209 if (pMemoryRequirements)
10210 {
10211 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
10212 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010213 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010214 mImpl->log("finish vkGetBufferMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010215}
10216
10217void VkEncoder::vkGetImageSparseMemoryRequirements2(
10218 VkDevice device,
10219 const VkImageSparseMemoryRequirementsInfo2* pInfo,
10220 uint32_t* pSparseMemoryRequirementCount,
10221 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
10222{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010223 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010224 mImpl->log("start vkGetImageSparseMemoryRequirements2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010225 auto stream = mImpl->stream();
10226 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010227 auto resources = mImpl->resources();
10228 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010229 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010230 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010231 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010232 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010233 local_pInfo = nullptr;
10234 if (pInfo)
10235 {
10236 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
10237 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
10238 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010239 if (local_pInfo)
10240 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010241 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010242 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010243 countingStream->rewind();
10244 {
David Reveman9875f2c2019-06-11 21:47:12 -040010245 uint64_t cgen_var_685;
10246 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_685, 1);
10247 countingStream->write((uint64_t*)&cgen_var_685, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010248 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010249 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010250 uint64_t cgen_var_686 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
10251 countingStream->putBe64(cgen_var_686);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010252 if (pSparseMemoryRequirementCount)
10253 {
10254 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
10255 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010256 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010257 uint64_t cgen_var_687 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
10258 countingStream->putBe64(cgen_var_687);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010259 if (pSparseMemoryRequirements)
10260 {
10261 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10262 {
10263 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10264 }
10265 }
10266 }
10267 uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10268 countingStream->rewind();
10269 uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
10270 stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
10271 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010272 uint64_t cgen_var_688;
10273 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_688, 1);
10274 stream->write((uint64_t*)&cgen_var_688, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010275 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010276 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010277 uint64_t cgen_var_689 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
10278 stream->putBe64(cgen_var_689);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010279 if (pSparseMemoryRequirementCount)
10280 {
10281 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
10282 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010283 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010284 uint64_t cgen_var_690 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
10285 stream->putBe64(cgen_var_690);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010286 if (pSparseMemoryRequirements)
10287 {
10288 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10289 {
10290 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10291 }
10292 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010293 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010294 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010295 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010296 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010297 if (pSparseMemoryRequirementCount)
10298 {
10299 if (!(check_pSparseMemoryRequirementCount))
10300 {
10301 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
10302 }
10303 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
10304 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010305 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010306 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010307 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010308 if (pSparseMemoryRequirements)
10309 {
10310 if (!(check_pSparseMemoryRequirements))
10311 {
10312 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
10313 }
10314 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10315 {
10316 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10317 }
10318 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010319 if (pSparseMemoryRequirements)
10320 {
10321 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10322 {
10323 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10324 }
10325 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010326 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010327 mImpl->log("finish vkGetImageSparseMemoryRequirements2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010328}
10329
10330void VkEncoder::vkGetPhysicalDeviceFeatures2(
10331 VkPhysicalDevice physicalDevice,
10332 VkPhysicalDeviceFeatures2* pFeatures)
10333{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010334 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010335 mImpl->log("start vkGetPhysicalDeviceFeatures2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010336 auto stream = mImpl->stream();
10337 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010338 auto resources = mImpl->resources();
10339 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010340 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010341 VkPhysicalDevice local_physicalDevice;
10342 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010343 countingStream->rewind();
10344 {
David Reveman9875f2c2019-06-11 21:47:12 -040010345 uint64_t cgen_var_693;
10346 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_693, 1);
10347 countingStream->write((uint64_t*)&cgen_var_693, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010348 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
10349 }
10350 uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10351 countingStream->rewind();
10352 uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
10353 stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
10354 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010355 uint64_t cgen_var_694;
10356 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_694, 1);
10357 stream->write((uint64_t*)&cgen_var_694, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010358 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010359 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010360 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010361 if (pFeatures)
10362 {
10363 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
10364 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010365 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010366 mImpl->log("finish vkGetPhysicalDeviceFeatures2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010367}
10368
10369void VkEncoder::vkGetPhysicalDeviceProperties2(
10370 VkPhysicalDevice physicalDevice,
10371 VkPhysicalDeviceProperties2* pProperties)
10372{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010373 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 encode");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010374 mImpl->log("start vkGetPhysicalDeviceProperties2");
10375 auto stream = mImpl->stream();
10376 auto countingStream = mImpl->countingStream();
10377 auto resources = mImpl->resources();
10378 auto pool = mImpl->pool();
10379 stream->setHandleMapping(resources->unwrapMapping());
10380 VkPhysicalDevice local_physicalDevice;
10381 local_physicalDevice = physicalDevice;
10382 countingStream->rewind();
10383 {
David Reveman9875f2c2019-06-11 21:47:12 -040010384 uint64_t cgen_var_695;
10385 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
10386 countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010387 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
10388 }
10389 uint32_t packetSize_vkGetPhysicalDeviceProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10390 countingStream->rewind();
10391 uint32_t opcode_vkGetPhysicalDeviceProperties2 = OP_vkGetPhysicalDeviceProperties2;
10392 stream->write(&opcode_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
10393 stream->write(&packetSize_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010394 uint64_t cgen_var_696;
10395 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
10396 stream->write((uint64_t*)&cgen_var_696, 1 * 8);
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010397 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010398 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 readParams");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010399 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
10400 if (pProperties)
10401 {
10402 transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
10403 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010404 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 returnUnmarshal");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010405 mImpl->log("finish vkGetPhysicalDeviceProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010406}
10407
10408void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
10409 VkPhysicalDevice physicalDevice,
10410 VkFormat format,
10411 VkFormatProperties2* pFormatProperties)
10412{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010413 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010414 mImpl->log("start vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010415 auto stream = mImpl->stream();
10416 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010417 auto resources = mImpl->resources();
10418 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010419 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010420 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010421 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010422 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010423 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010424 countingStream->rewind();
10425 {
David Reveman9875f2c2019-06-11 21:47:12 -040010426 uint64_t cgen_var_697;
10427 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
10428 countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010429 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010430 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
10431 }
10432 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10433 countingStream->rewind();
10434 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
10435 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
10436 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010437 uint64_t cgen_var_698;
10438 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_698, 1);
10439 stream->write((uint64_t*)&cgen_var_698, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010440 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010441 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010442 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010443 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010444 if (pFormatProperties)
10445 {
10446 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
10447 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010448 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010449 mImpl->log("finish vkGetPhysicalDeviceFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010450}
10451
10452VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
10453 VkPhysicalDevice physicalDevice,
10454 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
10455 VkImageFormatProperties2* pImageFormatProperties)
10456{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010457 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010458 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010459 auto stream = mImpl->stream();
10460 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010461 auto resources = mImpl->resources();
10462 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010463 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010464 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010465 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010466 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010467 local_pImageFormatInfo = nullptr;
10468 if (pImageFormatInfo)
10469 {
10470 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
10471 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
10472 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010473 if (local_pImageFormatInfo)
10474 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010475 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010476 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010477 countingStream->rewind();
10478 {
David Reveman9875f2c2019-06-11 21:47:12 -040010479 uint64_t cgen_var_699;
10480 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_699, 1);
10481 countingStream->write((uint64_t*)&cgen_var_699, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010482 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010483 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
10484 }
10485 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10486 countingStream->rewind();
10487 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
10488 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
10489 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010490 uint64_t cgen_var_700;
10491 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
10492 stream->write((uint64_t*)&cgen_var_700, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010493 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010494 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010495 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010496 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010497 if (pImageFormatProperties)
10498 {
10499 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
10500 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010501 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010502 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
10503 stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010504 countingStream->clearPool();
10505 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010506 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010507 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010508 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
10509}
10510
10511void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
10512 VkPhysicalDevice physicalDevice,
10513 uint32_t* pQueueFamilyPropertyCount,
10514 VkQueueFamilyProperties2* pQueueFamilyProperties)
10515{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010516 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010517 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010518 auto stream = mImpl->stream();
10519 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010520 auto resources = mImpl->resources();
10521 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010522 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010523 VkPhysicalDevice local_physicalDevice;
10524 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010525 countingStream->rewind();
10526 {
David Reveman9875f2c2019-06-11 21:47:12 -040010527 uint64_t cgen_var_701;
10528 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_701, 1);
10529 countingStream->write((uint64_t*)&cgen_var_701, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010530 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010531 uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
10532 countingStream->putBe64(cgen_var_702);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010533 if (pQueueFamilyPropertyCount)
10534 {
10535 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10536 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010537 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010538 uint64_t cgen_var_703 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
10539 countingStream->putBe64(cgen_var_703);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010540 if (pQueueFamilyProperties)
10541 {
10542 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10543 {
10544 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10545 }
10546 }
10547 }
10548 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10549 countingStream->rewind();
10550 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
10551 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
10552 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010553 uint64_t cgen_var_704;
10554 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_704, 1);
10555 stream->write((uint64_t*)&cgen_var_704, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010556 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010557 uint64_t cgen_var_705 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
10558 stream->putBe64(cgen_var_705);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010559 if (pQueueFamilyPropertyCount)
10560 {
10561 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10562 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010563 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010564 uint64_t cgen_var_706 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
10565 stream->putBe64(cgen_var_706);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010566 if (pQueueFamilyProperties)
10567 {
10568 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10569 {
10570 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10571 }
10572 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010573 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010574 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010575 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010576 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010577 if (pQueueFamilyPropertyCount)
10578 {
10579 if (!(check_pQueueFamilyPropertyCount))
10580 {
10581 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
10582 }
10583 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10584 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010585 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010586 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010587 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010588 if (pQueueFamilyProperties)
10589 {
10590 if (!(check_pQueueFamilyProperties))
10591 {
10592 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
10593 }
10594 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10595 {
10596 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10597 }
10598 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010599 if (pQueueFamilyProperties)
10600 {
10601 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10602 {
10603 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10604 }
10605 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010606 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010607 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010608}
10609
10610void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
10611 VkPhysicalDevice physicalDevice,
10612 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
10613{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010614 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010615 mImpl->log("start vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010616 auto stream = mImpl->stream();
10617 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010618 auto resources = mImpl->resources();
10619 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010620 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010621 VkPhysicalDevice local_physicalDevice;
10622 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010623 countingStream->rewind();
10624 {
David Reveman9875f2c2019-06-11 21:47:12 -040010625 uint64_t cgen_var_709;
10626 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_709, 1);
10627 countingStream->write((uint64_t*)&cgen_var_709, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010628 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10629 }
10630 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10631 countingStream->rewind();
10632 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
10633 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
10634 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010635 uint64_t cgen_var_710;
10636 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_710, 1);
10637 stream->write((uint64_t*)&cgen_var_710, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010638 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010639 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010640 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080010641 if (pMemoryProperties)
10642 {
10643 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10644 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010645 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 returnUnmarshal");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080010646 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010647 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010648}
10649
10650void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
10651 VkPhysicalDevice physicalDevice,
10652 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
10653 uint32_t* pPropertyCount,
10654 VkSparseImageFormatProperties2* pProperties)
10655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010656 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010657 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010658 auto stream = mImpl->stream();
10659 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010660 auto resources = mImpl->resources();
10661 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010663 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010664 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010665 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010666 local_pFormatInfo = nullptr;
10667 if (pFormatInfo)
10668 {
10669 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
10670 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
10671 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010672 if (local_pFormatInfo)
10673 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010674 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010675 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010676 countingStream->rewind();
10677 {
David Reveman9875f2c2019-06-11 21:47:12 -040010678 uint64_t cgen_var_711;
10679 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_711, 1);
10680 countingStream->write((uint64_t*)&cgen_var_711, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010681 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010682 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010683 uint64_t cgen_var_712 = (uint64_t)(uintptr_t)pPropertyCount;
10684 countingStream->putBe64(cgen_var_712);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010685 if (pPropertyCount)
10686 {
10687 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10688 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010689 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010690 uint64_t cgen_var_713 = (uint64_t)(uintptr_t)pProperties;
10691 countingStream->putBe64(cgen_var_713);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010692 if (pProperties)
10693 {
10694 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10695 {
10696 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
10697 }
10698 }
10699 }
10700 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10701 countingStream->rewind();
10702 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
10703 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
10704 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010705 uint64_t cgen_var_714;
10706 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_714, 1);
10707 stream->write((uint64_t*)&cgen_var_714, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010708 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010709 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010710 uint64_t cgen_var_715 = (uint64_t)(uintptr_t)pPropertyCount;
10711 stream->putBe64(cgen_var_715);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010712 if (pPropertyCount)
10713 {
10714 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10715 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010716 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010717 uint64_t cgen_var_716 = (uint64_t)(uintptr_t)pProperties;
10718 stream->putBe64(cgen_var_716);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010719 if (pProperties)
10720 {
10721 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10722 {
10723 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10724 }
10725 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010726 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010727 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010728 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010729 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010730 if (pPropertyCount)
10731 {
10732 if (!(check_pPropertyCount))
10733 {
10734 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10735 }
10736 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10737 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010738 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010739 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010740 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010741 if (pProperties)
10742 {
10743 if (!(check_pProperties))
10744 {
10745 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10746 }
10747 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10748 {
10749 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10750 }
10751 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080010752 if (pProperties)
10753 {
10754 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10755 {
10756 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
10757 }
10758 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010759 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010760 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010761}
10762
10763void VkEncoder::vkTrimCommandPool(
10764 VkDevice device,
10765 VkCommandPool commandPool,
10766 VkCommandPoolTrimFlags flags)
10767{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010768 AEMU_SCOPED_TRACE("vkTrimCommandPool encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010769 mImpl->log("start vkTrimCommandPool");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010770 auto stream = mImpl->stream();
10771 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010772 auto resources = mImpl->resources();
10773 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010774 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010775 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010776 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010777 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010778 local_device = device;
10779 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010780 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010781 countingStream->rewind();
10782 {
David Reveman9875f2c2019-06-11 21:47:12 -040010783 uint64_t cgen_var_719;
10784 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_719, 1);
10785 countingStream->write((uint64_t*)&cgen_var_719, 1 * 8);
10786 uint64_t cgen_var_720;
10787 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_720, 1);
10788 countingStream->write((uint64_t*)&cgen_var_720, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010789 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010790 }
10791 uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10792 countingStream->rewind();
10793 uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
10794 stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
10795 stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010796 uint64_t cgen_var_721;
10797 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
10798 stream->write((uint64_t*)&cgen_var_721, 1 * 8);
10799 uint64_t cgen_var_722;
10800 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_722, 1);
10801 stream->write((uint64_t*)&cgen_var_722, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010802 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010803 AEMU_SCOPED_TRACE("vkTrimCommandPool readParams");
10804 AEMU_SCOPED_TRACE("vkTrimCommandPool returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010805 mImpl->log("finish vkTrimCommandPool");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010806}
10807
10808void VkEncoder::vkGetDeviceQueue2(
10809 VkDevice device,
10810 const VkDeviceQueueInfo2* pQueueInfo,
10811 VkQueue* pQueue)
10812{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010813 AEMU_SCOPED_TRACE("vkGetDeviceQueue2 encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010814 mImpl->log("start vkGetDeviceQueue2");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010815 auto stream = mImpl->stream();
10816 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010817 auto resources = mImpl->resources();
10818 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010819 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010820 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010821 VkDeviceQueueInfo2* local_pQueueInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010822 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010823 local_pQueueInfo = nullptr;
10824 if (pQueueInfo)
10825 {
10826 local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
10827 deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
10828 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080010829 if (local_pQueueInfo)
10830 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010831 transform_tohost_VkDeviceQueueInfo2(mImpl->resources(), (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010832 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010833 countingStream->rewind();
10834 {
David Reveman9875f2c2019-06-11 21:47:12 -040010835 uint64_t cgen_var_723;
10836 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_723, 1);
10837 countingStream->write((uint64_t*)&cgen_var_723, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010838 marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
David Reveman9875f2c2019-06-11 21:47:12 -040010839 uint64_t cgen_var_724;
10840 countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_724, 1);
10841 countingStream->write((uint64_t*)&cgen_var_724, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010842 }
10843 uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10844 countingStream->rewind();
10845 uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
10846 stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
10847 stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010848 uint64_t cgen_var_725;
10849 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_725, 1);
10850 stream->write((uint64_t*)&cgen_var_725, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010851 marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
Lingfeng Yange4008a02018-11-18 12:22:48 -080010852 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040010853 uint64_t cgen_var_726;
10854 stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_726, 1);
10855 stream->write((uint64_t*)&cgen_var_726, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010856 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010857 AEMU_SCOPED_TRACE("vkGetDeviceQueue2 readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040010858 uint64_t cgen_var_727;
10859 stream->read((uint64_t*)&cgen_var_727, 8);
10860 stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_727, (VkQueue*)pQueue, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010861 AEMU_SCOPED_TRACE("vkGetDeviceQueue2 returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010862 mImpl->log("finish vkGetDeviceQueue2");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010863}
10864
10865VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
10866 VkDevice device,
10867 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
10868 const VkAllocationCallbacks* pAllocator,
10869 VkSamplerYcbcrConversion* pYcbcrConversion)
10870{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010871 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010872 mImpl->log("start vkCreateSamplerYcbcrConversion");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010873 auto stream = mImpl->stream();
10874 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010875 auto resources = mImpl->resources();
10876 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010877 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010878 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010879 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010880 VkAllocationCallbacks* local_pAllocator;
10881 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010882 local_pCreateInfo = nullptr;
10883 if (pCreateInfo)
10884 {
10885 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
10886 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
10887 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010888 local_pAllocator = nullptr;
10889 if (pAllocator)
10890 {
10891 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10892 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10893 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010894 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010895 if (local_pCreateInfo)
10896 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010897 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010898 }
10899 if (local_pAllocator)
10900 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010901 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010902 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010903 countingStream->rewind();
10904 {
David Reveman9875f2c2019-06-11 21:47:12 -040010905 uint64_t cgen_var_728;
10906 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_728, 1);
10907 countingStream->write((uint64_t*)&cgen_var_728, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010908 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010909 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010910 uint64_t cgen_var_729 = (uint64_t)(uintptr_t)local_pAllocator;
10911 countingStream->putBe64(cgen_var_729);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010912 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010913 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010914 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010915 }
David Reveman9875f2c2019-06-11 21:47:12 -040010916 uint64_t cgen_var_730;
10917 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_730, 1);
10918 countingStream->write((uint64_t*)&cgen_var_730, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010919 }
10920 uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10921 countingStream->rewind();
10922 uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
10923 stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
10924 stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040010925 uint64_t cgen_var_731;
10926 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_731, 1);
10927 stream->write((uint64_t*)&cgen_var_731, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010928 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010929 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010930 uint64_t cgen_var_732 = (uint64_t)(uintptr_t)local_pAllocator;
10931 stream->putBe64(cgen_var_732);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010932 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010933 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010934 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010935 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080010936 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040010937 uint64_t cgen_var_733;
10938 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_733, 1);
10939 stream->write((uint64_t*)&cgen_var_733, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010940 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010941 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080010942 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -040010943 uint64_t cgen_var_734;
10944 stream->read((uint64_t*)&cgen_var_734, 8);
10945 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_734, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080010946 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010947 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010948 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
10949 stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080010950 countingStream->clearPool();
10951 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010952 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010953 mImpl->log("finish vkCreateSamplerYcbcrConversion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010954 return vkCreateSamplerYcbcrConversion_VkResult_return;
10955}
10956
10957void VkEncoder::vkDestroySamplerYcbcrConversion(
10958 VkDevice device,
10959 VkSamplerYcbcrConversion ycbcrConversion,
10960 const VkAllocationCallbacks* pAllocator)
10961{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080010962 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080010963 mImpl->log("start vkDestroySamplerYcbcrConversion");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010964 auto stream = mImpl->stream();
10965 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010966 auto resources = mImpl->resources();
10967 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080010968 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010969 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010970 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010971 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080010972 local_device = device;
10973 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010974 local_pAllocator = nullptr;
10975 if (pAllocator)
10976 {
10977 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10978 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10979 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080010980 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080010981 if (local_pAllocator)
10982 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080010983 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080010984 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010985 countingStream->rewind();
10986 {
David Reveman9875f2c2019-06-11 21:47:12 -040010987 uint64_t cgen_var_735;
10988 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_735, 1);
10989 countingStream->write((uint64_t*)&cgen_var_735, 1 * 8);
10990 uint64_t cgen_var_736;
10991 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_736, 1);
10992 countingStream->write((uint64_t*)&cgen_var_736, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080010993 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040010994 uint64_t cgen_var_737 = (uint64_t)(uintptr_t)local_pAllocator;
10995 countingStream->putBe64(cgen_var_737);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010996 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010997 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080010998 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070010999 }
11000 }
11001 uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11002 countingStream->rewind();
11003 uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
11004 stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
11005 stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011006 uint64_t cgen_var_738;
11007 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_738, 1);
11008 stream->write((uint64_t*)&cgen_var_738, 1 * 8);
11009 uint64_t cgen_var_739;
11010 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_739, 1);
11011 stream->write((uint64_t*)&cgen_var_739, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011012 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011013 uint64_t cgen_var_740 = (uint64_t)(uintptr_t)local_pAllocator;
11014 stream->putBe64(cgen_var_740);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011015 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011016 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011017 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011018 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011019 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion readParams");
11020 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011021 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011022 mImpl->log("finish vkDestroySamplerYcbcrConversion");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011023}
11024
11025VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
11026 VkDevice device,
11027 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
11028 const VkAllocationCallbacks* pAllocator,
11029 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
11030{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011031 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011032 mImpl->log("start vkCreateDescriptorUpdateTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011033 auto stream = mImpl->stream();
11034 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011035 auto resources = mImpl->resources();
11036 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011037 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011038 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011039 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011040 VkAllocationCallbacks* local_pAllocator;
11041 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011042 local_pCreateInfo = nullptr;
11043 if (pCreateInfo)
11044 {
11045 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
11046 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
11047 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011048 local_pAllocator = nullptr;
11049 if (pAllocator)
11050 {
11051 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11052 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11053 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011054 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011055 if (local_pCreateInfo)
11056 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011057 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011058 }
11059 if (local_pAllocator)
11060 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011061 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011062 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011063 countingStream->rewind();
11064 {
David Reveman9875f2c2019-06-11 21:47:12 -040011065 uint64_t cgen_var_741;
11066 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_741, 1);
11067 countingStream->write((uint64_t*)&cgen_var_741, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011068 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011069 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011070 uint64_t cgen_var_742 = (uint64_t)(uintptr_t)local_pAllocator;
11071 countingStream->putBe64(cgen_var_742);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011072 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011073 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011074 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011075 }
David Reveman9875f2c2019-06-11 21:47:12 -040011076 uint64_t cgen_var_743;
11077 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_743, 1);
11078 countingStream->write((uint64_t*)&cgen_var_743, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011079 }
11080 uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11081 countingStream->rewind();
11082 uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
11083 stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
11084 stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011085 uint64_t cgen_var_744;
11086 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
11087 stream->write((uint64_t*)&cgen_var_744, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011088 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011089 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011090 uint64_t cgen_var_745 = (uint64_t)(uintptr_t)local_pAllocator;
11091 stream->putBe64(cgen_var_745);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011092 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011093 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011094 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011095 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011096 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040011097 uint64_t cgen_var_746;
11098 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_746, 1);
11099 stream->write((uint64_t*)&cgen_var_746, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011100 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011101 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080011102 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -040011103 uint64_t cgen_var_747;
11104 stream->read((uint64_t*)&cgen_var_747, 8);
11105 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_747, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011106 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011107 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011108 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
11109 stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011110 countingStream->clearPool();
11111 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011112 pool->freeAll();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070011113 mImpl->resources()->on_vkCreateDescriptorUpdateTemplate(this, vkCreateDescriptorUpdateTemplate_VkResult_return, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011114 mImpl->log("finish vkCreateDescriptorUpdateTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011115 return vkCreateDescriptorUpdateTemplate_VkResult_return;
11116}
11117
11118void VkEncoder::vkDestroyDescriptorUpdateTemplate(
11119 VkDevice device,
11120 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
11121 const VkAllocationCallbacks* pAllocator)
11122{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011123 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011124 mImpl->log("start vkDestroyDescriptorUpdateTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011125 auto stream = mImpl->stream();
11126 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011127 auto resources = mImpl->resources();
11128 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011129 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011130 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011131 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011132 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011133 local_device = device;
11134 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011135 local_pAllocator = nullptr;
11136 if (pAllocator)
11137 {
11138 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11139 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11140 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011141 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011142 if (local_pAllocator)
11143 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011144 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011145 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011146 countingStream->rewind();
11147 {
David Reveman9875f2c2019-06-11 21:47:12 -040011148 uint64_t cgen_var_748;
11149 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_748, 1);
11150 countingStream->write((uint64_t*)&cgen_var_748, 1 * 8);
11151 uint64_t cgen_var_749;
11152 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_749, 1);
11153 countingStream->write((uint64_t*)&cgen_var_749, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011154 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011155 uint64_t cgen_var_750 = (uint64_t)(uintptr_t)local_pAllocator;
11156 countingStream->putBe64(cgen_var_750);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011157 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011158 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011159 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011160 }
11161 }
11162 uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11163 countingStream->rewind();
11164 uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
11165 stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
11166 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011167 uint64_t cgen_var_751;
11168 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_751, 1);
11169 stream->write((uint64_t*)&cgen_var_751, 1 * 8);
11170 uint64_t cgen_var_752;
11171 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_752, 1);
11172 stream->write((uint64_t*)&cgen_var_752, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011173 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011174 uint64_t cgen_var_753 = (uint64_t)(uintptr_t)local_pAllocator;
11175 stream->putBe64(cgen_var_753);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011176 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011177 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011178 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011179 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011180 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate readParams");
11181 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011182 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011183 mImpl->log("finish vkDestroyDescriptorUpdateTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011184}
11185
11186void VkEncoder::vkUpdateDescriptorSetWithTemplate(
11187 VkDevice device,
11188 VkDescriptorSet descriptorSet,
11189 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
11190 const void* pData)
11191{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011192 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011193 mImpl->log("start vkUpdateDescriptorSetWithTemplate");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011194 auto stream = mImpl->stream();
11195 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011196 auto resources = mImpl->resources();
11197 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011198 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011199 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011200 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011201 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011202 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011203 local_device = device;
11204 local_descriptorSet = descriptorSet;
11205 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011206 local_pData = nullptr;
11207 if (pData)
11208 {
11209 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
11210 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011211 countingStream->rewind();
11212 {
David Reveman9875f2c2019-06-11 21:47:12 -040011213 uint64_t cgen_var_754;
11214 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
11215 countingStream->write((uint64_t*)&cgen_var_754, 1 * 8);
11216 uint64_t cgen_var_755;
11217 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_755, 1);
11218 countingStream->write((uint64_t*)&cgen_var_755, 1 * 8);
11219 uint64_t cgen_var_756;
11220 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_756, 1);
11221 countingStream->write((uint64_t*)&cgen_var_756, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011222 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011223 uint64_t cgen_var_757 = (uint64_t)(uintptr_t)local_pData;
11224 countingStream->putBe64(cgen_var_757);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011225 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011226 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011227 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011228 }
11229 }
11230 uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11231 countingStream->rewind();
11232 uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
11233 stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
11234 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011235 uint64_t cgen_var_758;
11236 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_758, 1);
11237 stream->write((uint64_t*)&cgen_var_758, 1 * 8);
11238 uint64_t cgen_var_759;
11239 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_759, 1);
11240 stream->write((uint64_t*)&cgen_var_759, 1 * 8);
11241 uint64_t cgen_var_760;
11242 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_760, 1);
11243 stream->write((uint64_t*)&cgen_var_760, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011244 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011245 uint64_t cgen_var_761 = (uint64_t)(uintptr_t)local_pData;
11246 stream->putBe64(cgen_var_761);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011247 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011248 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011249 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011250 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011251 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate readParams");
11252 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011253 mImpl->log("finish vkUpdateDescriptorSetWithTemplate");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011254}
11255
11256void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
11257 VkPhysicalDevice physicalDevice,
11258 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
11259 VkExternalBufferProperties* pExternalBufferProperties)
11260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011261 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011262 mImpl->log("start vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011263 auto stream = mImpl->stream();
11264 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011265 auto resources = mImpl->resources();
11266 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011267 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011268 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011269 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011270 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011271 local_pExternalBufferInfo = nullptr;
11272 if (pExternalBufferInfo)
11273 {
11274 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
11275 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
11276 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011277 if (local_pExternalBufferInfo)
11278 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080011279 mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080011280 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011281 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011282 countingStream->rewind();
11283 {
David Reveman9875f2c2019-06-11 21:47:12 -040011284 uint64_t cgen_var_762;
11285 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
11286 countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011287 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011288 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
11289 }
11290 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11291 countingStream->rewind();
11292 uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
11293 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
11294 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011295 uint64_t cgen_var_763;
11296 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_763, 1);
11297 stream->write((uint64_t*)&cgen_var_763, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011298 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011299 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011300 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011301 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011302 if (pExternalBufferProperties)
11303 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080011304 mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080011305 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
11306 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011307 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011308 mImpl->log("finish vkGetPhysicalDeviceExternalBufferProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011309}
11310
11311void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
11312 VkPhysicalDevice physicalDevice,
11313 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
11314 VkExternalFenceProperties* pExternalFenceProperties)
11315{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011316 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011317 mImpl->log("start vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011318 auto stream = mImpl->stream();
11319 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011320 auto resources = mImpl->resources();
11321 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011322 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011323 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011324 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011325 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011326 local_pExternalFenceInfo = nullptr;
11327 if (pExternalFenceInfo)
11328 {
11329 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
11330 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
11331 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011332 if (local_pExternalFenceInfo)
11333 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011334 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011335 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011336 countingStream->rewind();
11337 {
David Reveman9875f2c2019-06-11 21:47:12 -040011338 uint64_t cgen_var_764;
11339 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_764, 1);
11340 countingStream->write((uint64_t*)&cgen_var_764, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011341 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011342 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
11343 }
11344 uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11345 countingStream->rewind();
11346 uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
11347 stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
11348 stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011349 uint64_t cgen_var_765;
11350 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_765, 1);
11351 stream->write((uint64_t*)&cgen_var_765, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011352 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011353 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011354 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011355 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011356 if (pExternalFenceProperties)
11357 {
11358 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
11359 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011360 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011361 mImpl->log("finish vkGetPhysicalDeviceExternalFenceProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011362}
11363
11364void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
11365 VkPhysicalDevice physicalDevice,
11366 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
11367 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
11368{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011369 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011370 mImpl->log("start vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011371 auto stream = mImpl->stream();
11372 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011373 auto resources = mImpl->resources();
11374 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011375 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011376 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011377 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011378 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011379 local_pExternalSemaphoreInfo = nullptr;
11380 if (pExternalSemaphoreInfo)
11381 {
11382 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
11383 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
11384 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011385 if (local_pExternalSemaphoreInfo)
11386 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011387 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011388 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011389 countingStream->rewind();
11390 {
David Reveman9875f2c2019-06-11 21:47:12 -040011391 uint64_t cgen_var_766;
11392 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_766, 1);
11393 countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011394 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011395 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
11396 }
11397 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11398 countingStream->rewind();
11399 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
11400 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
11401 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011402 uint64_t cgen_var_767;
11403 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_767, 1);
11404 stream->write((uint64_t*)&cgen_var_767, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011405 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011406 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011407 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011408 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011409 if (pExternalSemaphoreProperties)
11410 {
11411 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
11412 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011413 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011414 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphoreProperties");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011415}
11416
11417void VkEncoder::vkGetDescriptorSetLayoutSupport(
11418 VkDevice device,
11419 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
11420 VkDescriptorSetLayoutSupport* pSupport)
11421{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011422 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011423 mImpl->log("start vkGetDescriptorSetLayoutSupport");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011424 auto stream = mImpl->stream();
11425 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011426 auto resources = mImpl->resources();
11427 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011428 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011429 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011430 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011431 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011432 local_pCreateInfo = nullptr;
11433 if (pCreateInfo)
11434 {
11435 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
11436 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
11437 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080011438 if (local_pCreateInfo)
11439 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011440 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011441 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011442 countingStream->rewind();
11443 {
David Reveman9875f2c2019-06-11 21:47:12 -040011444 uint64_t cgen_var_768;
11445 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_768, 1);
11446 countingStream->write((uint64_t*)&cgen_var_768, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011447 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011448 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
11449 }
11450 uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11451 countingStream->rewind();
11452 uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
11453 stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
11454 stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011455 uint64_t cgen_var_769;
11456 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_769, 1);
11457 stream->write((uint64_t*)&cgen_var_769, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011458 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011459 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011460 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011461 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011462 if (pSupport)
11463 {
11464 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
11465 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011466 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011467 mImpl->log("finish vkGetDescriptorSetLayoutSupport");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011468}
11469
11470#endif
11471#ifdef VK_KHR_surface
11472void VkEncoder::vkDestroySurfaceKHR(
11473 VkInstance instance,
11474 VkSurfaceKHR surface,
11475 const VkAllocationCallbacks* pAllocator)
11476{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011477 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011478 mImpl->log("start vkDestroySurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011479 auto stream = mImpl->stream();
11480 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011481 auto resources = mImpl->resources();
11482 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011483 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011484 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011485 VkSurfaceKHR local_surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011486 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011487 local_instance = instance;
11488 local_surface = surface;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011489 local_pAllocator = nullptr;
11490 if (pAllocator)
11491 {
11492 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11493 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11494 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011495 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011496 if (local_pAllocator)
11497 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011498 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011499 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011500 countingStream->rewind();
11501 {
David Reveman9875f2c2019-06-11 21:47:12 -040011502 uint64_t cgen_var_770;
11503 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_770, 1);
11504 countingStream->write((uint64_t*)&cgen_var_770, 1 * 8);
11505 uint64_t cgen_var_771;
11506 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_771, 1);
11507 countingStream->write((uint64_t*)&cgen_var_771, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011508 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011509 uint64_t cgen_var_772 = (uint64_t)(uintptr_t)local_pAllocator;
11510 countingStream->putBe64(cgen_var_772);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011511 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011512 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011513 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011514 }
11515 }
11516 uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11517 countingStream->rewind();
11518 uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
11519 stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
11520 stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011521 uint64_t cgen_var_773;
11522 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_773, 1);
11523 stream->write((uint64_t*)&cgen_var_773, 1 * 8);
11524 uint64_t cgen_var_774;
11525 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_774, 1);
11526 stream->write((uint64_t*)&cgen_var_774, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011527 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011528 uint64_t cgen_var_775 = (uint64_t)(uintptr_t)local_pAllocator;
11529 stream->putBe64(cgen_var_775);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011530 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011531 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011532 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011533 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011534 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR readParams");
11535 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011536 resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011537 mImpl->log("finish vkDestroySurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011538}
11539
11540VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
11541 VkPhysicalDevice physicalDevice,
11542 uint32_t queueFamilyIndex,
11543 VkSurfaceKHR surface,
11544 VkBool32* pSupported)
11545{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011546 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011547 mImpl->log("start vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011548 auto stream = mImpl->stream();
11549 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011550 auto resources = mImpl->resources();
11551 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011552 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011553 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011554 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011555 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011556 local_physicalDevice = physicalDevice;
11557 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011558 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011559 countingStream->rewind();
11560 {
David Reveman9875f2c2019-06-11 21:47:12 -040011561 uint64_t cgen_var_776;
11562 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_776, 1);
11563 countingStream->write((uint64_t*)&cgen_var_776, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011564 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011565 uint64_t cgen_var_777;
11566 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_777, 1);
11567 countingStream->write((uint64_t*)&cgen_var_777, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011568 countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
11569 }
11570 uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11571 countingStream->rewind();
11572 uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
11573 stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
11574 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011575 uint64_t cgen_var_778;
11576 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_778, 1);
11577 stream->write((uint64_t*)&cgen_var_778, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011578 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011579 uint64_t cgen_var_779;
11580 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_779, 1);
11581 stream->write((uint64_t*)&cgen_var_779, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011582 stream->write((VkBool32*)pSupported, sizeof(VkBool32));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011583 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011584 stream->read((VkBool32*)pSupported, sizeof(VkBool32));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011585 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011586 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
11587 stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011588 countingStream->clearPool();
11589 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011590 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011591 mImpl->log("finish vkGetPhysicalDeviceSurfaceSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011592 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
11593}
11594
11595VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
11596 VkPhysicalDevice physicalDevice,
11597 VkSurfaceKHR surface,
11598 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
11599{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011600 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011601 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011602 auto stream = mImpl->stream();
11603 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011604 auto resources = mImpl->resources();
11605 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011606 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011607 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011608 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011609 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011610 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011611 countingStream->rewind();
11612 {
David Reveman9875f2c2019-06-11 21:47:12 -040011613 uint64_t cgen_var_780;
11614 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
11615 countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
11616 uint64_t cgen_var_781;
11617 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
11618 countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011619 marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11620 }
11621 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11622 countingStream->rewind();
11623 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
11624 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
11625 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011626 uint64_t cgen_var_782;
11627 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_782, 1);
11628 stream->write((uint64_t*)&cgen_var_782, 1 * 8);
11629 uint64_t cgen_var_783;
11630 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_783, 1);
11631 stream->write((uint64_t*)&cgen_var_783, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011632 marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011633 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011634 unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080011635 if (pSurfaceCapabilities)
11636 {
11637 transform_fromhost_VkSurfaceCapabilitiesKHR(mImpl->resources(), (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11638 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011639 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011640 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
11641 stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011642 countingStream->clearPool();
11643 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011644 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011645 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011646 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
11647}
11648
11649VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
11650 VkPhysicalDevice physicalDevice,
11651 VkSurfaceKHR surface,
11652 uint32_t* pSurfaceFormatCount,
11653 VkSurfaceFormatKHR* pSurfaceFormats)
11654{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011655 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011656 mImpl->log("start vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011657 auto stream = mImpl->stream();
11658 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011659 auto resources = mImpl->resources();
11660 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011661 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011662 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011663 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011664 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011665 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011666 countingStream->rewind();
11667 {
David Reveman9875f2c2019-06-11 21:47:12 -040011668 uint64_t cgen_var_784;
11669 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
11670 countingStream->write((uint64_t*)&cgen_var_784, 1 * 8);
11671 uint64_t cgen_var_785;
11672 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
11673 countingStream->write((uint64_t*)&cgen_var_785, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011674 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011675 uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11676 countingStream->putBe64(cgen_var_786);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011677 if (pSurfaceFormatCount)
11678 {
11679 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11680 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011681 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011682 uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pSurfaceFormats;
11683 countingStream->putBe64(cgen_var_787);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011684 if (pSurfaceFormats)
11685 {
11686 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11687 {
11688 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11689 }
11690 }
11691 }
11692 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11693 countingStream->rewind();
11694 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
11695 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
11696 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011697 uint64_t cgen_var_788;
11698 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_788, 1);
11699 stream->write((uint64_t*)&cgen_var_788, 1 * 8);
11700 uint64_t cgen_var_789;
11701 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_789, 1);
11702 stream->write((uint64_t*)&cgen_var_789, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011703 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011704 uint64_t cgen_var_790 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11705 stream->putBe64(cgen_var_790);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011706 if (pSurfaceFormatCount)
11707 {
11708 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11709 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011710 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011711 uint64_t cgen_var_791 = (uint64_t)(uintptr_t)pSurfaceFormats;
11712 stream->putBe64(cgen_var_791);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011713 if (pSurfaceFormats)
11714 {
11715 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11716 {
11717 marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11718 }
11719 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011720 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011721 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011722 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011723 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011724 if (pSurfaceFormatCount)
11725 {
11726 if (!(check_pSurfaceFormatCount))
11727 {
11728 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
11729 }
11730 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11731 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011732 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011733 VkSurfaceFormatKHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011734 check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011735 if (pSurfaceFormats)
11736 {
11737 if (!(check_pSurfaceFormats))
11738 {
11739 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
11740 }
11741 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11742 {
11743 unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11744 }
11745 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080011746 if (pSurfaceFormats)
11747 {
11748 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11749 {
11750 transform_fromhost_VkSurfaceFormatKHR(mImpl->resources(), (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11751 }
11752 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011753 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011754 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
11755 stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011756 countingStream->clearPool();
11757 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011758 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011759 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormatsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011760 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
11761}
11762
11763VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
11764 VkPhysicalDevice physicalDevice,
11765 VkSurfaceKHR surface,
11766 uint32_t* pPresentModeCount,
11767 VkPresentModeKHR* pPresentModes)
11768{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011769 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011770 mImpl->log("start vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011771 auto stream = mImpl->stream();
11772 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011773 auto resources = mImpl->resources();
11774 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011775 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011776 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011777 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011778 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011779 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011780 countingStream->rewind();
11781 {
David Reveman9875f2c2019-06-11 21:47:12 -040011782 uint64_t cgen_var_794;
11783 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_794, 1);
11784 countingStream->write((uint64_t*)&cgen_var_794, 1 * 8);
11785 uint64_t cgen_var_795;
11786 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_795, 1);
11787 countingStream->write((uint64_t*)&cgen_var_795, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011788 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011789 uint64_t cgen_var_796 = (uint64_t)(uintptr_t)pPresentModeCount;
11790 countingStream->putBe64(cgen_var_796);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011791 if (pPresentModeCount)
11792 {
11793 countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11794 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011795 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011796 uint64_t cgen_var_797 = (uint64_t)(uintptr_t)pPresentModes;
11797 countingStream->putBe64(cgen_var_797);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011798 if (pPresentModes)
11799 {
11800 countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11801 }
11802 }
11803 uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11804 countingStream->rewind();
11805 uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
11806 stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
11807 stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011808 uint64_t cgen_var_798;
11809 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_798, 1);
11810 stream->write((uint64_t*)&cgen_var_798, 1 * 8);
11811 uint64_t cgen_var_799;
11812 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_799, 1);
11813 stream->write((uint64_t*)&cgen_var_799, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011814 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011815 uint64_t cgen_var_800 = (uint64_t)(uintptr_t)pPresentModeCount;
11816 stream->putBe64(cgen_var_800);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011817 if (pPresentModeCount)
11818 {
11819 stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11820 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011821 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011822 uint64_t cgen_var_801 = (uint64_t)(uintptr_t)pPresentModes;
11823 stream->putBe64(cgen_var_801);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011824 if (pPresentModes)
11825 {
11826 stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11827 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011828 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011829 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011830 uint32_t* check_pPresentModeCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011831 check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011832 if (pPresentModeCount)
11833 {
11834 if (!(check_pPresentModeCount))
11835 {
11836 fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
11837 }
11838 stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11839 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011840 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011841 VkPresentModeKHR* check_pPresentModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011842 check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011843 if (pPresentModes)
11844 {
11845 if (!(check_pPresentModes))
11846 {
11847 fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
11848 }
11849 stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11850 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011851 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011852 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11853 stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011854 countingStream->clearPool();
11855 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011856 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011857 mImpl->log("finish vkGetPhysicalDeviceSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011858 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
11859}
11860
11861#endif
11862#ifdef VK_KHR_swapchain
11863VkResult VkEncoder::vkCreateSwapchainKHR(
11864 VkDevice device,
11865 const VkSwapchainCreateInfoKHR* pCreateInfo,
11866 const VkAllocationCallbacks* pAllocator,
11867 VkSwapchainKHR* pSwapchain)
11868{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011869 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011870 mImpl->log("start vkCreateSwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011871 auto stream = mImpl->stream();
11872 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011873 auto resources = mImpl->resources();
11874 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011875 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011876 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011877 VkSwapchainCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011878 VkAllocationCallbacks* local_pAllocator;
11879 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011880 local_pCreateInfo = nullptr;
11881 if (pCreateInfo)
11882 {
11883 local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
11884 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
11885 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011886 local_pAllocator = nullptr;
11887 if (pAllocator)
11888 {
11889 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11890 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11891 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011892 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011893 if (local_pCreateInfo)
11894 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011895 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011896 }
11897 if (local_pAllocator)
11898 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011899 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011900 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011901 countingStream->rewind();
11902 {
David Reveman9875f2c2019-06-11 21:47:12 -040011903 uint64_t cgen_var_804;
11904 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_804, 1);
11905 countingStream->write((uint64_t*)&cgen_var_804, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011906 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011907 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011908 uint64_t cgen_var_805 = (uint64_t)(uintptr_t)local_pAllocator;
11909 countingStream->putBe64(cgen_var_805);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011910 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011911 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011912 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011913 }
David Reveman9875f2c2019-06-11 21:47:12 -040011914 uint64_t cgen_var_806;
11915 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_806, 1);
11916 countingStream->write((uint64_t*)&cgen_var_806, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011917 }
11918 uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11919 countingStream->rewind();
11920 uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
11921 stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
11922 stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040011923 uint64_t cgen_var_807;
11924 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_807, 1);
11925 stream->write((uint64_t*)&cgen_var_807, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011926 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011927 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011928 uint64_t cgen_var_808 = (uint64_t)(uintptr_t)local_pAllocator;
11929 stream->putBe64(cgen_var_808);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011930 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011931 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011932 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011933 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080011934 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040011935 uint64_t cgen_var_809;
11936 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_809, 1);
11937 stream->write((uint64_t*)&cgen_var_809, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011938 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011939 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080011940 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -040011941 uint64_t cgen_var_810;
11942 stream->read((uint64_t*)&cgen_var_810, 8);
11943 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_810, (VkSwapchainKHR*)pSwapchain, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080011944 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011945 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011946 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
11947 stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080011948 countingStream->clearPool();
11949 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011950 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011951 mImpl->log("finish vkCreateSwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011952 return vkCreateSwapchainKHR_VkResult_return;
11953}
11954
11955void VkEncoder::vkDestroySwapchainKHR(
11956 VkDevice device,
11957 VkSwapchainKHR swapchain,
11958 const VkAllocationCallbacks* pAllocator)
11959{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080011960 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080011961 mImpl->log("start vkDestroySwapchainKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011962 auto stream = mImpl->stream();
11963 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011964 auto resources = mImpl->resources();
11965 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080011966 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011967 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011968 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011969 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080011970 local_device = device;
11971 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011972 local_pAllocator = nullptr;
11973 if (pAllocator)
11974 {
11975 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11976 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11977 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080011978 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080011979 if (local_pAllocator)
11980 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080011981 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080011982 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011983 countingStream->rewind();
11984 {
David Reveman9875f2c2019-06-11 21:47:12 -040011985 uint64_t cgen_var_811;
11986 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_811, 1);
11987 countingStream->write((uint64_t*)&cgen_var_811, 1 * 8);
11988 uint64_t cgen_var_812;
11989 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_812, 1);
11990 countingStream->write((uint64_t*)&cgen_var_812, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080011991 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040011992 uint64_t cgen_var_813 = (uint64_t)(uintptr_t)local_pAllocator;
11993 countingStream->putBe64(cgen_var_813);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011994 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011995 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080011996 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070011997 }
11998 }
11999 uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12000 countingStream->rewind();
12001 uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
12002 stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
12003 stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012004 uint64_t cgen_var_814;
12005 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_814, 1);
12006 stream->write((uint64_t*)&cgen_var_814, 1 * 8);
12007 uint64_t cgen_var_815;
12008 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_815, 1);
12009 stream->write((uint64_t*)&cgen_var_815, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012010 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012011 uint64_t cgen_var_816 = (uint64_t)(uintptr_t)local_pAllocator;
12012 stream->putBe64(cgen_var_816);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012013 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012014 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012015 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012016 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012017 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR readParams");
12018 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012019 resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012020 mImpl->log("finish vkDestroySwapchainKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012021}
12022
12023VkResult VkEncoder::vkGetSwapchainImagesKHR(
12024 VkDevice device,
12025 VkSwapchainKHR swapchain,
12026 uint32_t* pSwapchainImageCount,
12027 VkImage* pSwapchainImages)
12028{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012029 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012030 mImpl->log("start vkGetSwapchainImagesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012031 auto stream = mImpl->stream();
12032 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012033 auto resources = mImpl->resources();
12034 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012035 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012036 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012037 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012038 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012039 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012040 countingStream->rewind();
12041 {
David Reveman9875f2c2019-06-11 21:47:12 -040012042 uint64_t cgen_var_817;
12043 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_817, 1);
12044 countingStream->write((uint64_t*)&cgen_var_817, 1 * 8);
12045 uint64_t cgen_var_818;
12046 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_818, 1);
12047 countingStream->write((uint64_t*)&cgen_var_818, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012048 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012049 uint64_t cgen_var_819 = (uint64_t)(uintptr_t)pSwapchainImageCount;
12050 countingStream->putBe64(cgen_var_819);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012051 if (pSwapchainImageCount)
12052 {
12053 countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
12054 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012055 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012056 uint64_t cgen_var_820 = (uint64_t)(uintptr_t)pSwapchainImages;
12057 countingStream->putBe64(cgen_var_820);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012058 if (pSwapchainImages)
12059 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012060 if ((*(pSwapchainImageCount)))
12061 {
David Reveman9875f2c2019-06-11 21:47:12 -040012062 uint64_t* cgen_var_821;
12063 countingStream->alloc((void**)&cgen_var_821, (*(pSwapchainImageCount)) * 8);
12064 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_821, (*(pSwapchainImageCount)));
12065 countingStream->write((uint64_t*)cgen_var_821, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012066 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012067 }
12068 }
12069 uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12070 countingStream->rewind();
12071 uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
12072 stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
12073 stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012074 uint64_t cgen_var_822;
12075 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_822, 1);
12076 stream->write((uint64_t*)&cgen_var_822, 1 * 8);
12077 uint64_t cgen_var_823;
12078 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_823, 1);
12079 stream->write((uint64_t*)&cgen_var_823, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012080 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012081 uint64_t cgen_var_824 = (uint64_t)(uintptr_t)pSwapchainImageCount;
12082 stream->putBe64(cgen_var_824);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012083 if (pSwapchainImageCount)
12084 {
12085 stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
12086 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012087 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012088 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012089 uint64_t cgen_var_825 = (uint64_t)(uintptr_t)pSwapchainImages;
12090 stream->putBe64(cgen_var_825);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012091 if (pSwapchainImages)
12092 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012093 if ((*(pSwapchainImageCount)))
12094 {
David Reveman9875f2c2019-06-11 21:47:12 -040012095 uint64_t* cgen_var_826;
12096 stream->alloc((void**)&cgen_var_826, (*(pSwapchainImageCount)) * 8);
12097 stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_826, (*(pSwapchainImageCount)));
12098 stream->write((uint64_t*)cgen_var_826, (*(pSwapchainImageCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012099 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012100 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012101 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012102 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012103 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012104 uint32_t* check_pSwapchainImageCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012105 check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012106 if (pSwapchainImageCount)
12107 {
12108 if (!(check_pSwapchainImageCount))
12109 {
12110 fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
12111 }
12112 stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
12113 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012114 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012115 VkImage* check_pSwapchainImages;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012116 check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012117 if (pSwapchainImages)
12118 {
12119 if (!(check_pSwapchainImages))
12120 {
12121 fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
12122 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012123 if ((*(pSwapchainImageCount)))
12124 {
David Reveman9875f2c2019-06-11 21:47:12 -040012125 uint64_t* cgen_var_829;
12126 stream->alloc((void**)&cgen_var_829, (*(pSwapchainImageCount)) * 8);
12127 stream->read((uint64_t*)cgen_var_829, (*(pSwapchainImageCount)) * 8);
12128 stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_829, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012129 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012130 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012131 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012132 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
12133 stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012134 countingStream->clearPool();
12135 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012136 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012137 mImpl->log("finish vkGetSwapchainImagesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012138 return vkGetSwapchainImagesKHR_VkResult_return;
12139}
12140
12141VkResult VkEncoder::vkAcquireNextImageKHR(
12142 VkDevice device,
12143 VkSwapchainKHR swapchain,
12144 uint64_t timeout,
12145 VkSemaphore semaphore,
12146 VkFence fence,
12147 uint32_t* pImageIndex)
12148{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012149 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012150 mImpl->log("start vkAcquireNextImageKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012151 auto stream = mImpl->stream();
12152 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012153 auto resources = mImpl->resources();
12154 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012155 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012156 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012157 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012158 uint64_t local_timeout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012159 VkSemaphore local_semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012160 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012161 local_device = device;
12162 local_swapchain = swapchain;
12163 local_timeout = timeout;
12164 local_semaphore = semaphore;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012165 local_fence = fence;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012166 countingStream->rewind();
12167 {
David Reveman9875f2c2019-06-11 21:47:12 -040012168 uint64_t cgen_var_830;
12169 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_830, 1);
12170 countingStream->write((uint64_t*)&cgen_var_830, 1 * 8);
12171 uint64_t cgen_var_831;
12172 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_831, 1);
12173 countingStream->write((uint64_t*)&cgen_var_831, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012174 countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012175 uint64_t cgen_var_832;
12176 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_832, 1);
12177 countingStream->write((uint64_t*)&cgen_var_832, 1 * 8);
12178 uint64_t cgen_var_833;
12179 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_833, 1);
12180 countingStream->write((uint64_t*)&cgen_var_833, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012181 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
12182 }
12183 uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12184 countingStream->rewind();
12185 uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
12186 stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
12187 stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012188 uint64_t cgen_var_834;
12189 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_834, 1);
12190 stream->write((uint64_t*)&cgen_var_834, 1 * 8);
12191 uint64_t cgen_var_835;
12192 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_835, 1);
12193 stream->write((uint64_t*)&cgen_var_835, 1 * 8);
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080012194 stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012195 uint64_t cgen_var_836;
12196 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_836, 1);
12197 stream->write((uint64_t*)&cgen_var_836, 1 * 8);
12198 uint64_t cgen_var_837;
12199 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_837, 1);
12200 stream->write((uint64_t*)&cgen_var_837, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012201 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012202 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012203 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012204 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012205 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
12206 stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012207 countingStream->clearPool();
12208 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012209 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012210 mImpl->log("finish vkAcquireNextImageKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012211 return vkAcquireNextImageKHR_VkResult_return;
12212}
12213
12214VkResult VkEncoder::vkQueuePresentKHR(
12215 VkQueue queue,
12216 const VkPresentInfoKHR* pPresentInfo)
12217{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012218 AEMU_SCOPED_TRACE("vkQueuePresentKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012219 mImpl->log("start vkQueuePresentKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012220 auto stream = mImpl->stream();
12221 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012222 auto resources = mImpl->resources();
12223 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012224 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012225 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012226 VkPresentInfoKHR* local_pPresentInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012227 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012228 local_pPresentInfo = nullptr;
12229 if (pPresentInfo)
12230 {
12231 local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
12232 deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
12233 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080012234 if (local_pPresentInfo)
12235 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012236 transform_tohost_VkPresentInfoKHR(mImpl->resources(), (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012237 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012238 countingStream->rewind();
12239 {
David Reveman9875f2c2019-06-11 21:47:12 -040012240 uint64_t cgen_var_838;
12241 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_838, 1);
12242 countingStream->write((uint64_t*)&cgen_var_838, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012243 marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012244 }
12245 uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12246 countingStream->rewind();
12247 uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
12248 stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
12249 stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012250 uint64_t cgen_var_839;
12251 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_839, 1);
12252 stream->write((uint64_t*)&cgen_var_839, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012253 marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012254 AEMU_SCOPED_TRACE("vkQueuePresentKHR readParams");
12255 AEMU_SCOPED_TRACE("vkQueuePresentKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012256 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
12257 stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012258 countingStream->clearPool();
12259 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012260 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012261 mImpl->log("finish vkQueuePresentKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012262 return vkQueuePresentKHR_VkResult_return;
12263}
12264
12265VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
12266 VkDevice device,
12267 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
12268{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012269 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012270 mImpl->log("start vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012271 auto stream = mImpl->stream();
12272 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012273 auto resources = mImpl->resources();
12274 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012275 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012276 VkDevice local_device;
12277 local_device = device;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012278 countingStream->rewind();
12279 {
David Reveman9875f2c2019-06-11 21:47:12 -040012280 uint64_t cgen_var_840;
12281 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_840, 1);
12282 countingStream->write((uint64_t*)&cgen_var_840, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012283 marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
12284 }
12285 uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12286 countingStream->rewind();
12287 uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
12288 stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
12289 stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012290 uint64_t cgen_var_841;
12291 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_841, 1);
12292 stream->write((uint64_t*)&cgen_var_841, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012293 marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012294 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012295 unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080012296 if (pDeviceGroupPresentCapabilities)
12297 {
12298 transform_fromhost_VkDeviceGroupPresentCapabilitiesKHR(mImpl->resources(), (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
12299 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012300 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012301 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
12302 stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012303 countingStream->clearPool();
12304 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012305 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012306 mImpl->log("finish vkGetDeviceGroupPresentCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012307 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
12308}
12309
12310VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
12311 VkDevice device,
12312 VkSurfaceKHR surface,
12313 VkDeviceGroupPresentModeFlagsKHR* pModes)
12314{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012315 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012316 mImpl->log("start vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012317 auto stream = mImpl->stream();
12318 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012319 auto resources = mImpl->resources();
12320 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012321 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012322 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012323 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012324 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012325 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012326 countingStream->rewind();
12327 {
David Reveman9875f2c2019-06-11 21:47:12 -040012328 uint64_t cgen_var_842;
12329 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_842, 1);
12330 countingStream->write((uint64_t*)&cgen_var_842, 1 * 8);
12331 uint64_t cgen_var_843;
12332 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_843, 1);
12333 countingStream->write((uint64_t*)&cgen_var_843, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012334 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012335 uint64_t cgen_var_844 = (uint64_t)(uintptr_t)pModes;
12336 countingStream->putBe64(cgen_var_844);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012337 if (pModes)
12338 {
12339 countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
12340 }
12341 }
12342 uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12343 countingStream->rewind();
12344 uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
12345 stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
12346 stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012347 uint64_t cgen_var_845;
12348 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_845, 1);
12349 stream->write((uint64_t*)&cgen_var_845, 1 * 8);
12350 uint64_t cgen_var_846;
12351 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_846, 1);
12352 stream->write((uint64_t*)&cgen_var_846, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012353 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012354 uint64_t cgen_var_847 = (uint64_t)(uintptr_t)pModes;
12355 stream->putBe64(cgen_var_847);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012356 if (pModes)
12357 {
12358 stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
12359 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012360 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012361 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012362 VkDeviceGroupPresentModeFlagsKHR* check_pModes;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012363 check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012364 if (pModes)
12365 {
12366 if (!(check_pModes))
12367 {
12368 fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
12369 }
12370 stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
12371 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012372 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012373 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
12374 stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012375 countingStream->clearPool();
12376 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012377 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012378 mImpl->log("finish vkGetDeviceGroupSurfacePresentModesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012379 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
12380}
12381
12382VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
12383 VkPhysicalDevice physicalDevice,
12384 VkSurfaceKHR surface,
12385 uint32_t* pRectCount,
12386 VkRect2D* pRects)
12387{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012388 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012389 mImpl->log("start vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012390 auto stream = mImpl->stream();
12391 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012392 auto resources = mImpl->resources();
12393 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012394 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012395 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012396 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012397 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012398 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012399 countingStream->rewind();
12400 {
David Reveman9875f2c2019-06-11 21:47:12 -040012401 uint64_t cgen_var_849;
12402 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_849, 1);
12403 countingStream->write((uint64_t*)&cgen_var_849, 1 * 8);
12404 uint64_t cgen_var_850;
12405 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_850, 1);
12406 countingStream->write((uint64_t*)&cgen_var_850, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012407 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012408 uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pRectCount;
12409 countingStream->putBe64(cgen_var_851);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012410 if (pRectCount)
12411 {
12412 countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
12413 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012414 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012415 uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pRects;
12416 countingStream->putBe64(cgen_var_852);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012417 if (pRects)
12418 {
12419 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12420 {
12421 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
12422 }
12423 }
12424 }
12425 uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12426 countingStream->rewind();
12427 uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
12428 stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
12429 stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012430 uint64_t cgen_var_853;
12431 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_853, 1);
12432 stream->write((uint64_t*)&cgen_var_853, 1 * 8);
12433 uint64_t cgen_var_854;
12434 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_854, 1);
12435 stream->write((uint64_t*)&cgen_var_854, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012436 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012437 uint64_t cgen_var_855 = (uint64_t)(uintptr_t)pRectCount;
12438 stream->putBe64(cgen_var_855);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012439 if (pRectCount)
12440 {
12441 stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
12442 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012443 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012444 uint64_t cgen_var_856 = (uint64_t)(uintptr_t)pRects;
12445 stream->putBe64(cgen_var_856);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012446 if (pRects)
12447 {
12448 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12449 {
12450 marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
12451 }
12452 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012453 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012454 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012455 uint32_t* check_pRectCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012456 check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012457 if (pRectCount)
12458 {
12459 if (!(check_pRectCount))
12460 {
12461 fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
12462 }
12463 stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
12464 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012465 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012466 VkRect2D* check_pRects;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012467 check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012468 if (pRects)
12469 {
12470 if (!(check_pRects))
12471 {
12472 fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
12473 }
12474 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12475 {
12476 unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
12477 }
12478 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012479 if (pRects)
12480 {
12481 for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12482 {
12483 transform_fromhost_VkRect2D(mImpl->resources(), (VkRect2D*)(pRects + i));
12484 }
12485 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012486 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012487 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
12488 stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012489 countingStream->clearPool();
12490 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012491 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012492 mImpl->log("finish vkGetPhysicalDevicePresentRectanglesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012493 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
12494}
12495
12496VkResult VkEncoder::vkAcquireNextImage2KHR(
12497 VkDevice device,
12498 const VkAcquireNextImageInfoKHR* pAcquireInfo,
12499 uint32_t* pImageIndex)
12500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012501 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012502 mImpl->log("start vkAcquireNextImage2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012503 auto stream = mImpl->stream();
12504 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012505 auto resources = mImpl->resources();
12506 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012507 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012508 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012509 VkAcquireNextImageInfoKHR* local_pAcquireInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012510 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012511 local_pAcquireInfo = nullptr;
12512 if (pAcquireInfo)
12513 {
12514 local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
12515 deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
12516 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080012517 if (local_pAcquireInfo)
12518 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080012519 transform_tohost_VkAcquireNextImageInfoKHR(mImpl->resources(), (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080012520 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012521 countingStream->rewind();
12522 {
David Reveman9875f2c2019-06-11 21:47:12 -040012523 uint64_t cgen_var_859;
12524 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_859, 1);
12525 countingStream->write((uint64_t*)&cgen_var_859, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012526 marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012527 countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
12528 }
12529 uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12530 countingStream->rewind();
12531 uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
12532 stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
12533 stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012534 uint64_t cgen_var_860;
12535 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_860, 1);
12536 stream->write((uint64_t*)&cgen_var_860, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012537 marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012538 stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012539 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012540 stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012541 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012542 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
12543 stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012544 countingStream->clearPool();
12545 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012546 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012547 mImpl->log("finish vkAcquireNextImage2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012548 return vkAcquireNextImage2KHR_VkResult_return;
12549}
12550
12551#endif
12552#ifdef VK_KHR_display
12553VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
12554 VkPhysicalDevice physicalDevice,
12555 uint32_t* pPropertyCount,
12556 VkDisplayPropertiesKHR* pProperties)
12557{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012558 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012559 mImpl->log("start vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012560 auto stream = mImpl->stream();
12561 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012562 auto resources = mImpl->resources();
12563 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012564 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012565 VkPhysicalDevice local_physicalDevice;
12566 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012567 countingStream->rewind();
12568 {
David Reveman9875f2c2019-06-11 21:47:12 -040012569 uint64_t cgen_var_861;
12570 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_861, 1);
12571 countingStream->write((uint64_t*)&cgen_var_861, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012572 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012573 uint64_t cgen_var_862 = (uint64_t)(uintptr_t)pPropertyCount;
12574 countingStream->putBe64(cgen_var_862);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012575 if (pPropertyCount)
12576 {
12577 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12578 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012579 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012580 uint64_t cgen_var_863 = (uint64_t)(uintptr_t)pProperties;
12581 countingStream->putBe64(cgen_var_863);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012582 if (pProperties)
12583 {
12584 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12585 {
12586 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
12587 }
12588 }
12589 }
12590 uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12591 countingStream->rewind();
12592 uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
12593 stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
12594 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012595 uint64_t cgen_var_864;
12596 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_864, 1);
12597 stream->write((uint64_t*)&cgen_var_864, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012598 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012599 uint64_t cgen_var_865 = (uint64_t)(uintptr_t)pPropertyCount;
12600 stream->putBe64(cgen_var_865);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012601 if (pPropertyCount)
12602 {
12603 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12604 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012605 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012606 uint64_t cgen_var_866 = (uint64_t)(uintptr_t)pProperties;
12607 stream->putBe64(cgen_var_866);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012608 if (pProperties)
12609 {
12610 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12611 {
12612 marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12613 }
12614 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012615 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012616 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012617 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012618 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012619 if (pPropertyCount)
12620 {
12621 if (!(check_pPropertyCount))
12622 {
12623 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12624 }
12625 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12626 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012627 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012628 VkDisplayPropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012629 check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012630 if (pProperties)
12631 {
12632 if (!(check_pProperties))
12633 {
12634 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12635 }
12636 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12637 {
12638 unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12639 }
12640 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012641 if (pProperties)
12642 {
12643 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12644 {
12645 transform_fromhost_VkDisplayPropertiesKHR(mImpl->resources(), (VkDisplayPropertiesKHR*)(pProperties + i));
12646 }
12647 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012648 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012649 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
12650 stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012651 countingStream->clearPool();
12652 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012653 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012654 mImpl->log("finish vkGetPhysicalDeviceDisplayPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012655 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
12656}
12657
12658VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
12659 VkPhysicalDevice physicalDevice,
12660 uint32_t* pPropertyCount,
12661 VkDisplayPlanePropertiesKHR* pProperties)
12662{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012663 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012664 mImpl->log("start vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012665 auto stream = mImpl->stream();
12666 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012667 auto resources = mImpl->resources();
12668 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012669 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012670 VkPhysicalDevice local_physicalDevice;
12671 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012672 countingStream->rewind();
12673 {
David Reveman9875f2c2019-06-11 21:47:12 -040012674 uint64_t cgen_var_869;
12675 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_869, 1);
12676 countingStream->write((uint64_t*)&cgen_var_869, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012677 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012678 uint64_t cgen_var_870 = (uint64_t)(uintptr_t)pPropertyCount;
12679 countingStream->putBe64(cgen_var_870);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012680 if (pPropertyCount)
12681 {
12682 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12683 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012684 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012685 uint64_t cgen_var_871 = (uint64_t)(uintptr_t)pProperties;
12686 countingStream->putBe64(cgen_var_871);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012687 if (pProperties)
12688 {
12689 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12690 {
12691 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12692 }
12693 }
12694 }
12695 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12696 countingStream->rewind();
12697 uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
12698 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
12699 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012700 uint64_t cgen_var_872;
12701 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_872, 1);
12702 stream->write((uint64_t*)&cgen_var_872, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012703 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012704 uint64_t cgen_var_873 = (uint64_t)(uintptr_t)pPropertyCount;
12705 stream->putBe64(cgen_var_873);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012706 if (pPropertyCount)
12707 {
12708 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12709 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012710 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012711 uint64_t cgen_var_874 = (uint64_t)(uintptr_t)pProperties;
12712 stream->putBe64(cgen_var_874);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012713 if (pProperties)
12714 {
12715 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12716 {
12717 marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12718 }
12719 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012720 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012721 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012722 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012723 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012724 if (pPropertyCount)
12725 {
12726 if (!(check_pPropertyCount))
12727 {
12728 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12729 }
12730 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12731 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012732 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012733 VkDisplayPlanePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012734 check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012735 if (pProperties)
12736 {
12737 if (!(check_pProperties))
12738 {
12739 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12740 }
12741 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12742 {
12743 unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12744 }
12745 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012746 if (pProperties)
12747 {
12748 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12749 {
12750 transform_fromhost_VkDisplayPlanePropertiesKHR(mImpl->resources(), (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12751 }
12752 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012753 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012754 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
12755 stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012756 countingStream->clearPool();
12757 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012758 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012759 mImpl->log("finish vkGetPhysicalDeviceDisplayPlanePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012760 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
12761}
12762
12763VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
12764 VkPhysicalDevice physicalDevice,
12765 uint32_t planeIndex,
12766 uint32_t* pDisplayCount,
12767 VkDisplayKHR* pDisplays)
12768{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012769 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012770 mImpl->log("start vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012771 auto stream = mImpl->stream();
12772 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012773 auto resources = mImpl->resources();
12774 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012775 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012776 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012777 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012778 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012779 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012780 countingStream->rewind();
12781 {
David Reveman9875f2c2019-06-11 21:47:12 -040012782 uint64_t cgen_var_877;
12783 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_877, 1);
12784 countingStream->write((uint64_t*)&cgen_var_877, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012785 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012786 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012787 uint64_t cgen_var_878 = (uint64_t)(uintptr_t)pDisplayCount;
12788 countingStream->putBe64(cgen_var_878);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012789 if (pDisplayCount)
12790 {
12791 countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12792 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012793 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012794 uint64_t cgen_var_879 = (uint64_t)(uintptr_t)pDisplays;
12795 countingStream->putBe64(cgen_var_879);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012796 if (pDisplays)
12797 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012798 if ((*(pDisplayCount)))
12799 {
David Reveman9875f2c2019-06-11 21:47:12 -040012800 uint64_t* cgen_var_880;
12801 countingStream->alloc((void**)&cgen_var_880, (*(pDisplayCount)) * 8);
12802 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_880, (*(pDisplayCount)));
12803 countingStream->write((uint64_t*)cgen_var_880, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012804 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012805 }
12806 }
12807 uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12808 countingStream->rewind();
12809 uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
12810 stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
12811 stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012812 uint64_t cgen_var_881;
12813 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_881, 1);
12814 stream->write((uint64_t*)&cgen_var_881, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012815 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012816 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012817 uint64_t cgen_var_882 = (uint64_t)(uintptr_t)pDisplayCount;
12818 stream->putBe64(cgen_var_882);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012819 if (pDisplayCount)
12820 {
12821 stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12822 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012823 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012824 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012825 uint64_t cgen_var_883 = (uint64_t)(uintptr_t)pDisplays;
12826 stream->putBe64(cgen_var_883);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012827 if (pDisplays)
12828 {
Lingfeng Yang2285df12018-11-17 16:25:11 -080012829 if ((*(pDisplayCount)))
12830 {
David Reveman9875f2c2019-06-11 21:47:12 -040012831 uint64_t* cgen_var_884;
12832 stream->alloc((void**)&cgen_var_884, (*(pDisplayCount)) * 8);
12833 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_884, (*(pDisplayCount)));
12834 stream->write((uint64_t*)cgen_var_884, (*(pDisplayCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080012835 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012836 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080012837 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012838 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012839 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012840 uint32_t* check_pDisplayCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012841 check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012842 if (pDisplayCount)
12843 {
12844 if (!(check_pDisplayCount))
12845 {
12846 fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
12847 }
12848 stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
12849 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012850 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012851 VkDisplayKHR* check_pDisplays;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012852 check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012853 if (pDisplays)
12854 {
12855 if (!(check_pDisplays))
12856 {
12857 fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
12858 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080012859 if ((*(pDisplayCount)))
12860 {
David Reveman9875f2c2019-06-11 21:47:12 -040012861 uint64_t* cgen_var_887;
12862 stream->alloc((void**)&cgen_var_887, (*(pDisplayCount)) * 8);
12863 stream->read((uint64_t*)cgen_var_887, (*(pDisplayCount)) * 8);
12864 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_887, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012865 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012866 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012867 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012868 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
12869 stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012870 countingStream->clearPool();
12871 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012872 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012873 mImpl->log("finish vkGetDisplayPlaneSupportedDisplaysKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012874 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
12875}
12876
12877VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
12878 VkPhysicalDevice physicalDevice,
12879 VkDisplayKHR display,
12880 uint32_t* pPropertyCount,
12881 VkDisplayModePropertiesKHR* pProperties)
12882{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012883 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012884 mImpl->log("start vkGetDisplayModePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012885 auto stream = mImpl->stream();
12886 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012887 auto resources = mImpl->resources();
12888 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012889 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012890 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012891 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080012892 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080012893 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012894 countingStream->rewind();
12895 {
David Reveman9875f2c2019-06-11 21:47:12 -040012896 uint64_t cgen_var_888;
12897 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
12898 countingStream->write((uint64_t*)&cgen_var_888, 1 * 8);
12899 uint64_t cgen_var_889;
12900 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
12901 countingStream->write((uint64_t*)&cgen_var_889, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012902 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012903 uint64_t cgen_var_890 = (uint64_t)(uintptr_t)pPropertyCount;
12904 countingStream->putBe64(cgen_var_890);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012905 if (pPropertyCount)
12906 {
12907 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12908 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012909 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012910 uint64_t cgen_var_891 = (uint64_t)(uintptr_t)pProperties;
12911 countingStream->putBe64(cgen_var_891);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012912 if (pProperties)
12913 {
12914 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12915 {
12916 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12917 }
12918 }
12919 }
12920 uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12921 countingStream->rewind();
12922 uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
12923 stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
12924 stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040012925 uint64_t cgen_var_892;
12926 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_892, 1);
12927 stream->write((uint64_t*)&cgen_var_892, 1 * 8);
12928 uint64_t cgen_var_893;
12929 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_893, 1);
12930 stream->write((uint64_t*)&cgen_var_893, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012931 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012932 uint64_t cgen_var_894 = (uint64_t)(uintptr_t)pPropertyCount;
12933 stream->putBe64(cgen_var_894);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012934 if (pPropertyCount)
12935 {
12936 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12937 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012938 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040012939 uint64_t cgen_var_895 = (uint64_t)(uintptr_t)pProperties;
12940 stream->putBe64(cgen_var_895);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012941 if (pProperties)
12942 {
12943 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12944 {
12945 marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12946 }
12947 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012948 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012949 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012950 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012951 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012952 if (pPropertyCount)
12953 {
12954 if (!(check_pPropertyCount))
12955 {
12956 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12957 }
12958 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12959 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012960 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012961 VkDisplayModePropertiesKHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080012962 check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012963 if (pProperties)
12964 {
12965 if (!(check_pProperties))
12966 {
12967 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12968 }
12969 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12970 {
12971 unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12972 }
12973 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080012974 if (pProperties)
12975 {
12976 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12977 {
12978 transform_fromhost_VkDisplayModePropertiesKHR(mImpl->resources(), (VkDisplayModePropertiesKHR*)(pProperties + i));
12979 }
12980 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012981 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012982 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
12983 stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080012984 countingStream->clearPool();
12985 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080012986 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012987 mImpl->log("finish vkGetDisplayModePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070012988 return vkGetDisplayModePropertiesKHR_VkResult_return;
12989}
12990
12991VkResult VkEncoder::vkCreateDisplayModeKHR(
12992 VkPhysicalDevice physicalDevice,
12993 VkDisplayKHR display,
12994 const VkDisplayModeCreateInfoKHR* pCreateInfo,
12995 const VkAllocationCallbacks* pAllocator,
12996 VkDisplayModeKHR* pMode)
12997{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080012998 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080012999 mImpl->log("start vkCreateDisplayModeKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013000 auto stream = mImpl->stream();
13001 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013002 auto resources = mImpl->resources();
13003 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013004 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013005 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013006 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013007 VkDisplayModeCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013008 VkAllocationCallbacks* local_pAllocator;
13009 local_physicalDevice = physicalDevice;
13010 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013011 local_pCreateInfo = nullptr;
13012 if (pCreateInfo)
13013 {
13014 local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
13015 deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
13016 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013017 local_pAllocator = nullptr;
13018 if (pAllocator)
13019 {
13020 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13021 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13022 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013023 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013024 if (local_pCreateInfo)
13025 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013026 transform_tohost_VkDisplayModeCreateInfoKHR(mImpl->resources(), (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013027 }
13028 if (local_pAllocator)
13029 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013030 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013031 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013032 countingStream->rewind();
13033 {
David Reveman9875f2c2019-06-11 21:47:12 -040013034 uint64_t cgen_var_898;
13035 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_898, 1);
13036 countingStream->write((uint64_t*)&cgen_var_898, 1 * 8);
13037 uint64_t cgen_var_899;
13038 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_899, 1);
13039 countingStream->write((uint64_t*)&cgen_var_899, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013040 marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013041 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013042 uint64_t cgen_var_900 = (uint64_t)(uintptr_t)local_pAllocator;
13043 countingStream->putBe64(cgen_var_900);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013044 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013045 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013046 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013047 }
David Reveman9875f2c2019-06-11 21:47:12 -040013048 uint64_t cgen_var_901;
13049 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_901, 1);
13050 countingStream->write((uint64_t*)&cgen_var_901, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013051 }
13052 uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13053 countingStream->rewind();
13054 uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
13055 stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
13056 stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013057 uint64_t cgen_var_902;
13058 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_902, 1);
13059 stream->write((uint64_t*)&cgen_var_902, 1 * 8);
13060 uint64_t cgen_var_903;
13061 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_903, 1);
13062 stream->write((uint64_t*)&cgen_var_903, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013063 marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013064 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013065 uint64_t cgen_var_904 = (uint64_t)(uintptr_t)local_pAllocator;
13066 stream->putBe64(cgen_var_904);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013067 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013068 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013069 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013070 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013071 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040013072 uint64_t cgen_var_905;
13073 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_905, 1);
13074 stream->write((uint64_t*)&cgen_var_905, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013075 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013076 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080013077 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -040013078 uint64_t cgen_var_906;
13079 stream->read((uint64_t*)&cgen_var_906, 8);
13080 stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_906, (VkDisplayModeKHR*)pMode, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013081 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013082 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013083 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
13084 stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013085 countingStream->clearPool();
13086 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013087 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013088 mImpl->log("finish vkCreateDisplayModeKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013089 return vkCreateDisplayModeKHR_VkResult_return;
13090}
13091
13092VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
13093 VkPhysicalDevice physicalDevice,
13094 VkDisplayModeKHR mode,
13095 uint32_t planeIndex,
13096 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
13097{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013098 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013099 mImpl->log("start vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013100 auto stream = mImpl->stream();
13101 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013102 auto resources = mImpl->resources();
13103 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013104 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013105 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013106 VkDisplayModeKHR local_mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013107 uint32_t local_planeIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013108 local_physicalDevice = physicalDevice;
13109 local_mode = mode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013110 local_planeIndex = planeIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013111 countingStream->rewind();
13112 {
David Reveman9875f2c2019-06-11 21:47:12 -040013113 uint64_t cgen_var_907;
13114 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_907, 1);
13115 countingStream->write((uint64_t*)&cgen_var_907, 1 * 8);
13116 uint64_t cgen_var_908;
13117 countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_908, 1);
13118 countingStream->write((uint64_t*)&cgen_var_908, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013119 countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013120 marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
13121 }
13122 uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13123 countingStream->rewind();
13124 uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
13125 stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
13126 stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013127 uint64_t cgen_var_909;
13128 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_909, 1);
13129 stream->write((uint64_t*)&cgen_var_909, 1 * 8);
13130 uint64_t cgen_var_910;
13131 stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_910, 1);
13132 stream->write((uint64_t*)&cgen_var_910, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013133 stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013134 marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013135 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013136 unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080013137 if (pCapabilities)
13138 {
13139 transform_fromhost_VkDisplayPlaneCapabilitiesKHR(mImpl->resources(), (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
13140 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013141 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013142 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
13143 stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013144 countingStream->clearPool();
13145 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013146 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013147 mImpl->log("finish vkGetDisplayPlaneCapabilitiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013148 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
13149}
13150
13151VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
13152 VkInstance instance,
13153 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
13154 const VkAllocationCallbacks* pAllocator,
13155 VkSurfaceKHR* pSurface)
13156{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013157 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013158 mImpl->log("start vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013159 auto stream = mImpl->stream();
13160 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013161 auto resources = mImpl->resources();
13162 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013163 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013164 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013165 VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013166 VkAllocationCallbacks* local_pAllocator;
13167 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013168 local_pCreateInfo = nullptr;
13169 if (pCreateInfo)
13170 {
13171 local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
13172 deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
13173 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013174 local_pAllocator = nullptr;
13175 if (pAllocator)
13176 {
13177 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13178 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13179 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013180 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013181 if (local_pCreateInfo)
13182 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013183 transform_tohost_VkDisplaySurfaceCreateInfoKHR(mImpl->resources(), (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013184 }
13185 if (local_pAllocator)
13186 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013187 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013188 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013189 countingStream->rewind();
13190 {
David Reveman9875f2c2019-06-11 21:47:12 -040013191 uint64_t cgen_var_911;
13192 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_911, 1);
13193 countingStream->write((uint64_t*)&cgen_var_911, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013194 marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013195 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013196 uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator;
13197 countingStream->putBe64(cgen_var_912);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013198 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013199 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013200 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013201 }
David Reveman9875f2c2019-06-11 21:47:12 -040013202 uint64_t cgen_var_913;
13203 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_913, 1);
13204 countingStream->write((uint64_t*)&cgen_var_913, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013205 }
13206 uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13207 countingStream->rewind();
13208 uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
13209 stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
13210 stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013211 uint64_t cgen_var_914;
13212 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_914, 1);
13213 stream->write((uint64_t*)&cgen_var_914, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013214 marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013215 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013216 uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
13217 stream->putBe64(cgen_var_915);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013218 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013219 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013220 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013221 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013222 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040013223 uint64_t cgen_var_916;
13224 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_916, 1);
13225 stream->write((uint64_t*)&cgen_var_916, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013226 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013227 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040013228 uint64_t cgen_var_917;
13229 stream->read((uint64_t*)&cgen_var_917, 8);
13230 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_917, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013231 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013232 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
13233 stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013234 countingStream->clearPool();
13235 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013236 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013237 mImpl->log("finish vkCreateDisplayPlaneSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013238 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
13239}
13240
13241#endif
13242#ifdef VK_KHR_display_swapchain
13243VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
13244 VkDevice device,
13245 uint32_t swapchainCount,
13246 const VkSwapchainCreateInfoKHR* pCreateInfos,
13247 const VkAllocationCallbacks* pAllocator,
13248 VkSwapchainKHR* pSwapchains)
13249{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013250 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013251 mImpl->log("start vkCreateSharedSwapchainsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013252 auto stream = mImpl->stream();
13253 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013254 auto resources = mImpl->resources();
13255 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013256 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013257 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013258 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013259 VkSwapchainCreateInfoKHR* local_pCreateInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013260 VkAllocationCallbacks* local_pAllocator;
13261 local_device = device;
13262 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013263 local_pCreateInfos = nullptr;
13264 if (pCreateInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013265 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013266 local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013267 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13268 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013269 deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013270 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013271 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013272 local_pAllocator = nullptr;
13273 if (pAllocator)
13274 {
13275 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13276 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13277 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013278 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013279 if (local_pCreateInfos)
13280 {
13281 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13282 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013283 transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013284 }
13285 }
13286 if (local_pAllocator)
13287 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013288 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013289 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013290 countingStream->rewind();
13291 {
David Reveman9875f2c2019-06-11 21:47:12 -040013292 uint64_t cgen_var_918;
13293 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_918, 1);
13294 countingStream->write((uint64_t*)&cgen_var_918, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013295 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
13296 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13297 {
13298 marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
13299 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013300 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013301 uint64_t cgen_var_919 = (uint64_t)(uintptr_t)local_pAllocator;
13302 countingStream->putBe64(cgen_var_919);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013303 if (local_pAllocator)
13304 {
13305 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013306 }
Lingfeng Yang2285df12018-11-17 16:25:11 -080013307 if (((swapchainCount)))
13308 {
David Reveman9875f2c2019-06-11 21:47:12 -040013309 uint64_t* cgen_var_920;
13310 countingStream->alloc((void**)&cgen_var_920, ((swapchainCount)) * 8);
13311 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_920, ((swapchainCount)));
13312 countingStream->write((uint64_t*)cgen_var_920, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080013313 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013314 }
13315 uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13316 countingStream->rewind();
13317 uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
13318 stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
13319 stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013320 uint64_t cgen_var_921;
13321 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_921, 1);
13322 stream->write((uint64_t*)&cgen_var_921, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013323 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013324 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13325 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013326 marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013327 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013328 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013329 uint64_t cgen_var_922 = (uint64_t)(uintptr_t)local_pAllocator;
13330 stream->putBe64(cgen_var_922);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013331 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013332 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013333 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013334 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013335 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
Lingfeng Yang2285df12018-11-17 16:25:11 -080013336 if (((swapchainCount)))
13337 {
David Reveman9875f2c2019-06-11 21:47:12 -040013338 uint64_t* cgen_var_923;
13339 stream->alloc((void**)&cgen_var_923, ((swapchainCount)) * 8);
13340 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_923, ((swapchainCount)));
13341 stream->write((uint64_t*)cgen_var_923, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080013342 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013343 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013344 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR readParams");
Lingfeng Yang2285df12018-11-17 16:25:11 -080013345 if (((swapchainCount)))
13346 {
David Reveman9875f2c2019-06-11 21:47:12 -040013347 uint64_t* cgen_var_924;
13348 stream->alloc((void**)&cgen_var_924, ((swapchainCount)) * 8);
13349 stream->read((uint64_t*)cgen_var_924, ((swapchainCount)) * 8);
13350 stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_924, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013351 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013352 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013353 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
13354 stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013355 countingStream->clearPool();
13356 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013357 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013358 mImpl->log("finish vkCreateSharedSwapchainsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013359 return vkCreateSharedSwapchainsKHR_VkResult_return;
13360}
13361
13362#endif
13363#ifdef VK_KHR_xlib_surface
13364VkResult VkEncoder::vkCreateXlibSurfaceKHR(
13365 VkInstance instance,
13366 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
13367 const VkAllocationCallbacks* pAllocator,
13368 VkSurfaceKHR* pSurface)
13369{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013370 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013371 mImpl->log("start vkCreateXlibSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013372 auto stream = mImpl->stream();
13373 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013374 auto resources = mImpl->resources();
13375 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013376 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013377 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013378 VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013379 VkAllocationCallbacks* local_pAllocator;
13380 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013381 local_pCreateInfo = nullptr;
13382 if (pCreateInfo)
13383 {
13384 local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
13385 deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
13386 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013387 local_pAllocator = nullptr;
13388 if (pAllocator)
13389 {
13390 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13391 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13392 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013393 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013394 if (local_pCreateInfo)
13395 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013396 transform_tohost_VkXlibSurfaceCreateInfoKHR(mImpl->resources(), (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013397 }
13398 if (local_pAllocator)
13399 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013400 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013401 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013402 countingStream->rewind();
13403 {
David Reveman9875f2c2019-06-11 21:47:12 -040013404 uint64_t cgen_var_925;
13405 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_925, 1);
13406 countingStream->write((uint64_t*)&cgen_var_925, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013407 marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013408 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013409 uint64_t cgen_var_926 = (uint64_t)(uintptr_t)local_pAllocator;
13410 countingStream->putBe64(cgen_var_926);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013411 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013412 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013413 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013414 }
David Reveman9875f2c2019-06-11 21:47:12 -040013415 uint64_t cgen_var_927;
13416 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_927, 1);
13417 countingStream->write((uint64_t*)&cgen_var_927, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013418 }
13419 uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13420 countingStream->rewind();
13421 uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
13422 stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
13423 stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013424 uint64_t cgen_var_928;
13425 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_928, 1);
13426 stream->write((uint64_t*)&cgen_var_928, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013427 marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013428 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013429 uint64_t cgen_var_929 = (uint64_t)(uintptr_t)local_pAllocator;
13430 stream->putBe64(cgen_var_929);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013431 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013432 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013433 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013434 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013435 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040013436 uint64_t cgen_var_930;
13437 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_930, 1);
13438 stream->write((uint64_t*)&cgen_var_930, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013439 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013440 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040013441 uint64_t cgen_var_931;
13442 stream->read((uint64_t*)&cgen_var_931, 8);
13443 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_931, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013444 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013445 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
13446 stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013447 countingStream->clearPool();
13448 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013449 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013450 mImpl->log("finish vkCreateXlibSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013451 return vkCreateXlibSurfaceKHR_VkResult_return;
13452}
13453
13454VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
13455 VkPhysicalDevice physicalDevice,
13456 uint32_t queueFamilyIndex,
13457 Display* dpy,
13458 VisualID visualID)
13459{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013460 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013461 mImpl->log("start vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013462 auto stream = mImpl->stream();
13463 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013464 auto resources = mImpl->resources();
13465 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013466 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013467 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013468 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013469 VisualID local_visualID;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013470 local_physicalDevice = physicalDevice;
13471 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013472 local_visualID = visualID;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013473 countingStream->rewind();
13474 {
David Reveman9875f2c2019-06-11 21:47:12 -040013475 uint64_t cgen_var_932;
13476 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_932, 1);
13477 countingStream->write((uint64_t*)&cgen_var_932, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013478 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013479 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013480 countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013481 }
13482 uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13483 countingStream->rewind();
13484 uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
13485 stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
13486 stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013487 uint64_t cgen_var_933;
13488 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_933, 1);
13489 stream->write((uint64_t*)&cgen_var_933, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013490 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013491 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013492 stream->write((VisualID*)&local_visualID, sizeof(VisualID));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013493 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013494 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013495 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013496 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13497 stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013498 countingStream->clearPool();
13499 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013500 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013501 mImpl->log("finish vkGetPhysicalDeviceXlibPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013502 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
13503}
13504
13505#endif
13506#ifdef VK_KHR_xcb_surface
13507VkResult VkEncoder::vkCreateXcbSurfaceKHR(
13508 VkInstance instance,
13509 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
13510 const VkAllocationCallbacks* pAllocator,
13511 VkSurfaceKHR* pSurface)
13512{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013513 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013514 mImpl->log("start vkCreateXcbSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013515 auto stream = mImpl->stream();
13516 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013517 auto resources = mImpl->resources();
13518 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013519 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013520 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013521 VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013522 VkAllocationCallbacks* local_pAllocator;
13523 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013524 local_pCreateInfo = nullptr;
13525 if (pCreateInfo)
13526 {
13527 local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
13528 deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
13529 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013530 local_pAllocator = nullptr;
13531 if (pAllocator)
13532 {
13533 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13534 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13535 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013536 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013537 if (local_pCreateInfo)
13538 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013539 transform_tohost_VkXcbSurfaceCreateInfoKHR(mImpl->resources(), (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013540 }
13541 if (local_pAllocator)
13542 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013543 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013544 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013545 countingStream->rewind();
13546 {
David Reveman9875f2c2019-06-11 21:47:12 -040013547 uint64_t cgen_var_934;
13548 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_934, 1);
13549 countingStream->write((uint64_t*)&cgen_var_934, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013550 marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013551 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013552 uint64_t cgen_var_935 = (uint64_t)(uintptr_t)local_pAllocator;
13553 countingStream->putBe64(cgen_var_935);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013554 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013555 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013556 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013557 }
David Reveman9875f2c2019-06-11 21:47:12 -040013558 uint64_t cgen_var_936;
13559 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_936, 1);
13560 countingStream->write((uint64_t*)&cgen_var_936, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013561 }
13562 uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13563 countingStream->rewind();
13564 uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
13565 stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
13566 stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013567 uint64_t cgen_var_937;
13568 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_937, 1);
13569 stream->write((uint64_t*)&cgen_var_937, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013570 marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013571 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013572 uint64_t cgen_var_938 = (uint64_t)(uintptr_t)local_pAllocator;
13573 stream->putBe64(cgen_var_938);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013574 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013575 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013576 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013577 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013578 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040013579 uint64_t cgen_var_939;
13580 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_939, 1);
13581 stream->write((uint64_t*)&cgen_var_939, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013582 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013583 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040013584 uint64_t cgen_var_940;
13585 stream->read((uint64_t*)&cgen_var_940, 8);
13586 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_940, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013587 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013588 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
13589 stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013590 countingStream->clearPool();
13591 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013592 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013593 mImpl->log("finish vkCreateXcbSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013594 return vkCreateXcbSurfaceKHR_VkResult_return;
13595}
13596
13597VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
13598 VkPhysicalDevice physicalDevice,
13599 uint32_t queueFamilyIndex,
13600 xcb_connection_t* connection,
13601 xcb_visualid_t visual_id)
13602{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013603 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013604 mImpl->log("start vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013605 auto stream = mImpl->stream();
13606 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013607 auto resources = mImpl->resources();
13608 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013609 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013610 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013611 uint32_t local_queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013612 xcb_visualid_t local_visual_id;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013613 local_physicalDevice = physicalDevice;
13614 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013615 local_visual_id = visual_id;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013616 countingStream->rewind();
13617 {
David Reveman9875f2c2019-06-11 21:47:12 -040013618 uint64_t cgen_var_941;
13619 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_941, 1);
13620 countingStream->write((uint64_t*)&cgen_var_941, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013621 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013622 countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013623 countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013624 }
13625 uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13626 countingStream->rewind();
13627 uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
13628 stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
13629 stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013630 uint64_t cgen_var_942;
13631 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_942, 1);
13632 stream->write((uint64_t*)&cgen_var_942, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013633 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013634 stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013635 stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013636 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013637 stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013638 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013639 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13640 stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013641 countingStream->clearPool();
13642 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013643 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013644 mImpl->log("finish vkGetPhysicalDeviceXcbPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013645 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
13646}
13647
13648#endif
13649#ifdef VK_KHR_wayland_surface
13650VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
13651 VkInstance instance,
13652 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
13653 const VkAllocationCallbacks* pAllocator,
13654 VkSurfaceKHR* pSurface)
13655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013656 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013657 mImpl->log("start vkCreateWaylandSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013658 auto stream = mImpl->stream();
13659 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013660 auto resources = mImpl->resources();
13661 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013663 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013664 VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013665 VkAllocationCallbacks* local_pAllocator;
13666 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013667 local_pCreateInfo = nullptr;
13668 if (pCreateInfo)
13669 {
13670 local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
13671 deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
13672 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013673 local_pAllocator = nullptr;
13674 if (pAllocator)
13675 {
13676 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13677 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13678 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013679 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013680 if (local_pCreateInfo)
13681 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013682 transform_tohost_VkWaylandSurfaceCreateInfoKHR(mImpl->resources(), (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013683 }
13684 if (local_pAllocator)
13685 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013686 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013687 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013688 countingStream->rewind();
13689 {
David Reveman9875f2c2019-06-11 21:47:12 -040013690 uint64_t cgen_var_943;
13691 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_943, 1);
13692 countingStream->write((uint64_t*)&cgen_var_943, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013693 marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013694 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013695 uint64_t cgen_var_944 = (uint64_t)(uintptr_t)local_pAllocator;
13696 countingStream->putBe64(cgen_var_944);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013697 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013698 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013699 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013700 }
David Reveman9875f2c2019-06-11 21:47:12 -040013701 uint64_t cgen_var_945;
13702 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_945, 1);
13703 countingStream->write((uint64_t*)&cgen_var_945, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013704 }
13705 uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13706 countingStream->rewind();
13707 uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
13708 stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
13709 stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013710 uint64_t cgen_var_946;
13711 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_946, 1);
13712 stream->write((uint64_t*)&cgen_var_946, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013713 marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013714 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013715 uint64_t cgen_var_947 = (uint64_t)(uintptr_t)local_pAllocator;
13716 stream->putBe64(cgen_var_947);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013717 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013718 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013719 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013720 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013721 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040013722 uint64_t cgen_var_948;
13723 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_948, 1);
13724 stream->write((uint64_t*)&cgen_var_948, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013725 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013726 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040013727 uint64_t cgen_var_949;
13728 stream->read((uint64_t*)&cgen_var_949, 8);
13729 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_949, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013730 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013731 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
13732 stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013733 countingStream->clearPool();
13734 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013735 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013736 mImpl->log("finish vkCreateWaylandSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013737 return vkCreateWaylandSurfaceKHR_VkResult_return;
13738}
13739
13740VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
13741 VkPhysicalDevice physicalDevice,
13742 uint32_t queueFamilyIndex,
13743 wl_display* display)
13744{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013745 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013746 mImpl->log("start vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013747 auto stream = mImpl->stream();
13748 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013749 auto resources = mImpl->resources();
13750 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013751 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013752 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013753 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013754 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013755 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013756 countingStream->rewind();
13757 {
David Reveman9875f2c2019-06-11 21:47:12 -040013758 uint64_t cgen_var_950;
13759 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_950, 1);
13760 countingStream->write((uint64_t*)&cgen_var_950, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013761 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013762 countingStream->write((wl_display*)display, sizeof(wl_display));
13763 }
13764 uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13765 countingStream->rewind();
13766 uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
13767 stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
13768 stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013769 uint64_t cgen_var_951;
13770 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_951, 1);
13771 stream->write((uint64_t*)&cgen_var_951, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013772 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013773 stream->write((wl_display*)display, sizeof(wl_display));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013774 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013775 stream->read((wl_display*)display, sizeof(wl_display));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013776 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013777 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13778 stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013779 countingStream->clearPool();
13780 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013781 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013782 mImpl->log("finish vkGetPhysicalDeviceWaylandPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013783 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
13784}
13785
13786#endif
13787#ifdef VK_KHR_mir_surface
13788VkResult VkEncoder::vkCreateMirSurfaceKHR(
13789 VkInstance instance,
13790 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
13791 const VkAllocationCallbacks* pAllocator,
13792 VkSurfaceKHR* pSurface)
13793{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013794 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013795 mImpl->log("start vkCreateMirSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013796 auto stream = mImpl->stream();
13797 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013798 auto resources = mImpl->resources();
13799 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013800 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013801 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013802 VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013803 VkAllocationCallbacks* local_pAllocator;
13804 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013805 local_pCreateInfo = nullptr;
13806 if (pCreateInfo)
13807 {
13808 local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
13809 deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
13810 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013811 local_pAllocator = nullptr;
13812 if (pAllocator)
13813 {
13814 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13815 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13816 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013817 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013818 if (local_pCreateInfo)
13819 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013820 transform_tohost_VkMirSurfaceCreateInfoKHR(mImpl->resources(), (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013821 }
13822 if (local_pAllocator)
13823 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013824 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013825 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013826 countingStream->rewind();
13827 {
David Reveman9875f2c2019-06-11 21:47:12 -040013828 uint64_t cgen_var_952;
13829 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_952, 1);
13830 countingStream->write((uint64_t*)&cgen_var_952, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013831 marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013832 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013833 uint64_t cgen_var_953 = (uint64_t)(uintptr_t)local_pAllocator;
13834 countingStream->putBe64(cgen_var_953);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013835 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013836 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013837 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013838 }
David Reveman9875f2c2019-06-11 21:47:12 -040013839 uint64_t cgen_var_954;
13840 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_954, 1);
13841 countingStream->write((uint64_t*)&cgen_var_954, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013842 }
13843 uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13844 countingStream->rewind();
13845 uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
13846 stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
13847 stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013848 uint64_t cgen_var_955;
13849 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_955, 1);
13850 stream->write((uint64_t*)&cgen_var_955, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013851 marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013852 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013853 uint64_t cgen_var_956 = (uint64_t)(uintptr_t)local_pAllocator;
13854 stream->putBe64(cgen_var_956);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013855 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013856 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013857 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013858 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013859 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040013860 uint64_t cgen_var_957;
13861 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_957, 1);
13862 stream->write((uint64_t*)&cgen_var_957, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080013863 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013864 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040013865 uint64_t cgen_var_958;
13866 stream->read((uint64_t*)&cgen_var_958, 8);
13867 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_958, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013868 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013869 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
13870 stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013871 countingStream->clearPool();
13872 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013873 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013874 mImpl->log("finish vkCreateMirSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013875 return vkCreateMirSurfaceKHR_VkResult_return;
13876}
13877
13878VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
13879 VkPhysicalDevice physicalDevice,
13880 uint32_t queueFamilyIndex,
13881 MirConnection* connection)
13882{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013883 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013884 mImpl->log("start vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013885 auto stream = mImpl->stream();
13886 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013887 auto resources = mImpl->resources();
13888 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013889 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013890 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013891 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013892 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013893 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013894 countingStream->rewind();
13895 {
David Reveman9875f2c2019-06-11 21:47:12 -040013896 uint64_t cgen_var_959;
13897 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_959, 1);
13898 countingStream->write((uint64_t*)&cgen_var_959, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013899 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013900 countingStream->write((MirConnection*)connection, sizeof(MirConnection));
13901 }
13902 uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13903 countingStream->rewind();
13904 uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
13905 stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
13906 stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013907 uint64_t cgen_var_960;
13908 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_960, 1);
13909 stream->write((uint64_t*)&cgen_var_960, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013910 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013911 stream->write((MirConnection*)connection, sizeof(MirConnection));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013912 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013913 stream->read((MirConnection*)connection, sizeof(MirConnection));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013914 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013915 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13916 stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080013917 countingStream->clearPool();
13918 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013919 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013920 mImpl->log("finish vkGetPhysicalDeviceMirPresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013921 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
13922}
13923
13924#endif
13925#ifdef VK_KHR_android_surface
13926VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
13927 VkInstance instance,
13928 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
13929 const VkAllocationCallbacks* pAllocator,
13930 VkSurfaceKHR* pSurface)
13931{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080013932 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080013933 mImpl->log("start vkCreateAndroidSurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013934 auto stream = mImpl->stream();
13935 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013936 auto resources = mImpl->resources();
13937 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080013938 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013939 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013940 VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080013941 VkAllocationCallbacks* local_pAllocator;
13942 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013943 local_pCreateInfo = nullptr;
13944 if (pCreateInfo)
13945 {
13946 local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
13947 deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
13948 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013949 local_pAllocator = nullptr;
13950 if (pAllocator)
13951 {
13952 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13953 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13954 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080013955 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080013956 if (local_pCreateInfo)
13957 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013958 transform_tohost_VkAndroidSurfaceCreateInfoKHR(mImpl->resources(), (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013959 }
13960 if (local_pAllocator)
13961 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080013962 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080013963 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013964 countingStream->rewind();
13965 {
David Reveman9875f2c2019-06-11 21:47:12 -040013966 uint64_t cgen_var_961;
13967 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_961, 1);
13968 countingStream->write((uint64_t*)&cgen_var_961, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013969 marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013970 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013971 uint64_t cgen_var_962 = (uint64_t)(uintptr_t)local_pAllocator;
13972 countingStream->putBe64(cgen_var_962);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013973 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013974 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013975 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013976 }
David Reveman9875f2c2019-06-11 21:47:12 -040013977 uint64_t cgen_var_963;
13978 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_963, 1);
13979 countingStream->write((uint64_t*)&cgen_var_963, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013980 }
13981 uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13982 countingStream->rewind();
13983 uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
13984 stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
13985 stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040013986 uint64_t cgen_var_964;
13987 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_964, 1);
13988 stream->write((uint64_t*)&cgen_var_964, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013989 marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080013990 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040013991 uint64_t cgen_var_965 = (uint64_t)(uintptr_t)local_pAllocator;
13992 stream->putBe64(cgen_var_965);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013993 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013994 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080013995 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070013996 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080013997 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040013998 uint64_t cgen_var_966;
13999 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_966, 1);
14000 stream->write((uint64_t*)&cgen_var_966, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014001 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014002 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040014003 uint64_t cgen_var_967;
14004 stream->read((uint64_t*)&cgen_var_967, 8);
14005 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_967, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014006 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014007 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
14008 stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014009 countingStream->clearPool();
14010 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014011 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014012 mImpl->log("finish vkCreateAndroidSurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014013 return vkCreateAndroidSurfaceKHR_VkResult_return;
14014}
14015
14016#endif
14017#ifdef VK_KHR_win32_surface
14018VkResult VkEncoder::vkCreateWin32SurfaceKHR(
14019 VkInstance instance,
14020 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
14021 const VkAllocationCallbacks* pAllocator,
14022 VkSurfaceKHR* pSurface)
14023{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014024 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014025 mImpl->log("start vkCreateWin32SurfaceKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014026 auto stream = mImpl->stream();
14027 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014028 auto resources = mImpl->resources();
14029 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014030 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014031 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014032 VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014033 VkAllocationCallbacks* local_pAllocator;
14034 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014035 local_pCreateInfo = nullptr;
14036 if (pCreateInfo)
14037 {
14038 local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
14039 deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
14040 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014041 local_pAllocator = nullptr;
14042 if (pAllocator)
14043 {
14044 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14045 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14046 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080014047 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080014048 if (local_pCreateInfo)
14049 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014050 transform_tohost_VkWin32SurfaceCreateInfoKHR(mImpl->resources(), (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014051 }
14052 if (local_pAllocator)
14053 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014054 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014055 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014056 countingStream->rewind();
14057 {
David Reveman9875f2c2019-06-11 21:47:12 -040014058 uint64_t cgen_var_968;
14059 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_968, 1);
14060 countingStream->write((uint64_t*)&cgen_var_968, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014061 marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014062 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014063 uint64_t cgen_var_969 = (uint64_t)(uintptr_t)local_pAllocator;
14064 countingStream->putBe64(cgen_var_969);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014065 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014066 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014067 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014068 }
David Reveman9875f2c2019-06-11 21:47:12 -040014069 uint64_t cgen_var_970;
14070 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_970, 1);
14071 countingStream->write((uint64_t*)&cgen_var_970, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014072 }
14073 uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14074 countingStream->rewind();
14075 uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
14076 stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
14077 stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014078 uint64_t cgen_var_971;
14079 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_971, 1);
14080 stream->write((uint64_t*)&cgen_var_971, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014081 marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014082 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014083 uint64_t cgen_var_972 = (uint64_t)(uintptr_t)local_pAllocator;
14084 stream->putBe64(cgen_var_972);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014085 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014086 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014087 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014088 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080014089 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040014090 uint64_t cgen_var_973;
14091 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_973, 1);
14092 stream->write((uint64_t*)&cgen_var_973, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080014093 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014094 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040014095 uint64_t cgen_var_974;
14096 stream->read((uint64_t*)&cgen_var_974, 8);
14097 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_974, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014098 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014099 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
14100 stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014101 countingStream->clearPool();
14102 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014103 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014104 mImpl->log("finish vkCreateWin32SurfaceKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014105 return vkCreateWin32SurfaceKHR_VkResult_return;
14106}
14107
14108VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
14109 VkPhysicalDevice physicalDevice,
14110 uint32_t queueFamilyIndex)
14111{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014112 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014113 mImpl->log("start vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014114 auto stream = mImpl->stream();
14115 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014116 auto resources = mImpl->resources();
14117 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014118 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014119 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014120 uint32_t local_queueFamilyIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014121 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014122 local_queueFamilyIndex = queueFamilyIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014123 countingStream->rewind();
14124 {
David Reveman9875f2c2019-06-11 21:47:12 -040014125 uint64_t cgen_var_975;
14126 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_975, 1);
14127 countingStream->write((uint64_t*)&cgen_var_975, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014128 countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014129 }
14130 uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14131 countingStream->rewind();
14132 uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
14133 stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
14134 stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014135 uint64_t cgen_var_976;
14136 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_976, 1);
14137 stream->write((uint64_t*)&cgen_var_976, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014138 stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014139 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR readParams");
14140 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014141 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
14142 stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014143 countingStream->clearPool();
14144 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014145 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014146 mImpl->log("finish vkGetPhysicalDeviceWin32PresentationSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014147 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
14148}
14149
14150#endif
14151#ifdef VK_KHR_sampler_mirror_clamp_to_edge
14152#endif
14153#ifdef VK_KHR_multiview
14154#endif
14155#ifdef VK_KHR_get_physical_device_properties2
14156void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
14157 VkPhysicalDevice physicalDevice,
14158 VkPhysicalDeviceFeatures2* pFeatures)
14159{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014160 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014161 mImpl->log("start vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014162 auto stream = mImpl->stream();
14163 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014164 auto resources = mImpl->resources();
14165 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014166 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014167 VkPhysicalDevice local_physicalDevice;
14168 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014169 countingStream->rewind();
14170 {
David Reveman9875f2c2019-06-11 21:47:12 -040014171 uint64_t cgen_var_977;
14172 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_977, 1);
14173 countingStream->write((uint64_t*)&cgen_var_977, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014174 marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
14175 }
14176 uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14177 countingStream->rewind();
14178 uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
14179 stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
14180 stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014181 uint64_t cgen_var_978;
14182 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_978, 1);
14183 stream->write((uint64_t*)&cgen_var_978, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014184 marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014185 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014186 unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014187 if (pFeatures)
14188 {
14189 transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
14190 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014191 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014192 mImpl->log("finish vkGetPhysicalDeviceFeatures2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014193}
14194
14195void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
14196 VkPhysicalDevice physicalDevice,
14197 VkPhysicalDeviceProperties2* pProperties)
14198{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014199 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014200 mImpl->log("start vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014201 auto stream = mImpl->stream();
14202 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014203 auto resources = mImpl->resources();
14204 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014205 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014206 VkPhysicalDevice local_physicalDevice;
14207 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014208 countingStream->rewind();
14209 {
David Reveman9875f2c2019-06-11 21:47:12 -040014210 uint64_t cgen_var_979;
14211 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
14212 countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014213 marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
14214 }
14215 uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14216 countingStream->rewind();
14217 uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
14218 stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
14219 stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014220 uint64_t cgen_var_980;
14221 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
14222 stream->write((uint64_t*)&cgen_var_980, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014223 marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014224 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014225 unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014226 if (pProperties)
14227 {
14228 transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
14229 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014230 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014231 mImpl->log("finish vkGetPhysicalDeviceProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014232}
14233
14234void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
14235 VkPhysicalDevice physicalDevice,
14236 VkFormat format,
14237 VkFormatProperties2* pFormatProperties)
14238{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014239 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014240 mImpl->log("start vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014241 auto stream = mImpl->stream();
14242 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014243 auto resources = mImpl->resources();
14244 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014245 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014246 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014247 VkFormat local_format;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014248 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014249 local_format = format;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014250 countingStream->rewind();
14251 {
David Reveman9875f2c2019-06-11 21:47:12 -040014252 uint64_t cgen_var_981;
14253 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
14254 countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014255 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014256 marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
14257 }
14258 uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14259 countingStream->rewind();
14260 uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
14261 stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
14262 stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014263 uint64_t cgen_var_982;
14264 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_982, 1);
14265 stream->write((uint64_t*)&cgen_var_982, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014266 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014267 marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014268 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014269 unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014270 if (pFormatProperties)
14271 {
14272 transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
14273 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014274 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014275 mImpl->log("finish vkGetPhysicalDeviceFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014276}
14277
14278VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
14279 VkPhysicalDevice physicalDevice,
14280 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
14281 VkImageFormatProperties2* pImageFormatProperties)
14282{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014283 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014284 mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014285 auto stream = mImpl->stream();
14286 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014287 auto resources = mImpl->resources();
14288 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014289 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014290 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014291 VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014292 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014293 local_pImageFormatInfo = nullptr;
14294 if (pImageFormatInfo)
14295 {
14296 local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
14297 deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
14298 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014299 if (local_pImageFormatInfo)
14300 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014301 transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014302 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014303 countingStream->rewind();
14304 {
David Reveman9875f2c2019-06-11 21:47:12 -040014305 uint64_t cgen_var_983;
14306 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_983, 1);
14307 countingStream->write((uint64_t*)&cgen_var_983, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014308 marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014309 marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
14310 }
14311 uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14312 countingStream->rewind();
14313 uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
14314 stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
14315 stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014316 uint64_t cgen_var_984;
14317 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
14318 stream->write((uint64_t*)&cgen_var_984, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014319 marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014320 marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014321 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014322 unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014323 if (pImageFormatProperties)
14324 {
14325 transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
14326 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014327 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014328 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
14329 stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014330 countingStream->clearPool();
14331 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014332 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014333 mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014334 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
14335}
14336
14337void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
14338 VkPhysicalDevice physicalDevice,
14339 uint32_t* pQueueFamilyPropertyCount,
14340 VkQueueFamilyProperties2* pQueueFamilyProperties)
14341{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014342 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014343 mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014344 auto stream = mImpl->stream();
14345 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014346 auto resources = mImpl->resources();
14347 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014348 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014349 VkPhysicalDevice local_physicalDevice;
14350 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014351 countingStream->rewind();
14352 {
David Reveman9875f2c2019-06-11 21:47:12 -040014353 uint64_t cgen_var_985;
14354 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_985, 1);
14355 countingStream->write((uint64_t*)&cgen_var_985, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014356 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014357 uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
14358 countingStream->putBe64(cgen_var_986);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014359 if (pQueueFamilyPropertyCount)
14360 {
14361 countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
14362 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014363 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014364 uint64_t cgen_var_987 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
14365 countingStream->putBe64(cgen_var_987);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014366 if (pQueueFamilyProperties)
14367 {
14368 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14369 {
14370 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14371 }
14372 }
14373 }
14374 uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14375 countingStream->rewind();
14376 uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
14377 stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
14378 stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014379 uint64_t cgen_var_988;
14380 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_988, 1);
14381 stream->write((uint64_t*)&cgen_var_988, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014382 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014383 uint64_t cgen_var_989 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
14384 stream->putBe64(cgen_var_989);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014385 if (pQueueFamilyPropertyCount)
14386 {
14387 stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
14388 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014389 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014390 uint64_t cgen_var_990 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
14391 stream->putBe64(cgen_var_990);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014392 if (pQueueFamilyProperties)
14393 {
14394 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14395 {
14396 marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14397 }
14398 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014399 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014400 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014401 uint32_t* check_pQueueFamilyPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014402 check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014403 if (pQueueFamilyPropertyCount)
14404 {
14405 if (!(check_pQueueFamilyPropertyCount))
14406 {
14407 fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
14408 }
14409 stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
14410 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014411 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014412 VkQueueFamilyProperties2* check_pQueueFamilyProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014413 check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014414 if (pQueueFamilyProperties)
14415 {
14416 if (!(check_pQueueFamilyProperties))
14417 {
14418 fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
14419 }
14420 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14421 {
14422 unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14423 }
14424 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080014425 if (pQueueFamilyProperties)
14426 {
14427 for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14428 {
14429 transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14430 }
14431 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014432 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014433 mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014434}
14435
14436void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
14437 VkPhysicalDevice physicalDevice,
14438 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
14439{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014440 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014441 mImpl->log("start vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014442 auto stream = mImpl->stream();
14443 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014444 auto resources = mImpl->resources();
14445 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014446 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014447 VkPhysicalDevice local_physicalDevice;
14448 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014449 countingStream->rewind();
14450 {
David Reveman9875f2c2019-06-11 21:47:12 -040014451 uint64_t cgen_var_993;
14452 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_993, 1);
14453 countingStream->write((uint64_t*)&cgen_var_993, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014454 marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
14455 }
14456 uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14457 countingStream->rewind();
14458 uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
14459 stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
14460 stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014461 uint64_t cgen_var_994;
14462 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_994, 1);
14463 stream->write((uint64_t*)&cgen_var_994, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014464 marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014465 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014466 unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014467 if (pMemoryProperties)
14468 {
14469 transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
14470 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014471 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR returnUnmarshal");
Lingfeng Yang154a33c2019-01-29 19:06:23 -080014472 mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2KHR(this, physicalDevice, pMemoryProperties);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014473 mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014474}
14475
14476void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
14477 VkPhysicalDevice physicalDevice,
14478 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
14479 uint32_t* pPropertyCount,
14480 VkSparseImageFormatProperties2* pProperties)
14481{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014482 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014483 mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014484 auto stream = mImpl->stream();
14485 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014486 auto resources = mImpl->resources();
14487 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014488 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014489 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014490 VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014491 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014492 local_pFormatInfo = nullptr;
14493 if (pFormatInfo)
14494 {
14495 local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
14496 deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
14497 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014498 if (local_pFormatInfo)
14499 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014500 transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014501 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014502 countingStream->rewind();
14503 {
David Reveman9875f2c2019-06-11 21:47:12 -040014504 uint64_t cgen_var_995;
14505 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_995, 1);
14506 countingStream->write((uint64_t*)&cgen_var_995, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014507 marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014508 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014509 uint64_t cgen_var_996 = (uint64_t)(uintptr_t)pPropertyCount;
14510 countingStream->putBe64(cgen_var_996);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014511 if (pPropertyCount)
14512 {
14513 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14514 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014515 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014516 uint64_t cgen_var_997 = (uint64_t)(uintptr_t)pProperties;
14517 countingStream->putBe64(cgen_var_997);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014518 if (pProperties)
14519 {
14520 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14521 {
14522 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
14523 }
14524 }
14525 }
14526 uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14527 countingStream->rewind();
14528 uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
14529 stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
14530 stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014531 uint64_t cgen_var_998;
14532 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_998, 1);
14533 stream->write((uint64_t*)&cgen_var_998, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014534 marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014535 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014536 uint64_t cgen_var_999 = (uint64_t)(uintptr_t)pPropertyCount;
14537 stream->putBe64(cgen_var_999);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014538 if (pPropertyCount)
14539 {
14540 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14541 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014542 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014543 uint64_t cgen_var_1000 = (uint64_t)(uintptr_t)pProperties;
14544 stream->putBe64(cgen_var_1000);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014545 if (pProperties)
14546 {
14547 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14548 {
14549 marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
14550 }
14551 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014552 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014553 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014554 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014555 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014556 if (pPropertyCount)
14557 {
14558 if (!(check_pPropertyCount))
14559 {
14560 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14561 }
14562 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14563 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014564 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014565 VkSparseImageFormatProperties2* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014566 check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014567 if (pProperties)
14568 {
14569 if (!(check_pProperties))
14570 {
14571 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14572 }
14573 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14574 {
14575 unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
14576 }
14577 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080014578 if (pProperties)
14579 {
14580 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14581 {
14582 transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
14583 }
14584 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014585 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014586 mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014587}
14588
14589#endif
14590#ifdef VK_KHR_device_group
14591void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
14592 VkDevice device,
14593 uint32_t heapIndex,
14594 uint32_t localDeviceIndex,
14595 uint32_t remoteDeviceIndex,
14596 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
14597{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014598 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014599 mImpl->log("start vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014600 auto stream = mImpl->stream();
14601 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014602 auto resources = mImpl->resources();
14603 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014604 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014605 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014606 uint32_t local_heapIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014607 uint32_t local_localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014608 uint32_t local_remoteDeviceIndex;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014609 local_device = device;
14610 local_heapIndex = heapIndex;
14611 local_localDeviceIndex = localDeviceIndex;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014612 local_remoteDeviceIndex = remoteDeviceIndex;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014613 countingStream->rewind();
14614 {
David Reveman9875f2c2019-06-11 21:47:12 -040014615 uint64_t cgen_var_1003;
14616 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1003, 1);
14617 countingStream->write((uint64_t*)&cgen_var_1003, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014618 countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
14619 countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
14620 countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014621 countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
14622 }
14623 uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14624 countingStream->rewind();
14625 uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
14626 stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
14627 stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014628 uint64_t cgen_var_1004;
14629 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1004, 1);
14630 stream->write((uint64_t*)&cgen_var_1004, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014631 stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
14632 stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
14633 stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014634 stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014635 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014636 stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014637 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014638 mImpl->log("finish vkGetDeviceGroupPeerMemoryFeaturesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014639}
14640
14641void VkEncoder::vkCmdSetDeviceMaskKHR(
14642 VkCommandBuffer commandBuffer,
14643 uint32_t deviceMask)
14644{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014645 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014646 mImpl->log("start vkCmdSetDeviceMaskKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014647 auto stream = mImpl->stream();
14648 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014649 auto resources = mImpl->resources();
14650 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014651 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014652 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014653 uint32_t local_deviceMask;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014654 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014655 local_deviceMask = deviceMask;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014656 countingStream->rewind();
14657 {
David Reveman9875f2c2019-06-11 21:47:12 -040014658 uint64_t cgen_var_1005;
14659 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1005, 1);
14660 countingStream->write((uint64_t*)&cgen_var_1005, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014661 countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014662 }
14663 uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14664 countingStream->rewind();
14665 uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
14666 stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
14667 stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014668 uint64_t cgen_var_1006;
14669 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1006, 1);
14670 stream->write((uint64_t*)&cgen_var_1006, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014671 stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014672 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR readParams");
14673 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014674 mImpl->log("finish vkCmdSetDeviceMaskKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014675}
14676
14677void VkEncoder::vkCmdDispatchBaseKHR(
14678 VkCommandBuffer commandBuffer,
14679 uint32_t baseGroupX,
14680 uint32_t baseGroupY,
14681 uint32_t baseGroupZ,
14682 uint32_t groupCountX,
14683 uint32_t groupCountY,
14684 uint32_t groupCountZ)
14685{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014686 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014687 mImpl->log("start vkCmdDispatchBaseKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014688 auto stream = mImpl->stream();
14689 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014690 auto resources = mImpl->resources();
14691 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014692 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014693 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014694 uint32_t local_baseGroupX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014695 uint32_t local_baseGroupY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014696 uint32_t local_baseGroupZ;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014697 uint32_t local_groupCountX;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014698 uint32_t local_groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014699 uint32_t local_groupCountZ;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014700 local_commandBuffer = commandBuffer;
14701 local_baseGroupX = baseGroupX;
14702 local_baseGroupY = baseGroupY;
14703 local_baseGroupZ = baseGroupZ;
14704 local_groupCountX = groupCountX;
14705 local_groupCountY = groupCountY;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014706 local_groupCountZ = groupCountZ;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014707 countingStream->rewind();
14708 {
David Reveman9875f2c2019-06-11 21:47:12 -040014709 uint64_t cgen_var_1007;
14710 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1007, 1);
14711 countingStream->write((uint64_t*)&cgen_var_1007, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014712 countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14713 countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14714 countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14715 countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14716 countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14717 countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014718 }
14719 uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14720 countingStream->rewind();
14721 uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
14722 stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
14723 stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014724 uint64_t cgen_var_1008;
14725 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1008, 1);
14726 stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014727 stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14728 stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14729 stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14730 stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14731 stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14732 stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014733 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR readParams");
14734 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014735 mImpl->log("finish vkCmdDispatchBaseKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014736}
14737
14738#endif
14739#ifdef VK_KHR_shader_draw_parameters
14740#endif
14741#ifdef VK_KHR_maintenance1
14742void VkEncoder::vkTrimCommandPoolKHR(
14743 VkDevice device,
14744 VkCommandPool commandPool,
14745 VkCommandPoolTrimFlags flags)
14746{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014747 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014748 mImpl->log("start vkTrimCommandPoolKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014749 auto stream = mImpl->stream();
14750 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014751 auto resources = mImpl->resources();
14752 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014753 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014754 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014755 VkCommandPool local_commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014756 VkCommandPoolTrimFlags local_flags;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014757 local_device = device;
14758 local_commandPool = commandPool;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014759 local_flags = flags;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014760 countingStream->rewind();
14761 {
David Reveman9875f2c2019-06-11 21:47:12 -040014762 uint64_t cgen_var_1009;
14763 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1);
14764 countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
14765 uint64_t cgen_var_1010;
14766 countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1010, 1);
14767 countingStream->write((uint64_t*)&cgen_var_1010, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014768 countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014769 }
14770 uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14771 countingStream->rewind();
14772 uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
14773 stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
14774 stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014775 uint64_t cgen_var_1011;
14776 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1);
14777 stream->write((uint64_t*)&cgen_var_1011, 1 * 8);
14778 uint64_t cgen_var_1012;
14779 stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1012, 1);
14780 stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014781 stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014782 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR readParams");
14783 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014784 mImpl->log("finish vkTrimCommandPoolKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014785}
14786
14787#endif
14788#ifdef VK_KHR_device_group_creation
14789VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
14790 VkInstance instance,
14791 uint32_t* pPhysicalDeviceGroupCount,
14792 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
14793{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014794 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014795 mImpl->log("start vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014796 auto stream = mImpl->stream();
14797 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014798 auto resources = mImpl->resources();
14799 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014800 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014801 VkInstance local_instance;
14802 local_instance = instance;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014803 countingStream->rewind();
14804 {
David Reveman9875f2c2019-06-11 21:47:12 -040014805 uint64_t cgen_var_1013;
14806 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1013, 1);
14807 countingStream->write((uint64_t*)&cgen_var_1013, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014808 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014809 uint64_t cgen_var_1014 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14810 countingStream->putBe64(cgen_var_1014);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014811 if (pPhysicalDeviceGroupCount)
14812 {
14813 countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14814 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014815 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014816 uint64_t cgen_var_1015 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14817 countingStream->putBe64(cgen_var_1015);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014818 if (pPhysicalDeviceGroupProperties)
14819 {
14820 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14821 {
14822 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14823 }
14824 }
14825 }
14826 uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14827 countingStream->rewind();
14828 uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
14829 stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
14830 stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014831 uint64_t cgen_var_1016;
14832 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1016, 1);
14833 stream->write((uint64_t*)&cgen_var_1016, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014834 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014835 uint64_t cgen_var_1017 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14836 stream->putBe64(cgen_var_1017);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014837 if (pPhysicalDeviceGroupCount)
14838 {
14839 stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14840 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014841 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040014842 uint64_t cgen_var_1018 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14843 stream->putBe64(cgen_var_1018);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014844 if (pPhysicalDeviceGroupProperties)
14845 {
14846 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14847 {
14848 marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14849 }
14850 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014851 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014852 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014853 uint32_t* check_pPhysicalDeviceGroupCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014854 check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014855 if (pPhysicalDeviceGroupCount)
14856 {
14857 if (!(check_pPhysicalDeviceGroupCount))
14858 {
14859 fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
14860 }
14861 stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14862 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014863 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014864 VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080014865 check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014866 if (pPhysicalDeviceGroupProperties)
14867 {
14868 if (!(check_pPhysicalDeviceGroupProperties))
14869 {
14870 fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
14871 }
14872 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14873 {
14874 unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14875 }
14876 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080014877 if (pPhysicalDeviceGroupProperties)
14878 {
14879 for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14880 {
14881 transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14882 }
14883 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014884 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014885 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
14886 stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080014887 countingStream->clearPool();
14888 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014889 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014890 mImpl->log("finish vkEnumeratePhysicalDeviceGroupsKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014891 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
14892}
14893
14894#endif
14895#ifdef VK_KHR_external_memory_capabilities
14896void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
14897 VkPhysicalDevice physicalDevice,
14898 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
14899 VkExternalBufferProperties* pExternalBufferProperties)
14900{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014901 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014902 mImpl->log("start vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014903 auto stream = mImpl->stream();
14904 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014905 auto resources = mImpl->resources();
14906 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014907 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014908 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014909 VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014910 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014911 local_pExternalBufferInfo = nullptr;
14912 if (pExternalBufferInfo)
14913 {
14914 local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
14915 deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
14916 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014917 if (local_pExternalBufferInfo)
14918 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080014919 mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080014920 transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014921 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014922 countingStream->rewind();
14923 {
David Reveman9875f2c2019-06-11 21:47:12 -040014924 uint64_t cgen_var_1021;
14925 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1021, 1);
14926 countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014927 marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014928 marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14929 }
14930 uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14931 countingStream->rewind();
14932 uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
14933 stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
14934 stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014935 uint64_t cgen_var_1022;
14936 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1022, 1);
14937 stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014938 marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014939 marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014940 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014941 unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080014942 if (pExternalBufferProperties)
14943 {
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080014944 mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1);
Lingfeng Yang97a06702018-12-24 17:02:43 -080014945 transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
14946 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014947 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014948 mImpl->log("finish vkGetPhysicalDeviceExternalBufferPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014949}
14950
14951#endif
14952#ifdef VK_KHR_external_memory
14953#endif
14954#ifdef VK_KHR_external_memory_win32
14955VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
14956 VkDevice device,
14957 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14958 HANDLE* pHandle)
14959{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014960 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080014961 mImpl->log("start vkGetMemoryWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014962 auto stream = mImpl->stream();
14963 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014964 auto resources = mImpl->resources();
14965 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080014966 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014967 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014968 VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080014969 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014970 local_pGetWin32HandleInfo = nullptr;
14971 if (pGetWin32HandleInfo)
14972 {
14973 local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
14974 deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14975 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080014976 if (local_pGetWin32HandleInfo)
14977 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080014978 transform_tohost_VkMemoryGetWin32HandleInfoKHR(mImpl->resources(), (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080014979 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014980 countingStream->rewind();
14981 {
David Reveman9875f2c2019-06-11 21:47:12 -040014982 uint64_t cgen_var_1023;
14983 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
14984 countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014985 marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014986 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14987 }
14988 uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14989 countingStream->rewind();
14990 uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
14991 stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
14992 stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040014993 uint64_t cgen_var_1024;
14994 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
14995 stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080014996 marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014997 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080014998 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070014999 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015000 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015001 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
15002 stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015003 countingStream->clearPool();
15004 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015005 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015006 mImpl->log("finish vkGetMemoryWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015007 return vkGetMemoryWin32HandleKHR_VkResult_return;
15008}
15009
15010VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
15011 VkDevice device,
15012 VkExternalMemoryHandleTypeFlagBits handleType,
15013 HANDLE handle,
15014 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
15015{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015016 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015017 mImpl->log("start vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015018 auto stream = mImpl->stream();
15019 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015020 auto resources = mImpl->resources();
15021 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015022 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015023 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015024 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015025 HANDLE local_handle;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015026 local_device = device;
15027 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015028 local_handle = handle;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015029 countingStream->rewind();
15030 {
David Reveman9875f2c2019-06-11 21:47:12 -040015031 uint64_t cgen_var_1025;
15032 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
15033 countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015034 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15035 countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015036 marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
15037 }
15038 uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15039 countingStream->rewind();
15040 uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
15041 stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
15042 stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015043 uint64_t cgen_var_1026;
15044 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
15045 stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015046 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15047 stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015048 marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015049 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015050 unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015051 if (pMemoryWin32HandleProperties)
15052 {
15053 transform_fromhost_VkMemoryWin32HandlePropertiesKHR(mImpl->resources(), (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
15054 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015055 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015056 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
15057 stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015058 countingStream->clearPool();
15059 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015060 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015061 mImpl->log("finish vkGetMemoryWin32HandlePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015062 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
15063}
15064
15065#endif
15066#ifdef VK_KHR_external_memory_fd
15067VkResult VkEncoder::vkGetMemoryFdKHR(
15068 VkDevice device,
15069 const VkMemoryGetFdInfoKHR* pGetFdInfo,
15070 int* pFd)
15071{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015072 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015073 mImpl->log("start vkGetMemoryFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015074 auto stream = mImpl->stream();
15075 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015076 auto resources = mImpl->resources();
15077 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015078 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015079 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015080 VkMemoryGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015081 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015082 local_pGetFdInfo = nullptr;
15083 if (pGetFdInfo)
15084 {
15085 local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
15086 deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
15087 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015088 if (local_pGetFdInfo)
15089 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015090 transform_tohost_VkMemoryGetFdInfoKHR(mImpl->resources(), (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015091 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015092 countingStream->rewind();
15093 {
David Reveman9875f2c2019-06-11 21:47:12 -040015094 uint64_t cgen_var_1027;
15095 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1027, 1);
15096 countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015097 marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015098 countingStream->write((int*)pFd, sizeof(int));
15099 }
15100 uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15101 countingStream->rewind();
15102 uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
15103 stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
15104 stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015105 uint64_t cgen_var_1028;
15106 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1028, 1);
15107 stream->write((uint64_t*)&cgen_var_1028, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015108 marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015109 stream->write((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015110 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015111 stream->read((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015112 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015113 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
15114 stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015115 countingStream->clearPool();
15116 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015117 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015118 mImpl->log("finish vkGetMemoryFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015119 return vkGetMemoryFdKHR_VkResult_return;
15120}
15121
15122VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
15123 VkDevice device,
15124 VkExternalMemoryHandleTypeFlagBits handleType,
15125 int fd,
15126 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
15127{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015128 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015129 mImpl->log("start vkGetMemoryFdPropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015130 auto stream = mImpl->stream();
15131 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015132 auto resources = mImpl->resources();
15133 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015134 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015135 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015136 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015137 int local_fd;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015138 local_device = device;
15139 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015140 local_fd = fd;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015141 countingStream->rewind();
15142 {
David Reveman9875f2c2019-06-11 21:47:12 -040015143 uint64_t cgen_var_1029;
15144 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1029, 1);
15145 countingStream->write((uint64_t*)&cgen_var_1029, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015146 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15147 countingStream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015148 marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
15149 }
15150 uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15151 countingStream->rewind();
15152 uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
15153 stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
15154 stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015155 uint64_t cgen_var_1030;
15156 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1030, 1);
15157 stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015158 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15159 stream->write((int*)&local_fd, sizeof(int));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015160 marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015161 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015162 unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015163 if (pMemoryFdProperties)
15164 {
15165 transform_fromhost_VkMemoryFdPropertiesKHR(mImpl->resources(), (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
15166 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015167 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015168 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
15169 stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015170 countingStream->clearPool();
15171 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015172 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015173 mImpl->log("finish vkGetMemoryFdPropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015174 return vkGetMemoryFdPropertiesKHR_VkResult_return;
15175}
15176
15177#endif
15178#ifdef VK_KHR_win32_keyed_mutex
15179#endif
15180#ifdef VK_KHR_external_semaphore_capabilities
15181void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
15182 VkPhysicalDevice physicalDevice,
15183 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
15184 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
15185{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015186 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015187 mImpl->log("start vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015188 auto stream = mImpl->stream();
15189 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015190 auto resources = mImpl->resources();
15191 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015192 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015193 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015194 VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015195 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015196 local_pExternalSemaphoreInfo = nullptr;
15197 if (pExternalSemaphoreInfo)
15198 {
15199 local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
15200 deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
15201 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015202 if (local_pExternalSemaphoreInfo)
15203 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015204 transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015205 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015206 countingStream->rewind();
15207 {
David Reveman9875f2c2019-06-11 21:47:12 -040015208 uint64_t cgen_var_1031;
15209 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1031, 1);
15210 countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015211 marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015212 marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
15213 }
15214 uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15215 countingStream->rewind();
15216 uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
15217 stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
15218 stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015219 uint64_t cgen_var_1032;
15220 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1032, 1);
15221 stream->write((uint64_t*)&cgen_var_1032, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015222 marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015223 marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015224 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015225 unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080015226 if (pExternalSemaphoreProperties)
15227 {
15228 transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
15229 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015230 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015231 mImpl->log("finish vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015232}
15233
15234#endif
15235#ifdef VK_KHR_external_semaphore
15236#endif
15237#ifdef VK_KHR_external_semaphore_win32
15238VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
15239 VkDevice device,
15240 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
15241{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015242 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015243 mImpl->log("start vkImportSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015244 auto stream = mImpl->stream();
15245 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015246 auto resources = mImpl->resources();
15247 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015248 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015249 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015250 VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015251 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015252 local_pImportSemaphoreWin32HandleInfo = nullptr;
15253 if (pImportSemaphoreWin32HandleInfo)
15254 {
15255 local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
15256 deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
15257 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015258 if (local_pImportSemaphoreWin32HandleInfo)
15259 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015260 transform_tohost_VkImportSemaphoreWin32HandleInfoKHR(mImpl->resources(), (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015261 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015262 countingStream->rewind();
15263 {
David Reveman9875f2c2019-06-11 21:47:12 -040015264 uint64_t cgen_var_1033;
15265 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1033, 1);
15266 countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015267 marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015268 }
15269 uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15270 countingStream->rewind();
15271 uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
15272 stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
15273 stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015274 uint64_t cgen_var_1034;
15275 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1034, 1);
15276 stream->write((uint64_t*)&cgen_var_1034, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015277 marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015278 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR readParams");
15279 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015280 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
15281 stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015282 countingStream->clearPool();
15283 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015284 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015285 mImpl->log("finish vkImportSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015286 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
15287}
15288
15289VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
15290 VkDevice device,
15291 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
15292 HANDLE* pHandle)
15293{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015294 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015295 mImpl->log("start vkGetSemaphoreWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015296 auto stream = mImpl->stream();
15297 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015298 auto resources = mImpl->resources();
15299 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015300 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015301 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015302 VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015303 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015304 local_pGetWin32HandleInfo = nullptr;
15305 if (pGetWin32HandleInfo)
15306 {
15307 local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
15308 deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
15309 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015310 if (local_pGetWin32HandleInfo)
15311 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015312 transform_tohost_VkSemaphoreGetWin32HandleInfoKHR(mImpl->resources(), (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015313 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015314 countingStream->rewind();
15315 {
David Reveman9875f2c2019-06-11 21:47:12 -040015316 uint64_t cgen_var_1035;
15317 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1035, 1);
15318 countingStream->write((uint64_t*)&cgen_var_1035, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015319 marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015320 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
15321 }
15322 uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15323 countingStream->rewind();
15324 uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
15325 stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
15326 stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015327 uint64_t cgen_var_1036;
15328 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1036, 1);
15329 stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015330 marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015331 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015332 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015333 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015334 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015335 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
15336 stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015337 countingStream->clearPool();
15338 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015339 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015340 mImpl->log("finish vkGetSemaphoreWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015341 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
15342}
15343
15344#endif
15345#ifdef VK_KHR_external_semaphore_fd
15346VkResult VkEncoder::vkImportSemaphoreFdKHR(
15347 VkDevice device,
15348 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
15349{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015350 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015351 mImpl->log("start vkImportSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015352 auto stream = mImpl->stream();
15353 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015354 auto resources = mImpl->resources();
15355 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015356 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015357 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015358 VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015359 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015360 local_pImportSemaphoreFdInfo = nullptr;
15361 if (pImportSemaphoreFdInfo)
15362 {
15363 local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
15364 deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
15365 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015366 if (local_pImportSemaphoreFdInfo)
15367 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015368 transform_tohost_VkImportSemaphoreFdInfoKHR(mImpl->resources(), (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015369 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015370 countingStream->rewind();
15371 {
David Reveman9875f2c2019-06-11 21:47:12 -040015372 uint64_t cgen_var_1037;
15373 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1037, 1);
15374 countingStream->write((uint64_t*)&cgen_var_1037, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015375 marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015376 }
15377 uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15378 countingStream->rewind();
15379 uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
15380 stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
15381 stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015382 uint64_t cgen_var_1038;
15383 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1038, 1);
15384 stream->write((uint64_t*)&cgen_var_1038, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015385 marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015386 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR readParams");
15387 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015388 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
15389 stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015390 countingStream->clearPool();
15391 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015392 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015393 mImpl->log("finish vkImportSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015394 return vkImportSemaphoreFdKHR_VkResult_return;
15395}
15396
15397VkResult VkEncoder::vkGetSemaphoreFdKHR(
15398 VkDevice device,
15399 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
15400 int* pFd)
15401{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015402 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015403 mImpl->log("start vkGetSemaphoreFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015404 auto stream = mImpl->stream();
15405 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015406 auto resources = mImpl->resources();
15407 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015408 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015409 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015410 VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015411 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015412 local_pGetFdInfo = nullptr;
15413 if (pGetFdInfo)
15414 {
15415 local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
15416 deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
15417 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015418 if (local_pGetFdInfo)
15419 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015420 transform_tohost_VkSemaphoreGetFdInfoKHR(mImpl->resources(), (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015421 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015422 countingStream->rewind();
15423 {
David Reveman9875f2c2019-06-11 21:47:12 -040015424 uint64_t cgen_var_1039;
15425 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1039, 1);
15426 countingStream->write((uint64_t*)&cgen_var_1039, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015427 marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015428 countingStream->write((int*)pFd, sizeof(int));
15429 }
15430 uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15431 countingStream->rewind();
15432 uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
15433 stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
15434 stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015435 uint64_t cgen_var_1040;
15436 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1040, 1);
15437 stream->write((uint64_t*)&cgen_var_1040, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015438 marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015439 stream->write((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015440 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015441 stream->read((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015442 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015443 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
15444 stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015445 countingStream->clearPool();
15446 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015447 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015448 mImpl->log("finish vkGetSemaphoreFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015449 return vkGetSemaphoreFdKHR_VkResult_return;
15450}
15451
15452#endif
15453#ifdef VK_KHR_push_descriptor
15454void VkEncoder::vkCmdPushDescriptorSetKHR(
15455 VkCommandBuffer commandBuffer,
15456 VkPipelineBindPoint pipelineBindPoint,
15457 VkPipelineLayout layout,
15458 uint32_t set,
15459 uint32_t descriptorWriteCount,
15460 const VkWriteDescriptorSet* pDescriptorWrites)
15461{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015462 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015463 mImpl->log("start vkCmdPushDescriptorSetKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015464 auto stream = mImpl->stream();
15465 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015466 auto resources = mImpl->resources();
15467 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015468 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015469 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015470 VkPipelineBindPoint local_pipelineBindPoint;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015471 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015472 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015473 uint32_t local_descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015474 VkWriteDescriptorSet* local_pDescriptorWrites;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015475 local_commandBuffer = commandBuffer;
15476 local_pipelineBindPoint = pipelineBindPoint;
15477 local_layout = layout;
15478 local_set = set;
15479 local_descriptorWriteCount = descriptorWriteCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015480 local_pDescriptorWrites = nullptr;
15481 if (pDescriptorWrites)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015482 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015483 local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015484 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15485 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015486 deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
15487 }
15488 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015489 if (local_pDescriptorWrites)
15490 {
15491 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15492 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015493 transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015494 }
15495 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015496 countingStream->rewind();
15497 {
David Reveman9875f2c2019-06-11 21:47:12 -040015498 uint64_t cgen_var_1041;
15499 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1041, 1);
15500 countingStream->write((uint64_t*)&cgen_var_1041, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015501 countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
David Reveman9875f2c2019-06-11 21:47:12 -040015502 uint64_t cgen_var_1042;
15503 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1042, 1);
15504 countingStream->write((uint64_t*)&cgen_var_1042, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015505 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
15506 countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
15507 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15508 {
15509 marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015510 }
15511 }
15512 uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15513 countingStream->rewind();
15514 uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
15515 stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
15516 stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015517 uint64_t cgen_var_1043;
15518 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1043, 1);
15519 stream->write((uint64_t*)&cgen_var_1043, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015520 stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
David Reveman9875f2c2019-06-11 21:47:12 -040015521 uint64_t cgen_var_1044;
15522 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1044, 1);
15523 stream->write((uint64_t*)&cgen_var_1044, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015524 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
15525 stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015526 for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15527 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015528 marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015529 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015530 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR readParams");
15531 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015532 mImpl->log("finish vkCmdPushDescriptorSetKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015533}
15534
15535void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
15536 VkCommandBuffer commandBuffer,
15537 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15538 VkPipelineLayout layout,
15539 uint32_t set,
15540 const void* pData)
15541{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015542 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015543 mImpl->log("start vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015544 auto stream = mImpl->stream();
15545 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015546 auto resources = mImpl->resources();
15547 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015548 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015549 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015550 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015551 VkPipelineLayout local_layout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015552 uint32_t local_set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015553 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015554 local_commandBuffer = commandBuffer;
15555 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
15556 local_layout = layout;
15557 local_set = set;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015558 local_pData = nullptr;
15559 if (pData)
15560 {
15561 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
15562 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015563 countingStream->rewind();
15564 {
David Reveman9875f2c2019-06-11 21:47:12 -040015565 uint64_t cgen_var_1045;
15566 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1045, 1);
15567 countingStream->write((uint64_t*)&cgen_var_1045, 1 * 8);
15568 uint64_t cgen_var_1046;
15569 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1046, 1);
15570 countingStream->write((uint64_t*)&cgen_var_1046, 1 * 8);
15571 uint64_t cgen_var_1047;
15572 countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1047, 1);
15573 countingStream->write((uint64_t*)&cgen_var_1047, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015574 countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015575 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040015576 uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pData;
15577 countingStream->putBe64(cgen_var_1048);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015578 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015579 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015580 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015581 }
15582 }
15583 uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15584 countingStream->rewind();
15585 uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
15586 stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
15587 stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015588 uint64_t cgen_var_1049;
15589 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1049, 1);
15590 stream->write((uint64_t*)&cgen_var_1049, 1 * 8);
15591 uint64_t cgen_var_1050;
15592 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1050, 1);
15593 stream->write((uint64_t*)&cgen_var_1050, 1 * 8);
15594 uint64_t cgen_var_1051;
15595 stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1051, 1);
15596 stream->write((uint64_t*)&cgen_var_1051, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015597 stream->write((uint32_t*)&local_set, sizeof(uint32_t));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015598 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040015599 uint64_t cgen_var_1052 = (uint64_t)(uintptr_t)local_pData;
15600 stream->putBe64(cgen_var_1052);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015601 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015602 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015603 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015604 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015605 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR readParams");
15606 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015607 mImpl->log("finish vkCmdPushDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015608}
15609
15610#endif
15611#ifdef VK_KHR_16bit_storage
15612#endif
15613#ifdef VK_KHR_incremental_present
15614#endif
15615#ifdef VK_KHR_descriptor_update_template
15616VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
15617 VkDevice device,
15618 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
15619 const VkAllocationCallbacks* pAllocator,
15620 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
15621{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015622 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015623 mImpl->log("start vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015624 auto stream = mImpl->stream();
15625 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015626 auto resources = mImpl->resources();
15627 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015628 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015629 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015630 VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015631 VkAllocationCallbacks* local_pAllocator;
15632 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015633 local_pCreateInfo = nullptr;
15634 if (pCreateInfo)
15635 {
15636 local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
15637 deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
15638 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015639 local_pAllocator = nullptr;
15640 if (pAllocator)
15641 {
15642 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15643 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15644 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015645 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015646 if (local_pCreateInfo)
15647 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015648 transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015649 }
15650 if (local_pAllocator)
15651 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015652 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015653 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015654 countingStream->rewind();
15655 {
David Reveman9875f2c2019-06-11 21:47:12 -040015656 uint64_t cgen_var_1053;
15657 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1053, 1);
15658 countingStream->write((uint64_t*)&cgen_var_1053, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015659 marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015660 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040015661 uint64_t cgen_var_1054 = (uint64_t)(uintptr_t)local_pAllocator;
15662 countingStream->putBe64(cgen_var_1054);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015663 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015664 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015665 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015666 }
David Reveman9875f2c2019-06-11 21:47:12 -040015667 uint64_t cgen_var_1055;
15668 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1055, 1);
15669 countingStream->write((uint64_t*)&cgen_var_1055, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015670 }
15671 uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15672 countingStream->rewind();
15673 uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
15674 stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
15675 stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015676 uint64_t cgen_var_1056;
15677 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
15678 stream->write((uint64_t*)&cgen_var_1056, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015679 marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015680 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040015681 uint64_t cgen_var_1057 = (uint64_t)(uintptr_t)local_pAllocator;
15682 stream->putBe64(cgen_var_1057);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015683 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015684 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015685 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015686 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015687 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040015688 uint64_t cgen_var_1058;
15689 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1058, 1);
15690 stream->write((uint64_t*)&cgen_var_1058, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015691 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015692 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR readParams");
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080015693 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -040015694 uint64_t cgen_var_1059;
15695 stream->read((uint64_t*)&cgen_var_1059, 8);
15696 stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1059, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080015697 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015698 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015699 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
15700 stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015701 countingStream->clearPool();
15702 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015703 pool->freeAll();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070015704 mImpl->resources()->on_vkCreateDescriptorUpdateTemplateKHR(this, vkCreateDescriptorUpdateTemplateKHR_VkResult_return, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015705 mImpl->log("finish vkCreateDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015706 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
15707}
15708
15709void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
15710 VkDevice device,
15711 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15712 const VkAllocationCallbacks* pAllocator)
15713{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015714 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015715 mImpl->log("start vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015716 auto stream = mImpl->stream();
15717 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015718 auto resources = mImpl->resources();
15719 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015720 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015721 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015722 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015723 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015724 local_device = device;
15725 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015726 local_pAllocator = nullptr;
15727 if (pAllocator)
15728 {
15729 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15730 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15731 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015732 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015733 if (local_pAllocator)
15734 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015735 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015736 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015737 countingStream->rewind();
15738 {
David Reveman9875f2c2019-06-11 21:47:12 -040015739 uint64_t cgen_var_1060;
15740 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1060, 1);
15741 countingStream->write((uint64_t*)&cgen_var_1060, 1 * 8);
15742 uint64_t cgen_var_1061;
15743 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1061, 1);
15744 countingStream->write((uint64_t*)&cgen_var_1061, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015745 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040015746 uint64_t cgen_var_1062 = (uint64_t)(uintptr_t)local_pAllocator;
15747 countingStream->putBe64(cgen_var_1062);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015748 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015749 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015750 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015751 }
15752 }
15753 uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15754 countingStream->rewind();
15755 uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
15756 stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
15757 stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015758 uint64_t cgen_var_1063;
15759 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1063, 1);
15760 stream->write((uint64_t*)&cgen_var_1063, 1 * 8);
15761 uint64_t cgen_var_1064;
15762 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1064, 1);
15763 stream->write((uint64_t*)&cgen_var_1064, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015764 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040015765 uint64_t cgen_var_1065 = (uint64_t)(uintptr_t)local_pAllocator;
15766 stream->putBe64(cgen_var_1065);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015767 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015768 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015769 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015770 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015771 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR readParams");
15772 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR returnUnmarshal");
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080015773 resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015774 mImpl->log("finish vkDestroyDescriptorUpdateTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015775}
15776
15777void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
15778 VkDevice device,
15779 VkDescriptorSet descriptorSet,
15780 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15781 const void* pData)
15782{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015783 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015784 mImpl->log("start vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015785 auto stream = mImpl->stream();
15786 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015787 auto resources = mImpl->resources();
15788 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015789 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015790 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015791 VkDescriptorSet local_descriptorSet;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015792 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015793 void* local_pData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015794 local_device = device;
15795 local_descriptorSet = descriptorSet;
15796 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015797 local_pData = nullptr;
15798 if (pData)
15799 {
15800 local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
15801 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015802 countingStream->rewind();
15803 {
David Reveman9875f2c2019-06-11 21:47:12 -040015804 uint64_t cgen_var_1066;
15805 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1066, 1);
15806 countingStream->write((uint64_t*)&cgen_var_1066, 1 * 8);
15807 uint64_t cgen_var_1067;
15808 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1067, 1);
15809 countingStream->write((uint64_t*)&cgen_var_1067, 1 * 8);
15810 uint64_t cgen_var_1068;
15811 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1068, 1);
15812 countingStream->write((uint64_t*)&cgen_var_1068, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015813 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040015814 uint64_t cgen_var_1069 = (uint64_t)(uintptr_t)local_pData;
15815 countingStream->putBe64(cgen_var_1069);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015816 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015817 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015818 countingStream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015819 }
15820 }
15821 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15822 countingStream->rewind();
15823 uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
15824 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
15825 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015826 uint64_t cgen_var_1070;
15827 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1070, 1);
15828 stream->write((uint64_t*)&cgen_var_1070, 1 * 8);
15829 uint64_t cgen_var_1071;
15830 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1071, 1);
15831 stream->write((uint64_t*)&cgen_var_1071, 1 * 8);
15832 uint64_t cgen_var_1072;
15833 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1072, 1);
15834 stream->write((uint64_t*)&cgen_var_1072, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015835 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040015836 uint64_t cgen_var_1073 = (uint64_t)(uintptr_t)local_pData;
15837 stream->putBe64(cgen_var_1073);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015838 if (local_pData)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015839 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015840 stream->write((void*)local_pData, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015841 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015842 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR readParams");
15843 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015844 mImpl->log("finish vkUpdateDescriptorSetWithTemplateKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015845}
15846
15847#endif
15848#ifdef VK_KHR_create_renderpass2
15849VkResult VkEncoder::vkCreateRenderPass2KHR(
15850 VkDevice device,
15851 const VkRenderPassCreateInfo2KHR* pCreateInfo,
15852 const VkAllocationCallbacks* pAllocator,
15853 VkRenderPass* pRenderPass)
15854{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015855 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015856 mImpl->log("start vkCreateRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015857 auto stream = mImpl->stream();
15858 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015859 auto resources = mImpl->resources();
15860 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015861 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015862 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015863 VkRenderPassCreateInfo2KHR* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015864 VkAllocationCallbacks* local_pAllocator;
15865 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015866 local_pCreateInfo = nullptr;
15867 if (pCreateInfo)
15868 {
15869 local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
15870 deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
15871 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015872 local_pAllocator = nullptr;
15873 if (pAllocator)
15874 {
15875 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15876 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15877 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080015878 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080015879 if (local_pCreateInfo)
15880 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015881 transform_tohost_VkRenderPassCreateInfo2KHR(mImpl->resources(), (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015882 }
15883 if (local_pAllocator)
15884 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015885 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015886 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015887 countingStream->rewind();
15888 {
David Reveman9875f2c2019-06-11 21:47:12 -040015889 uint64_t cgen_var_1074;
15890 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1074, 1);
15891 countingStream->write((uint64_t*)&cgen_var_1074, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015892 marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015893 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040015894 uint64_t cgen_var_1075 = (uint64_t)(uintptr_t)local_pAllocator;
15895 countingStream->putBe64(cgen_var_1075);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015896 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015897 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015898 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015899 }
David Reveman9875f2c2019-06-11 21:47:12 -040015900 uint64_t cgen_var_1076;
15901 countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1076, 1);
15902 countingStream->write((uint64_t*)&cgen_var_1076, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015903 }
15904 uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15905 countingStream->rewind();
15906 uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
15907 stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
15908 stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015909 uint64_t cgen_var_1077;
15910 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1077, 1);
15911 stream->write((uint64_t*)&cgen_var_1077, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015912 marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080015913 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040015914 uint64_t cgen_var_1078 = (uint64_t)(uintptr_t)local_pAllocator;
15915 stream->putBe64(cgen_var_1078);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015916 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015917 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015918 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015919 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080015920 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040015921 uint64_t cgen_var_1079;
15922 stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1079, 1);
15923 stream->write((uint64_t*)&cgen_var_1079, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080015924 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015925 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040015926 uint64_t cgen_var_1080;
15927 stream->read((uint64_t*)&cgen_var_1080, 8);
15928 stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1080, (VkRenderPass*)pRenderPass, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015929 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015930 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
15931 stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080015932 countingStream->clearPool();
15933 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015934 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015935 mImpl->log("finish vkCreateRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015936 return vkCreateRenderPass2KHR_VkResult_return;
15937}
15938
15939void VkEncoder::vkCmdBeginRenderPass2KHR(
15940 VkCommandBuffer commandBuffer,
15941 const VkRenderPassBeginInfo* pRenderPassBegin,
15942 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
15943{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015944 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015945 mImpl->log("start vkCmdBeginRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015946 auto stream = mImpl->stream();
15947 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015948 auto resources = mImpl->resources();
15949 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080015950 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015951 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015952 VkRenderPassBeginInfo* local_pRenderPassBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080015953 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
15954 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015955 local_pRenderPassBegin = nullptr;
15956 if (pRenderPassBegin)
15957 {
15958 local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
15959 deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15960 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015961 local_pSubpassBeginInfo = nullptr;
15962 if (pSubpassBeginInfo)
15963 {
15964 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15965 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15966 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080015967 if (local_pRenderPassBegin)
15968 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015969 transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015970 }
15971 if (local_pSubpassBeginInfo)
15972 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080015973 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080015974 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015975 countingStream->rewind();
15976 {
David Reveman9875f2c2019-06-11 21:47:12 -040015977 uint64_t cgen_var_1081;
15978 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1081, 1);
15979 countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015980 marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15981 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015982 }
15983 uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15984 countingStream->rewind();
15985 uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
15986 stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
15987 stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040015988 uint64_t cgen_var_1082;
15989 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1082, 1);
15990 stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080015991 marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15992 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080015993 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR readParams");
15994 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080015995 mImpl->log("finish vkCmdBeginRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070015996}
15997
15998void VkEncoder::vkCmdNextSubpass2KHR(
15999 VkCommandBuffer commandBuffer,
16000 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
16001 const VkSubpassEndInfoKHR* pSubpassEndInfo)
16002{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016003 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016004 mImpl->log("start vkCmdNextSubpass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016005 auto stream = mImpl->stream();
16006 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016007 auto resources = mImpl->resources();
16008 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016009 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016010 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016011 VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016012 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
16013 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016014 local_pSubpassBeginInfo = nullptr;
16015 if (pSubpassBeginInfo)
16016 {
16017 local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
16018 deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
16019 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016020 local_pSubpassEndInfo = nullptr;
16021 if (pSubpassEndInfo)
16022 {
16023 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
16024 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16025 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016026 if (local_pSubpassBeginInfo)
16027 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016028 transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016029 }
16030 if (local_pSubpassEndInfo)
16031 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016032 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016033 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016034 countingStream->rewind();
16035 {
David Reveman9875f2c2019-06-11 21:47:12 -040016036 uint64_t cgen_var_1083;
16037 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1083, 1);
16038 countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016039 marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
16040 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016041 }
16042 uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16043 countingStream->rewind();
16044 uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
16045 stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
16046 stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016047 uint64_t cgen_var_1084;
16048 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1084, 1);
16049 stream->write((uint64_t*)&cgen_var_1084, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016050 marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
16051 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016052 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR readParams");
16053 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016054 mImpl->log("finish vkCmdNextSubpass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016055}
16056
16057void VkEncoder::vkCmdEndRenderPass2KHR(
16058 VkCommandBuffer commandBuffer,
16059 const VkSubpassEndInfoKHR* pSubpassEndInfo)
16060{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016061 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016062 mImpl->log("start vkCmdEndRenderPass2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016063 auto stream = mImpl->stream();
16064 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016065 auto resources = mImpl->resources();
16066 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016067 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016068 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016069 VkSubpassEndInfoKHR* local_pSubpassEndInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016070 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016071 local_pSubpassEndInfo = nullptr;
16072 if (pSubpassEndInfo)
16073 {
16074 local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
16075 deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16076 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016077 if (local_pSubpassEndInfo)
16078 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016079 transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016080 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016081 countingStream->rewind();
16082 {
David Reveman9875f2c2019-06-11 21:47:12 -040016083 uint64_t cgen_var_1085;
16084 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1085, 1);
16085 countingStream->write((uint64_t*)&cgen_var_1085, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016086 marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016087 }
16088 uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16089 countingStream->rewind();
16090 uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
16091 stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
16092 stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016093 uint64_t cgen_var_1086;
16094 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1086, 1);
16095 stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016096 marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016097 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR readParams");
16098 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016099 mImpl->log("finish vkCmdEndRenderPass2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016100}
16101
16102#endif
16103#ifdef VK_KHR_shared_presentable_image
16104VkResult VkEncoder::vkGetSwapchainStatusKHR(
16105 VkDevice device,
16106 VkSwapchainKHR swapchain)
16107{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016108 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016109 mImpl->log("start vkGetSwapchainStatusKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016110 auto stream = mImpl->stream();
16111 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016112 auto resources = mImpl->resources();
16113 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016114 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016115 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016116 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016117 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016118 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016119 countingStream->rewind();
16120 {
David Reveman9875f2c2019-06-11 21:47:12 -040016121 uint64_t cgen_var_1087;
16122 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1087, 1);
16123 countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
16124 uint64_t cgen_var_1088;
16125 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1088, 1);
16126 countingStream->write((uint64_t*)&cgen_var_1088, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016127 }
16128 uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16129 countingStream->rewind();
16130 uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
16131 stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
16132 stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016133 uint64_t cgen_var_1089;
16134 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1089, 1);
16135 stream->write((uint64_t*)&cgen_var_1089, 1 * 8);
16136 uint64_t cgen_var_1090;
16137 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1090, 1);
16138 stream->write((uint64_t*)&cgen_var_1090, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016139 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR readParams");
16140 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016141 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
16142 stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016143 countingStream->clearPool();
16144 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016145 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016146 mImpl->log("finish vkGetSwapchainStatusKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016147 return vkGetSwapchainStatusKHR_VkResult_return;
16148}
16149
16150#endif
16151#ifdef VK_KHR_external_fence_capabilities
16152void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
16153 VkPhysicalDevice physicalDevice,
16154 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
16155 VkExternalFenceProperties* pExternalFenceProperties)
16156{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016157 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016158 mImpl->log("start vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016159 auto stream = mImpl->stream();
16160 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016161 auto resources = mImpl->resources();
16162 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016163 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016164 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016165 VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016166 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016167 local_pExternalFenceInfo = nullptr;
16168 if (pExternalFenceInfo)
16169 {
16170 local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
16171 deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
16172 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016173 if (local_pExternalFenceInfo)
16174 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016175 transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016176 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016177 countingStream->rewind();
16178 {
David Reveman9875f2c2019-06-11 21:47:12 -040016179 uint64_t cgen_var_1091;
16180 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1091, 1);
16181 countingStream->write((uint64_t*)&cgen_var_1091, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016182 marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016183 marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
16184 }
16185 uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16186 countingStream->rewind();
16187 uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
16188 stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
16189 stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016190 uint64_t cgen_var_1092;
16191 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1092, 1);
16192 stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016193 marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016194 marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016195 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016196 unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016197 if (pExternalFenceProperties)
16198 {
16199 transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
16200 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016201 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016202 mImpl->log("finish vkGetPhysicalDeviceExternalFencePropertiesKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016203}
16204
16205#endif
16206#ifdef VK_KHR_external_fence
16207#endif
16208#ifdef VK_KHR_external_fence_win32
16209VkResult VkEncoder::vkImportFenceWin32HandleKHR(
16210 VkDevice device,
16211 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
16212{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016213 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016214 mImpl->log("start vkImportFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016215 auto stream = mImpl->stream();
16216 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016217 auto resources = mImpl->resources();
16218 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016219 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016220 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016221 VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016222 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016223 local_pImportFenceWin32HandleInfo = nullptr;
16224 if (pImportFenceWin32HandleInfo)
16225 {
16226 local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
16227 deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
16228 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016229 if (local_pImportFenceWin32HandleInfo)
16230 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016231 transform_tohost_VkImportFenceWin32HandleInfoKHR(mImpl->resources(), (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016232 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016233 countingStream->rewind();
16234 {
David Reveman9875f2c2019-06-11 21:47:12 -040016235 uint64_t cgen_var_1093;
16236 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1093, 1);
16237 countingStream->write((uint64_t*)&cgen_var_1093, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016238 marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016239 }
16240 uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16241 countingStream->rewind();
16242 uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
16243 stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
16244 stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016245 uint64_t cgen_var_1094;
16246 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1094, 1);
16247 stream->write((uint64_t*)&cgen_var_1094, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016248 marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016249 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR readParams");
16250 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016251 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
16252 stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016253 countingStream->clearPool();
16254 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016255 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016256 mImpl->log("finish vkImportFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016257 return vkImportFenceWin32HandleKHR_VkResult_return;
16258}
16259
16260VkResult VkEncoder::vkGetFenceWin32HandleKHR(
16261 VkDevice device,
16262 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
16263 HANDLE* pHandle)
16264{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016265 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016266 mImpl->log("start vkGetFenceWin32HandleKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016267 auto stream = mImpl->stream();
16268 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016269 auto resources = mImpl->resources();
16270 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016271 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016272 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016273 VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016274 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016275 local_pGetWin32HandleInfo = nullptr;
16276 if (pGetWin32HandleInfo)
16277 {
16278 local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
16279 deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
16280 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016281 if (local_pGetWin32HandleInfo)
16282 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016283 transform_tohost_VkFenceGetWin32HandleInfoKHR(mImpl->resources(), (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016284 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016285 countingStream->rewind();
16286 {
David Reveman9875f2c2019-06-11 21:47:12 -040016287 uint64_t cgen_var_1095;
16288 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1095, 1);
16289 countingStream->write((uint64_t*)&cgen_var_1095, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016290 marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016291 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
16292 }
16293 uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16294 countingStream->rewind();
16295 uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
16296 stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
16297 stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016298 uint64_t cgen_var_1096;
16299 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1096, 1);
16300 stream->write((uint64_t*)&cgen_var_1096, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016301 marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016302 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016303 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016304 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016305 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016306 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
16307 stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016308 countingStream->clearPool();
16309 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016310 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016311 mImpl->log("finish vkGetFenceWin32HandleKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016312 return vkGetFenceWin32HandleKHR_VkResult_return;
16313}
16314
16315#endif
16316#ifdef VK_KHR_external_fence_fd
16317VkResult VkEncoder::vkImportFenceFdKHR(
16318 VkDevice device,
16319 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
16320{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016321 AEMU_SCOPED_TRACE("vkImportFenceFdKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016322 mImpl->log("start vkImportFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016323 auto stream = mImpl->stream();
16324 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016325 auto resources = mImpl->resources();
16326 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016327 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016328 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016329 VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016330 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016331 local_pImportFenceFdInfo = nullptr;
16332 if (pImportFenceFdInfo)
16333 {
16334 local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
16335 deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
16336 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016337 if (local_pImportFenceFdInfo)
16338 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016339 transform_tohost_VkImportFenceFdInfoKHR(mImpl->resources(), (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016340 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016341 countingStream->rewind();
16342 {
David Reveman9875f2c2019-06-11 21:47:12 -040016343 uint64_t cgen_var_1097;
16344 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1097, 1);
16345 countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016346 marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016347 }
16348 uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16349 countingStream->rewind();
16350 uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
16351 stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
16352 stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016353 uint64_t cgen_var_1098;
16354 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1098, 1);
16355 stream->write((uint64_t*)&cgen_var_1098, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016356 marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016357 AEMU_SCOPED_TRACE("vkImportFenceFdKHR readParams");
16358 AEMU_SCOPED_TRACE("vkImportFenceFdKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016359 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
16360 stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016361 countingStream->clearPool();
16362 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016363 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016364 mImpl->log("finish vkImportFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016365 return vkImportFenceFdKHR_VkResult_return;
16366}
16367
16368VkResult VkEncoder::vkGetFenceFdKHR(
16369 VkDevice device,
16370 const VkFenceGetFdInfoKHR* pGetFdInfo,
16371 int* pFd)
16372{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016373 AEMU_SCOPED_TRACE("vkGetFenceFdKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016374 mImpl->log("start vkGetFenceFdKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016375 auto stream = mImpl->stream();
16376 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016377 auto resources = mImpl->resources();
16378 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016379 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016380 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016381 VkFenceGetFdInfoKHR* local_pGetFdInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016382 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016383 local_pGetFdInfo = nullptr;
16384 if (pGetFdInfo)
16385 {
16386 local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
16387 deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
16388 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016389 if (local_pGetFdInfo)
16390 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016391 transform_tohost_VkFenceGetFdInfoKHR(mImpl->resources(), (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016392 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016393 countingStream->rewind();
16394 {
David Reveman9875f2c2019-06-11 21:47:12 -040016395 uint64_t cgen_var_1099;
16396 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1099, 1);
16397 countingStream->write((uint64_t*)&cgen_var_1099, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016398 marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016399 countingStream->write((int*)pFd, sizeof(int));
16400 }
16401 uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16402 countingStream->rewind();
16403 uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
16404 stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
16405 stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016406 uint64_t cgen_var_1100;
16407 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1100, 1);
16408 stream->write((uint64_t*)&cgen_var_1100, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016409 marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016410 stream->write((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016411 AEMU_SCOPED_TRACE("vkGetFenceFdKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016412 stream->read((int*)pFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016413 AEMU_SCOPED_TRACE("vkGetFenceFdKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016414 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
16415 stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016416 countingStream->clearPool();
16417 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016418 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016419 mImpl->log("finish vkGetFenceFdKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016420 return vkGetFenceFdKHR_VkResult_return;
16421}
16422
16423#endif
16424#ifdef VK_KHR_maintenance2
16425#endif
16426#ifdef VK_KHR_get_surface_capabilities2
16427VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
16428 VkPhysicalDevice physicalDevice,
16429 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
16430 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
16431{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016432 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016433 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016434 auto stream = mImpl->stream();
16435 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016436 auto resources = mImpl->resources();
16437 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016438 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016439 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016440 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016441 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016442 local_pSurfaceInfo = nullptr;
16443 if (pSurfaceInfo)
16444 {
16445 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
16446 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16447 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016448 if (local_pSurfaceInfo)
16449 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016450 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016451 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016452 countingStream->rewind();
16453 {
David Reveman9875f2c2019-06-11 21:47:12 -040016454 uint64_t cgen_var_1101;
16455 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1101, 1);
16456 countingStream->write((uint64_t*)&cgen_var_1101, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016457 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016458 marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
16459 }
16460 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16461 countingStream->rewind();
16462 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
16463 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
16464 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016465 uint64_t cgen_var_1102;
16466 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1102, 1);
16467 stream->write((uint64_t*)&cgen_var_1102, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016468 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016469 marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016470 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016471 unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016472 if (pSurfaceCapabilities)
16473 {
16474 transform_fromhost_VkSurfaceCapabilities2KHR(mImpl->resources(), (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
16475 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016476 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016477 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
16478 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016479 countingStream->clearPool();
16480 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016481 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016482 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016483 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
16484}
16485
16486VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
16487 VkPhysicalDevice physicalDevice,
16488 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
16489 uint32_t* pSurfaceFormatCount,
16490 VkSurfaceFormat2KHR* pSurfaceFormats)
16491{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016492 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016493 mImpl->log("start vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016494 auto stream = mImpl->stream();
16495 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016496 auto resources = mImpl->resources();
16497 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016498 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016499 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016500 VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016501 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016502 local_pSurfaceInfo = nullptr;
16503 if (pSurfaceInfo)
16504 {
16505 local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
16506 deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16507 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016508 if (local_pSurfaceInfo)
16509 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016510 transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016511 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016512 countingStream->rewind();
16513 {
David Reveman9875f2c2019-06-11 21:47:12 -040016514 uint64_t cgen_var_1103;
16515 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1103, 1);
16516 countingStream->write((uint64_t*)&cgen_var_1103, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016517 marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016518 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016519 uint64_t cgen_var_1104 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
16520 countingStream->putBe64(cgen_var_1104);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016521 if (pSurfaceFormatCount)
16522 {
16523 countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
16524 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016525 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016526 uint64_t cgen_var_1105 = (uint64_t)(uintptr_t)pSurfaceFormats;
16527 countingStream->putBe64(cgen_var_1105);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016528 if (pSurfaceFormats)
16529 {
16530 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16531 {
16532 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16533 }
16534 }
16535 }
16536 uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16537 countingStream->rewind();
16538 uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
16539 stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
16540 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016541 uint64_t cgen_var_1106;
16542 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1106, 1);
16543 stream->write((uint64_t*)&cgen_var_1106, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016544 marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016545 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016546 uint64_t cgen_var_1107 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
16547 stream->putBe64(cgen_var_1107);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016548 if (pSurfaceFormatCount)
16549 {
16550 stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
16551 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016552 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016553 uint64_t cgen_var_1108 = (uint64_t)(uintptr_t)pSurfaceFormats;
16554 stream->putBe64(cgen_var_1108);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016555 if (pSurfaceFormats)
16556 {
16557 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16558 {
16559 marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16560 }
16561 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016562 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016563 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016564 uint32_t* check_pSurfaceFormatCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016565 check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016566 if (pSurfaceFormatCount)
16567 {
16568 if (!(check_pSurfaceFormatCount))
16569 {
16570 fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
16571 }
16572 stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
16573 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016574 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016575 VkSurfaceFormat2KHR* check_pSurfaceFormats;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016576 check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016577 if (pSurfaceFormats)
16578 {
16579 if (!(check_pSurfaceFormats))
16580 {
16581 fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
16582 }
16583 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16584 {
16585 unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16586 }
16587 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016588 if (pSurfaceFormats)
16589 {
16590 for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16591 {
16592 transform_fromhost_VkSurfaceFormat2KHR(mImpl->resources(), (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16593 }
16594 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016595 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016596 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
16597 stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016598 countingStream->clearPool();
16599 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016600 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016601 mImpl->log("finish vkGetPhysicalDeviceSurfaceFormats2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016602 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
16603}
16604
16605#endif
16606#ifdef VK_KHR_variable_pointers
16607#endif
16608#ifdef VK_KHR_get_display_properties2
16609VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
16610 VkPhysicalDevice physicalDevice,
16611 uint32_t* pPropertyCount,
16612 VkDisplayProperties2KHR* pProperties)
16613{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016614 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016615 mImpl->log("start vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016616 auto stream = mImpl->stream();
16617 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016618 auto resources = mImpl->resources();
16619 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016620 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016621 VkPhysicalDevice local_physicalDevice;
16622 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016623 countingStream->rewind();
16624 {
David Reveman9875f2c2019-06-11 21:47:12 -040016625 uint64_t cgen_var_1111;
16626 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1111, 1);
16627 countingStream->write((uint64_t*)&cgen_var_1111, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016628 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016629 uint64_t cgen_var_1112 = (uint64_t)(uintptr_t)pPropertyCount;
16630 countingStream->putBe64(cgen_var_1112);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016631 if (pPropertyCount)
16632 {
16633 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16634 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016635 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016636 uint64_t cgen_var_1113 = (uint64_t)(uintptr_t)pProperties;
16637 countingStream->putBe64(cgen_var_1113);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016638 if (pProperties)
16639 {
16640 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16641 {
16642 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
16643 }
16644 }
16645 }
16646 uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16647 countingStream->rewind();
16648 uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
16649 stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
16650 stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016651 uint64_t cgen_var_1114;
16652 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1114, 1);
16653 stream->write((uint64_t*)&cgen_var_1114, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016654 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016655 uint64_t cgen_var_1115 = (uint64_t)(uintptr_t)pPropertyCount;
16656 stream->putBe64(cgen_var_1115);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016657 if (pPropertyCount)
16658 {
16659 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16660 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016661 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016662 uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pProperties;
16663 stream->putBe64(cgen_var_1116);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016664 if (pProperties)
16665 {
16666 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16667 {
16668 marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
16669 }
16670 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016671 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016672 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016673 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016674 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016675 if (pPropertyCount)
16676 {
16677 if (!(check_pPropertyCount))
16678 {
16679 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16680 }
16681 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16682 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016683 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016684 VkDisplayProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016685 check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016686 if (pProperties)
16687 {
16688 if (!(check_pProperties))
16689 {
16690 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16691 }
16692 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16693 {
16694 unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
16695 }
16696 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016697 if (pProperties)
16698 {
16699 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16700 {
16701 transform_fromhost_VkDisplayProperties2KHR(mImpl->resources(), (VkDisplayProperties2KHR*)(pProperties + i));
16702 }
16703 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016704 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016705 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
16706 stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016707 countingStream->clearPool();
16708 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016709 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016710 mImpl->log("finish vkGetPhysicalDeviceDisplayProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016711 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
16712}
16713
16714VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
16715 VkPhysicalDevice physicalDevice,
16716 uint32_t* pPropertyCount,
16717 VkDisplayPlaneProperties2KHR* pProperties)
16718{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016719 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016720 mImpl->log("start vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016721 auto stream = mImpl->stream();
16722 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016723 auto resources = mImpl->resources();
16724 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016725 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016726 VkPhysicalDevice local_physicalDevice;
16727 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016728 countingStream->rewind();
16729 {
David Reveman9875f2c2019-06-11 21:47:12 -040016730 uint64_t cgen_var_1119;
16731 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1119, 1);
16732 countingStream->write((uint64_t*)&cgen_var_1119, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016733 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016734 uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pPropertyCount;
16735 countingStream->putBe64(cgen_var_1120);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016736 if (pPropertyCount)
16737 {
16738 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16739 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016740 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016741 uint64_t cgen_var_1121 = (uint64_t)(uintptr_t)pProperties;
16742 countingStream->putBe64(cgen_var_1121);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016743 if (pProperties)
16744 {
16745 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16746 {
16747 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16748 }
16749 }
16750 }
16751 uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16752 countingStream->rewind();
16753 uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
16754 stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
16755 stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016756 uint64_t cgen_var_1122;
16757 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1122, 1);
16758 stream->write((uint64_t*)&cgen_var_1122, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016759 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016760 uint64_t cgen_var_1123 = (uint64_t)(uintptr_t)pPropertyCount;
16761 stream->putBe64(cgen_var_1123);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016762 if (pPropertyCount)
16763 {
16764 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16765 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016766 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016767 uint64_t cgen_var_1124 = (uint64_t)(uintptr_t)pProperties;
16768 stream->putBe64(cgen_var_1124);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016769 if (pProperties)
16770 {
16771 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16772 {
16773 marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16774 }
16775 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016776 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016777 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016778 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016779 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016780 if (pPropertyCount)
16781 {
16782 if (!(check_pPropertyCount))
16783 {
16784 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16785 }
16786 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16787 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016788 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016789 VkDisplayPlaneProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016790 check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016791 if (pProperties)
16792 {
16793 if (!(check_pProperties))
16794 {
16795 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16796 }
16797 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16798 {
16799 unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16800 }
16801 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016802 if (pProperties)
16803 {
16804 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16805 {
16806 transform_fromhost_VkDisplayPlaneProperties2KHR(mImpl->resources(), (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16807 }
16808 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016809 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016810 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
16811 stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016812 countingStream->clearPool();
16813 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016814 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016815 mImpl->log("finish vkGetPhysicalDeviceDisplayPlaneProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016816 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
16817}
16818
16819VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
16820 VkPhysicalDevice physicalDevice,
16821 VkDisplayKHR display,
16822 uint32_t* pPropertyCount,
16823 VkDisplayModeProperties2KHR* pProperties)
16824{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016825 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016826 mImpl->log("start vkGetDisplayModeProperties2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016827 auto stream = mImpl->stream();
16828 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016829 auto resources = mImpl->resources();
16830 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016831 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016832 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016833 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016834 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016835 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016836 countingStream->rewind();
16837 {
David Reveman9875f2c2019-06-11 21:47:12 -040016838 uint64_t cgen_var_1127;
16839 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1127, 1);
16840 countingStream->write((uint64_t*)&cgen_var_1127, 1 * 8);
16841 uint64_t cgen_var_1128;
16842 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1128, 1);
16843 countingStream->write((uint64_t*)&cgen_var_1128, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016844 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016845 uint64_t cgen_var_1129 = (uint64_t)(uintptr_t)pPropertyCount;
16846 countingStream->putBe64(cgen_var_1129);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016847 if (pPropertyCount)
16848 {
16849 countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16850 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016851 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016852 uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pProperties;
16853 countingStream->putBe64(cgen_var_1130);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016854 if (pProperties)
16855 {
16856 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16857 {
16858 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16859 }
16860 }
16861 }
16862 uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16863 countingStream->rewind();
16864 uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
16865 stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
16866 stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016867 uint64_t cgen_var_1131;
16868 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1131, 1);
16869 stream->write((uint64_t*)&cgen_var_1131, 1 * 8);
16870 uint64_t cgen_var_1132;
16871 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1132, 1);
16872 stream->write((uint64_t*)&cgen_var_1132, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016873 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016874 uint64_t cgen_var_1133 = (uint64_t)(uintptr_t)pPropertyCount;
16875 stream->putBe64(cgen_var_1133);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016876 if (pPropertyCount)
16877 {
16878 stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16879 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016880 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040016881 uint64_t cgen_var_1134 = (uint64_t)(uintptr_t)pProperties;
16882 stream->putBe64(cgen_var_1134);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016883 if (pProperties)
16884 {
16885 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16886 {
16887 marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16888 }
16889 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016890 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016891 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016892 uint32_t* check_pPropertyCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016893 check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016894 if (pPropertyCount)
16895 {
16896 if (!(check_pPropertyCount))
16897 {
16898 fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16899 }
16900 stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16901 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016902 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016903 VkDisplayModeProperties2KHR* check_pProperties;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080016904 check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016905 if (pProperties)
16906 {
16907 if (!(check_pProperties))
16908 {
16909 fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16910 }
16911 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16912 {
16913 unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16914 }
16915 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080016916 if (pProperties)
16917 {
16918 for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16919 {
16920 transform_fromhost_VkDisplayModeProperties2KHR(mImpl->resources(), (VkDisplayModeProperties2KHR*)(pProperties + i));
16921 }
16922 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016923 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016924 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
16925 stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016926 countingStream->clearPool();
16927 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016928 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016929 mImpl->log("finish vkGetDisplayModeProperties2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016930 return vkGetDisplayModeProperties2KHR_VkResult_return;
16931}
16932
16933VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
16934 VkPhysicalDevice physicalDevice,
16935 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
16936 VkDisplayPlaneCapabilities2KHR* pCapabilities)
16937{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016938 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016939 mImpl->log("start vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016940 auto stream = mImpl->stream();
16941 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016942 auto resources = mImpl->resources();
16943 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016944 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016945 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016946 VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080016947 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016948 local_pDisplayPlaneInfo = nullptr;
16949 if (pDisplayPlaneInfo)
16950 {
16951 local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
16952 deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
16953 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080016954 if (local_pDisplayPlaneInfo)
16955 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080016956 transform_tohost_VkDisplayPlaneInfo2KHR(mImpl->resources(), (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080016957 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016958 countingStream->rewind();
16959 {
David Reveman9875f2c2019-06-11 21:47:12 -040016960 uint64_t cgen_var_1137;
16961 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1137, 1);
16962 countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016963 marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016964 marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16965 }
16966 uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16967 countingStream->rewind();
16968 uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
16969 stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
16970 stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040016971 uint64_t cgen_var_1138;
16972 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1138, 1);
16973 stream->write((uint64_t*)&cgen_var_1138, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080016974 marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016975 marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016976 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016977 unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080016978 if (pCapabilities)
16979 {
16980 transform_fromhost_VkDisplayPlaneCapabilities2KHR(mImpl->resources(), (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16981 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080016982 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016983 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
16984 stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080016985 countingStream->clearPool();
16986 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080016987 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080016988 mImpl->log("finish vkGetDisplayPlaneCapabilities2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070016989 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
16990}
16991
16992#endif
16993#ifdef VK_KHR_dedicated_allocation
16994#endif
16995#ifdef VK_KHR_storage_buffer_storage_class
16996#endif
16997#ifdef VK_KHR_relaxed_block_layout
16998#endif
16999#ifdef VK_KHR_get_memory_requirements2
17000void VkEncoder::vkGetImageMemoryRequirements2KHR(
17001 VkDevice device,
17002 const VkImageMemoryRequirementsInfo2* pInfo,
17003 VkMemoryRequirements2* pMemoryRequirements)
17004{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017005 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017006 mImpl->log("start vkGetImageMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017007 auto stream = mImpl->stream();
17008 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017009 auto resources = mImpl->resources();
17010 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017011 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017012 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017013 VkImageMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017014 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017015 local_pInfo = nullptr;
17016 if (pInfo)
17017 {
17018 local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
17019 deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
17020 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017021 if (local_pInfo)
17022 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017023 transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017024 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017025 countingStream->rewind();
17026 {
David Reveman9875f2c2019-06-11 21:47:12 -040017027 uint64_t cgen_var_1139;
17028 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1139, 1);
17029 countingStream->write((uint64_t*)&cgen_var_1139, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017030 marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017031 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
17032 }
17033 uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17034 countingStream->rewind();
17035 uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
17036 stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
17037 stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017038 uint64_t cgen_var_1140;
17039 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1140, 1);
17040 stream->write((uint64_t*)&cgen_var_1140, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017041 marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017042 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017043 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017044 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017045 if (pMemoryRequirements)
17046 {
17047 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
17048 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017049 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017050 mImpl->log("finish vkGetImageMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017051}
17052
17053void VkEncoder::vkGetBufferMemoryRequirements2KHR(
17054 VkDevice device,
17055 const VkBufferMemoryRequirementsInfo2* pInfo,
17056 VkMemoryRequirements2* pMemoryRequirements)
17057{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017058 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017059 mImpl->log("start vkGetBufferMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017060 auto stream = mImpl->stream();
17061 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017062 auto resources = mImpl->resources();
17063 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017064 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017065 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017066 VkBufferMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017067 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017068 local_pInfo = nullptr;
17069 if (pInfo)
17070 {
17071 local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
17072 deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
17073 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017074 if (local_pInfo)
17075 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017076 transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017077 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017078 countingStream->rewind();
17079 {
David Reveman9875f2c2019-06-11 21:47:12 -040017080 uint64_t cgen_var_1141;
17081 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1141, 1);
17082 countingStream->write((uint64_t*)&cgen_var_1141, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017083 marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017084 marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
17085 }
17086 uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17087 countingStream->rewind();
17088 uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
17089 stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
17090 stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017091 uint64_t cgen_var_1142;
17092 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1142, 1);
17093 stream->write((uint64_t*)&cgen_var_1142, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017094 marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017095 marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017096 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017097 unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017098 if (pMemoryRequirements)
17099 {
17100 transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
17101 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017102 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017103 mImpl->log("finish vkGetBufferMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017104}
17105
17106void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
17107 VkDevice device,
17108 const VkImageSparseMemoryRequirementsInfo2* pInfo,
17109 uint32_t* pSparseMemoryRequirementCount,
17110 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
17111{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017112 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017113 mImpl->log("start vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017114 auto stream = mImpl->stream();
17115 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017116 auto resources = mImpl->resources();
17117 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017118 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017119 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017120 VkImageSparseMemoryRequirementsInfo2* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017121 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017122 local_pInfo = nullptr;
17123 if (pInfo)
17124 {
17125 local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
17126 deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
17127 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017128 if (local_pInfo)
17129 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017130 transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017131 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017132 countingStream->rewind();
17133 {
David Reveman9875f2c2019-06-11 21:47:12 -040017134 uint64_t cgen_var_1143;
17135 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1143, 1);
17136 countingStream->write((uint64_t*)&cgen_var_1143, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017137 marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017138 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017139 uint64_t cgen_var_1144 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
17140 countingStream->putBe64(cgen_var_1144);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017141 if (pSparseMemoryRequirementCount)
17142 {
17143 countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
17144 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017145 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017146 uint64_t cgen_var_1145 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
17147 countingStream->putBe64(cgen_var_1145);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017148 if (pSparseMemoryRequirements)
17149 {
17150 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17151 {
17152 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17153 }
17154 }
17155 }
17156 uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17157 countingStream->rewind();
17158 uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
17159 stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
17160 stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017161 uint64_t cgen_var_1146;
17162 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1146, 1);
17163 stream->write((uint64_t*)&cgen_var_1146, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017164 marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017165 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017166 uint64_t cgen_var_1147 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
17167 stream->putBe64(cgen_var_1147);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017168 if (pSparseMemoryRequirementCount)
17169 {
17170 stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
17171 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017172 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017173 uint64_t cgen_var_1148 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
17174 stream->putBe64(cgen_var_1148);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017175 if (pSparseMemoryRequirements)
17176 {
17177 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17178 {
17179 marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17180 }
17181 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017182 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017183 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017184 uint32_t* check_pSparseMemoryRequirementCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017185 check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017186 if (pSparseMemoryRequirementCount)
17187 {
17188 if (!(check_pSparseMemoryRequirementCount))
17189 {
17190 fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
17191 }
17192 stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
17193 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017194 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017195 VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017196 check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017197 if (pSparseMemoryRequirements)
17198 {
17199 if (!(check_pSparseMemoryRequirements))
17200 {
17201 fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
17202 }
17203 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17204 {
17205 unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17206 }
17207 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080017208 if (pSparseMemoryRequirements)
17209 {
17210 for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17211 {
17212 transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17213 }
17214 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017215 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017216 mImpl->log("finish vkGetImageSparseMemoryRequirements2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017217}
17218
17219#endif
17220#ifdef VK_KHR_image_format_list
17221#endif
17222#ifdef VK_KHR_sampler_ycbcr_conversion
17223VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
17224 VkDevice device,
17225 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
17226 const VkAllocationCallbacks* pAllocator,
17227 VkSamplerYcbcrConversion* pYcbcrConversion)
17228{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017229 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017230 mImpl->log("start vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017231 auto stream = mImpl->stream();
17232 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017233 auto resources = mImpl->resources();
17234 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017235 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017236 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017237 VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017238 VkAllocationCallbacks* local_pAllocator;
17239 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017240 local_pCreateInfo = nullptr;
17241 if (pCreateInfo)
17242 {
17243 local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
17244 deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
17245 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017246 local_pAllocator = nullptr;
17247 if (pAllocator)
17248 {
17249 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17250 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17251 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017252 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017253 if (local_pCreateInfo)
17254 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017255 transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017256 }
17257 if (local_pAllocator)
17258 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017259 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017260 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017261 countingStream->rewind();
17262 {
David Reveman9875f2c2019-06-11 21:47:12 -040017263 uint64_t cgen_var_1151;
17264 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1151, 1);
17265 countingStream->write((uint64_t*)&cgen_var_1151, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017266 marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017267 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017268 uint64_t cgen_var_1152 = (uint64_t)(uintptr_t)local_pAllocator;
17269 countingStream->putBe64(cgen_var_1152);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017270 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017271 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017272 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017273 }
David Reveman9875f2c2019-06-11 21:47:12 -040017274 uint64_t cgen_var_1153;
17275 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1153, 1);
17276 countingStream->write((uint64_t*)&cgen_var_1153, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017277 }
17278 uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17279 countingStream->rewind();
17280 uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
17281 stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
17282 stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017283 uint64_t cgen_var_1154;
17284 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
17285 stream->write((uint64_t*)&cgen_var_1154, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017286 marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017287 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017288 uint64_t cgen_var_1155 = (uint64_t)(uintptr_t)local_pAllocator;
17289 stream->putBe64(cgen_var_1155);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017290 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017291 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017292 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017293 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080017294 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040017295 uint64_t cgen_var_1156;
17296 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1156, 1);
17297 stream->write((uint64_t*)&cgen_var_1156, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080017298 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017299 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR readParams");
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080017300 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -040017301 uint64_t cgen_var_1157;
17302 stream->read((uint64_t*)&cgen_var_1157, 8);
17303 stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1157, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080017304 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017305 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017306 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
17307 stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017308 countingStream->clearPool();
17309 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017310 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017311 mImpl->log("finish vkCreateSamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017312 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
17313}
17314
17315void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
17316 VkDevice device,
17317 VkSamplerYcbcrConversion ycbcrConversion,
17318 const VkAllocationCallbacks* pAllocator)
17319{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017320 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017321 mImpl->log("start vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017322 auto stream = mImpl->stream();
17323 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017324 auto resources = mImpl->resources();
17325 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017326 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017327 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017328 VkSamplerYcbcrConversion local_ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017329 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017330 local_device = device;
17331 local_ycbcrConversion = ycbcrConversion;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017332 local_pAllocator = nullptr;
17333 if (pAllocator)
17334 {
17335 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17336 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17337 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017338 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017339 if (local_pAllocator)
17340 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017341 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017342 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017343 countingStream->rewind();
17344 {
David Reveman9875f2c2019-06-11 21:47:12 -040017345 uint64_t cgen_var_1158;
17346 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1158, 1);
17347 countingStream->write((uint64_t*)&cgen_var_1158, 1 * 8);
17348 uint64_t cgen_var_1159;
17349 countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1159, 1);
17350 countingStream->write((uint64_t*)&cgen_var_1159, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017351 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017352 uint64_t cgen_var_1160 = (uint64_t)(uintptr_t)local_pAllocator;
17353 countingStream->putBe64(cgen_var_1160);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017354 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017355 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017356 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017357 }
17358 }
17359 uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17360 countingStream->rewind();
17361 uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
17362 stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
17363 stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017364 uint64_t cgen_var_1161;
17365 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1161, 1);
17366 stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
17367 uint64_t cgen_var_1162;
17368 stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1162, 1);
17369 stream->write((uint64_t*)&cgen_var_1162, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017370 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017371 uint64_t cgen_var_1163 = (uint64_t)(uintptr_t)local_pAllocator;
17372 stream->putBe64(cgen_var_1163);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017373 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017374 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017375 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017376 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017377 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR readParams");
17378 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR returnUnmarshal");
Lingfeng Yang1dafbc32019-02-23 10:52:04 -080017379 resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017380 mImpl->log("finish vkDestroySamplerYcbcrConversionKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017381}
17382
17383#endif
17384#ifdef VK_KHR_bind_memory2
17385VkResult VkEncoder::vkBindBufferMemory2KHR(
17386 VkDevice device,
17387 uint32_t bindInfoCount,
17388 const VkBindBufferMemoryInfo* pBindInfos)
17389{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017390 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017391 mImpl->log("start vkBindBufferMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017392 auto stream = mImpl->stream();
17393 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017394 auto resources = mImpl->resources();
17395 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017396 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017397 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017398 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017399 VkBindBufferMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017400 local_device = device;
17401 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017402 local_pBindInfos = nullptr;
17403 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017404 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017405 local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017406 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17407 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017408 deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
17409 }
17410 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017411 if (local_pBindInfos)
17412 {
17413 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17414 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017415 transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017416 }
17417 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017418 countingStream->rewind();
17419 {
David Reveman9875f2c2019-06-11 21:47:12 -040017420 uint64_t cgen_var_1164;
17421 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1164, 1);
17422 countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017423 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
17424 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17425 {
17426 marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017427 }
17428 }
17429 uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17430 countingStream->rewind();
17431 uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
17432 stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
17433 stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017434 uint64_t cgen_var_1165;
17435 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1165, 1);
17436 stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017437 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017438 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17439 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017440 marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017441 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017442 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR readParams");
17443 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017444 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
17445 stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017446 countingStream->clearPool();
17447 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017448 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017449 mImpl->log("finish vkBindBufferMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017450 return vkBindBufferMemory2KHR_VkResult_return;
17451}
17452
17453VkResult VkEncoder::vkBindImageMemory2KHR(
17454 VkDevice device,
17455 uint32_t bindInfoCount,
17456 const VkBindImageMemoryInfo* pBindInfos)
17457{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017458 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017459 mImpl->log("start vkBindImageMemory2KHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017460 auto stream = mImpl->stream();
17461 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017462 auto resources = mImpl->resources();
17463 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017464 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017465 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017466 uint32_t local_bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017467 VkBindImageMemoryInfo* local_pBindInfos;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017468 local_device = device;
17469 local_bindInfoCount = bindInfoCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017470 local_pBindInfos = nullptr;
17471 if (pBindInfos)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017472 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017473 local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017474 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17475 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017476 deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
17477 }
17478 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017479 if (local_pBindInfos)
17480 {
17481 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17482 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017483 transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017484 }
17485 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017486 countingStream->rewind();
17487 {
David Reveman9875f2c2019-06-11 21:47:12 -040017488 uint64_t cgen_var_1166;
17489 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1166, 1);
17490 countingStream->write((uint64_t*)&cgen_var_1166, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017491 countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
17492 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17493 {
17494 marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017495 }
17496 }
17497 uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17498 countingStream->rewind();
17499 uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
17500 stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
17501 stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017502 uint64_t cgen_var_1167;
17503 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1167, 1);
17504 stream->write((uint64_t*)&cgen_var_1167, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017505 stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017506 for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17507 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017508 marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017509 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017510 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR readParams");
17511 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017512 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
17513 stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080017514 countingStream->clearPool();
17515 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017516 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017517 mImpl->log("finish vkBindImageMemory2KHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017518 return vkBindImageMemory2KHR_VkResult_return;
17519}
17520
17521#endif
17522#ifdef VK_KHR_maintenance3
17523void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
17524 VkDevice device,
17525 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
17526 VkDescriptorSetLayoutSupport* pSupport)
17527{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017528 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017529 mImpl->log("start vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017530 auto stream = mImpl->stream();
17531 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017532 auto resources = mImpl->resources();
17533 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017534 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017535 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017536 VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017537 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017538 local_pCreateInfo = nullptr;
17539 if (pCreateInfo)
17540 {
17541 local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
17542 deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
17543 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080017544 if (local_pCreateInfo)
17545 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017546 transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017547 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017548 countingStream->rewind();
17549 {
David Reveman9875f2c2019-06-11 21:47:12 -040017550 uint64_t cgen_var_1168;
17551 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1168, 1);
17552 countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017553 marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017554 marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
17555 }
17556 uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17557 countingStream->rewind();
17558 uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
17559 stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
17560 stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017561 uint64_t cgen_var_1169;
17562 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1169, 1);
17563 stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017564 marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017565 marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017566 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017567 unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
Lingfeng Yang97a06702018-12-24 17:02:43 -080017568 if (pSupport)
17569 {
17570 transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
17571 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017572 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017573 mImpl->log("finish vkGetDescriptorSetLayoutSupportKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017574}
17575
17576#endif
17577#ifdef VK_KHR_draw_indirect_count
17578void VkEncoder::vkCmdDrawIndirectCountKHR(
17579 VkCommandBuffer commandBuffer,
17580 VkBuffer buffer,
17581 VkDeviceSize offset,
17582 VkBuffer countBuffer,
17583 VkDeviceSize countBufferOffset,
17584 uint32_t maxDrawCount,
17585 uint32_t stride)
17586{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017587 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017588 mImpl->log("start vkCmdDrawIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017589 auto stream = mImpl->stream();
17590 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017591 auto resources = mImpl->resources();
17592 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017593 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017594 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017595 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017596 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017597 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017598 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017599 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017600 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017601 local_commandBuffer = commandBuffer;
17602 local_buffer = buffer;
17603 local_offset = offset;
17604 local_countBuffer = countBuffer;
17605 local_countBufferOffset = countBufferOffset;
17606 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017607 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017608 countingStream->rewind();
17609 {
David Reveman9875f2c2019-06-11 21:47:12 -040017610 uint64_t cgen_var_1170;
17611 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1170, 1);
17612 countingStream->write((uint64_t*)&cgen_var_1170, 1 * 8);
17613 uint64_t cgen_var_1171;
17614 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1171, 1);
17615 countingStream->write((uint64_t*)&cgen_var_1171, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017616 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
David Reveman9875f2c2019-06-11 21:47:12 -040017617 uint64_t cgen_var_1172;
17618 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1172, 1);
17619 countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017620 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17621 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17622 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017623 }
17624 uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17625 countingStream->rewind();
17626 uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
17627 stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
17628 stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017629 uint64_t cgen_var_1173;
17630 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1173, 1);
17631 stream->write((uint64_t*)&cgen_var_1173, 1 * 8);
17632 uint64_t cgen_var_1174;
17633 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1174, 1);
17634 stream->write((uint64_t*)&cgen_var_1174, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017635 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
David Reveman9875f2c2019-06-11 21:47:12 -040017636 uint64_t cgen_var_1175;
17637 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1175, 1);
17638 stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017639 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17640 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17641 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017642 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR readParams");
17643 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017644 mImpl->log("finish vkCmdDrawIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017645}
17646
17647void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
17648 VkCommandBuffer commandBuffer,
17649 VkBuffer buffer,
17650 VkDeviceSize offset,
17651 VkBuffer countBuffer,
17652 VkDeviceSize countBufferOffset,
17653 uint32_t maxDrawCount,
17654 uint32_t stride)
17655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017656 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017657 mImpl->log("start vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017658 auto stream = mImpl->stream();
17659 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017660 auto resources = mImpl->resources();
17661 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017663 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017664 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017665 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017666 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017667 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017668 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017669 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017670 local_commandBuffer = commandBuffer;
17671 local_buffer = buffer;
17672 local_offset = offset;
17673 local_countBuffer = countBuffer;
17674 local_countBufferOffset = countBufferOffset;
17675 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017676 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017677 countingStream->rewind();
17678 {
David Reveman9875f2c2019-06-11 21:47:12 -040017679 uint64_t cgen_var_1176;
17680 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1176, 1);
17681 countingStream->write((uint64_t*)&cgen_var_1176, 1 * 8);
17682 uint64_t cgen_var_1177;
17683 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1177, 1);
17684 countingStream->write((uint64_t*)&cgen_var_1177, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017685 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
David Reveman9875f2c2019-06-11 21:47:12 -040017686 uint64_t cgen_var_1178;
17687 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1178, 1);
17688 countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017689 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17690 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17691 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017692 }
17693 uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17694 countingStream->rewind();
17695 uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
17696 stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
17697 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017698 uint64_t cgen_var_1179;
17699 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1179, 1);
17700 stream->write((uint64_t*)&cgen_var_1179, 1 * 8);
17701 uint64_t cgen_var_1180;
17702 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1180, 1);
17703 stream->write((uint64_t*)&cgen_var_1180, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080017704 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
David Reveman9875f2c2019-06-11 21:47:12 -040017705 uint64_t cgen_var_1181;
17706 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1181, 1);
17707 stream->write((uint64_t*)&cgen_var_1181, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017708 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17709 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17710 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017711 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR readParams");
17712 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017713 mImpl->log("finish vkCmdDrawIndexedIndirectCountKHR");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017714}
17715
17716#endif
17717#ifdef VK_KHR_8bit_storage
17718#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -080017719#ifdef VK_ANDROID_native_buffer
17720VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
17721 VkDevice device,
17722 VkFormat format,
17723 VkImageUsageFlags imageUsage,
17724 int* grallocUsage)
17725{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017726 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017727 mImpl->log("start vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017728 auto stream = mImpl->stream();
17729 auto countingStream = mImpl->countingStream();
17730 auto resources = mImpl->resources();
17731 auto pool = mImpl->pool();
17732 stream->setHandleMapping(resources->unwrapMapping());
17733 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017734 VkFormat local_format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017735 VkImageUsageFlags local_imageUsage;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017736 local_device = device;
17737 local_format = format;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017738 local_imageUsage = imageUsage;
17739 countingStream->rewind();
17740 {
David Reveman9875f2c2019-06-11 21:47:12 -040017741 uint64_t cgen_var_1182;
17742 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1182, 1);
17743 countingStream->write((uint64_t*)&cgen_var_1182, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017744 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
17745 countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
17746 countingStream->write((int*)grallocUsage, sizeof(int));
17747 }
17748 uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17749 countingStream->rewind();
17750 uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
17751 stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
17752 stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017753 uint64_t cgen_var_1183;
17754 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1183, 1);
17755 stream->write((uint64_t*)&cgen_var_1183, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017756 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
17757 stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
17758 stream->write((int*)grallocUsage, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017759 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID readParams");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017760 stream->read((int*)grallocUsage, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017761 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID returnUnmarshal");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017762 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
17763 stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
17764 countingStream->clearPool();
17765 stream->clearPool();
17766 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017767 mImpl->log("finish vkGetSwapchainGrallocUsageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017768 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
17769}
17770
17771VkResult VkEncoder::vkAcquireImageANDROID(
17772 VkDevice device,
17773 VkImage image,
17774 int nativeFenceFd,
17775 VkSemaphore semaphore,
17776 VkFence fence)
17777{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017778 AEMU_SCOPED_TRACE("vkAcquireImageANDROID encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017779 mImpl->log("start vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017780 auto stream = mImpl->stream();
17781 auto countingStream = mImpl->countingStream();
17782 auto resources = mImpl->resources();
17783 auto pool = mImpl->pool();
17784 stream->setHandleMapping(resources->unwrapMapping());
17785 VkDevice local_device;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017786 VkImage local_image;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017787 int local_nativeFenceFd;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017788 VkSemaphore local_semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017789 VkFence local_fence;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017790 local_device = device;
17791 local_image = image;
17792 local_nativeFenceFd = nativeFenceFd;
17793 local_semaphore = semaphore;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017794 local_fence = fence;
Lingfeng Yangdef88ba2018-12-13 12:43:17 -080017795 mImpl->resources()->unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017796 countingStream->rewind();
17797 {
David Reveman9875f2c2019-06-11 21:47:12 -040017798 uint64_t cgen_var_1184;
17799 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1184, 1);
17800 countingStream->write((uint64_t*)&cgen_var_1184, 1 * 8);
17801 uint64_t cgen_var_1185;
17802 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1185, 1);
17803 countingStream->write((uint64_t*)&cgen_var_1185, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017804 countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
David Reveman9875f2c2019-06-11 21:47:12 -040017805 uint64_t cgen_var_1186;
17806 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1186, 1);
17807 countingStream->write((uint64_t*)&cgen_var_1186, 1 * 8);
17808 uint64_t cgen_var_1187;
17809 countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1187, 1);
17810 countingStream->write((uint64_t*)&cgen_var_1187, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017811 }
17812 uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17813 countingStream->rewind();
17814 uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
17815 stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
17816 stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017817 uint64_t cgen_var_1188;
17818 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1188, 1);
17819 stream->write((uint64_t*)&cgen_var_1188, 1 * 8);
17820 uint64_t cgen_var_1189;
17821 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1189, 1);
17822 stream->write((uint64_t*)&cgen_var_1189, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017823 stream->write((int*)&local_nativeFenceFd, sizeof(int));
David Reveman9875f2c2019-06-11 21:47:12 -040017824 uint64_t cgen_var_1190;
17825 stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1190, 1);
17826 stream->write((uint64_t*)&cgen_var_1190, 1 * 8);
17827 uint64_t cgen_var_1191;
17828 stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1191, 1);
17829 stream->write((uint64_t*)&cgen_var_1191, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017830 AEMU_SCOPED_TRACE("vkAcquireImageANDROID readParams");
17831 AEMU_SCOPED_TRACE("vkAcquireImageANDROID returnUnmarshal");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017832 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
17833 stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
17834 countingStream->clearPool();
17835 stream->clearPool();
17836 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017837 mImpl->log("finish vkAcquireImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017838 return vkAcquireImageANDROID_VkResult_return;
17839}
17840
17841VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
17842 VkQueue queue,
17843 uint32_t waitSemaphoreCount,
17844 const VkSemaphore* pWaitSemaphores,
17845 VkImage image,
17846 int* pNativeFenceFd)
17847{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017848 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017849 mImpl->log("start vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017850 auto stream = mImpl->stream();
17851 auto countingStream = mImpl->countingStream();
17852 auto resources = mImpl->resources();
17853 auto pool = mImpl->pool();
17854 stream->setHandleMapping(resources->unwrapMapping());
17855 VkQueue local_queue;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017856 uint32_t local_waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017857 VkSemaphore* local_pWaitSemaphores;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017858 VkImage local_image;
17859 local_queue = queue;
17860 local_waitSemaphoreCount = waitSemaphoreCount;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017861 local_pWaitSemaphores = nullptr;
17862 if (pWaitSemaphores)
17863 {
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017864 local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, ((waitSemaphoreCount)) * sizeof(const VkSemaphore));
Lingfeng Yang808a6312018-11-13 21:06:15 -080017865 }
Lingfeng Yang808a6312018-11-13 21:06:15 -080017866 local_image = image;
17867 countingStream->rewind();
17868 {
David Reveman9875f2c2019-06-11 21:47:12 -040017869 uint64_t cgen_var_1192;
17870 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1192, 1);
17871 countingStream->write((uint64_t*)&cgen_var_1192, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017872 countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017873 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017874 uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17875 countingStream->putBe64(cgen_var_1193);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017876 if (local_pWaitSemaphores)
17877 {
17878 if (((waitSemaphoreCount)))
17879 {
David Reveman9875f2c2019-06-11 21:47:12 -040017880 uint64_t* cgen_var_1194;
17881 countingStream->alloc((void**)&cgen_var_1194, ((waitSemaphoreCount)) * 8);
17882 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1194, ((waitSemaphoreCount)));
17883 countingStream->write((uint64_t*)cgen_var_1194, ((waitSemaphoreCount)) * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017884 }
17885 }
David Reveman9875f2c2019-06-11 21:47:12 -040017886 uint64_t cgen_var_1195;
17887 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1195, 1);
17888 countingStream->write((uint64_t*)&cgen_var_1195, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017889 countingStream->write((int*)pNativeFenceFd, sizeof(int));
17890 }
17891 uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17892 countingStream->rewind();
17893 uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
17894 stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
17895 stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017896 uint64_t cgen_var_1196;
17897 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1196, 1);
17898 stream->write((uint64_t*)&cgen_var_1196, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017899 stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
17900 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017901 uint64_t cgen_var_1197 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17902 stream->putBe64(cgen_var_1197);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017903 if (local_pWaitSemaphores)
17904 {
17905 if (((waitSemaphoreCount)))
17906 {
David Reveman9875f2c2019-06-11 21:47:12 -040017907 uint64_t* cgen_var_1198;
17908 stream->alloc((void**)&cgen_var_1198, ((waitSemaphoreCount)) * 8);
17909 stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1198, ((waitSemaphoreCount)));
17910 stream->write((uint64_t*)cgen_var_1198, ((waitSemaphoreCount)) * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080017911 }
17912 }
David Reveman9875f2c2019-06-11 21:47:12 -040017913 uint64_t cgen_var_1199;
17914 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1199, 1);
17915 stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
Lingfeng Yang808a6312018-11-13 21:06:15 -080017916 stream->write((int*)pNativeFenceFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017917 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID readParams");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017918 stream->read((int*)pNativeFenceFd, sizeof(int));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017919 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID returnUnmarshal");
Lingfeng Yang808a6312018-11-13 21:06:15 -080017920 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
17921 stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
17922 countingStream->clearPool();
17923 stream->clearPool();
17924 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017925 mImpl->log("finish vkQueueSignalReleaseImageANDROID");;
Lingfeng Yang808a6312018-11-13 21:06:15 -080017926 return vkQueueSignalReleaseImageANDROID_VkResult_return;
17927}
17928
17929#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017930#ifdef VK_EXT_debug_report
17931VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
17932 VkInstance instance,
17933 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
17934 const VkAllocationCallbacks* pAllocator,
17935 VkDebugReportCallbackEXT* pCallback)
17936{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080017937 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080017938 mImpl->log("start vkCreateDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017939 auto stream = mImpl->stream();
17940 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017941 auto resources = mImpl->resources();
17942 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080017943 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017944 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017945 VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080017946 VkAllocationCallbacks* local_pAllocator;
17947 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017948 local_pCreateInfo = nullptr;
17949 if (pCreateInfo)
17950 {
17951 local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
17952 deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
17953 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017954 local_pAllocator = nullptr;
17955 if (pAllocator)
17956 {
17957 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17958 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17959 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080017960 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080017961 if (local_pCreateInfo)
17962 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017963 transform_tohost_VkDebugReportCallbackCreateInfoEXT(mImpl->resources(), (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017964 }
17965 if (local_pAllocator)
17966 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080017967 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080017968 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017969 countingStream->rewind();
17970 {
David Reveman9875f2c2019-06-11 21:47:12 -040017971 uint64_t cgen_var_1200;
17972 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1200, 1);
17973 countingStream->write((uint64_t*)&cgen_var_1200, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017974 marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017975 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017976 uint64_t cgen_var_1201 = (uint64_t)(uintptr_t)local_pAllocator;
17977 countingStream->putBe64(cgen_var_1201);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017978 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017979 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017980 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017981 }
David Reveman9875f2c2019-06-11 21:47:12 -040017982 uint64_t cgen_var_1202;
17983 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1202, 1);
17984 countingStream->write((uint64_t*)&cgen_var_1202, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017985 }
17986 uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17987 countingStream->rewind();
17988 uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
17989 stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
17990 stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040017991 uint64_t cgen_var_1203;
17992 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1203, 1);
17993 stream->write((uint64_t*)&cgen_var_1203, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017994 marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080017995 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040017996 uint64_t cgen_var_1204 = (uint64_t)(uintptr_t)local_pAllocator;
17997 stream->putBe64(cgen_var_1204);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080017998 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070017999 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018000 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018001 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018002 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040018003 uint64_t cgen_var_1205;
18004 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1205, 1);
18005 stream->write((uint64_t*)&cgen_var_1205, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018006 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018007 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080018008 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -040018009 uint64_t cgen_var_1206;
18010 stream->read((uint64_t*)&cgen_var_1206, 8);
18011 stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1206, (VkDebugReportCallbackEXT*)pCallback, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018012 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018013 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018014 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
18015 stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018016 countingStream->clearPool();
18017 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018018 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018019 mImpl->log("finish vkCreateDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018020 return vkCreateDebugReportCallbackEXT_VkResult_return;
18021}
18022
18023void VkEncoder::vkDestroyDebugReportCallbackEXT(
18024 VkInstance instance,
18025 VkDebugReportCallbackEXT callback,
18026 const VkAllocationCallbacks* pAllocator)
18027{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018028 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018029 mImpl->log("start vkDestroyDebugReportCallbackEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018030 auto stream = mImpl->stream();
18031 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018032 auto resources = mImpl->resources();
18033 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018034 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018035 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018036 VkDebugReportCallbackEXT local_callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018037 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018038 local_instance = instance;
18039 local_callback = callback;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018040 local_pAllocator = nullptr;
18041 if (pAllocator)
18042 {
18043 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18044 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18045 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018046 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018047 if (local_pAllocator)
18048 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018049 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018050 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018051 countingStream->rewind();
18052 {
David Reveman9875f2c2019-06-11 21:47:12 -040018053 uint64_t cgen_var_1207;
18054 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1207, 1);
18055 countingStream->write((uint64_t*)&cgen_var_1207, 1 * 8);
18056 uint64_t cgen_var_1208;
18057 countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1208, 1);
18058 countingStream->write((uint64_t*)&cgen_var_1208, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018059 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040018060 uint64_t cgen_var_1209 = (uint64_t)(uintptr_t)local_pAllocator;
18061 countingStream->putBe64(cgen_var_1209);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018062 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018063 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018064 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018065 }
18066 }
18067 uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18068 countingStream->rewind();
18069 uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
18070 stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
18071 stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018072 uint64_t cgen_var_1210;
18073 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1210, 1);
18074 stream->write((uint64_t*)&cgen_var_1210, 1 * 8);
18075 uint64_t cgen_var_1211;
18076 stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1211, 1);
18077 stream->write((uint64_t*)&cgen_var_1211, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018078 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040018079 uint64_t cgen_var_1212 = (uint64_t)(uintptr_t)local_pAllocator;
18080 stream->putBe64(cgen_var_1212);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018081 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018082 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018083 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018084 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018085 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT readParams");
18086 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018087 resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018088 mImpl->log("finish vkDestroyDebugReportCallbackEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018089}
18090
18091void VkEncoder::vkDebugReportMessageEXT(
18092 VkInstance instance,
18093 VkDebugReportFlagsEXT flags,
18094 VkDebugReportObjectTypeEXT objectType,
18095 uint64_t object,
18096 size_t location,
18097 int32_t messageCode,
18098 const char* pLayerPrefix,
18099 const char* pMessage)
18100{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018101 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018102 mImpl->log("start vkDebugReportMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018103 auto stream = mImpl->stream();
18104 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018105 auto resources = mImpl->resources();
18106 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018107 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018108 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018109 VkDebugReportFlagsEXT local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018110 VkDebugReportObjectTypeEXT local_objectType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018111 uint64_t local_object;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018112 size_t local_location;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018113 int32_t local_messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018114 char* local_pLayerPrefix;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018115 char* local_pMessage;
18116 local_instance = instance;
18117 local_flags = flags;
18118 local_objectType = objectType;
18119 local_object = object;
18120 local_location = location;
18121 local_messageCode = messageCode;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018122 local_pLayerPrefix = nullptr;
18123 if (pLayerPrefix)
18124 {
18125 local_pLayerPrefix = pool->strDup(pLayerPrefix);
18126 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018127 local_pMessage = nullptr;
18128 if (pMessage)
18129 {
18130 local_pMessage = pool->strDup(pMessage);
18131 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018132 countingStream->rewind();
18133 {
David Reveman9875f2c2019-06-11 21:47:12 -040018134 uint64_t cgen_var_1213;
18135 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1213, 1);
18136 countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018137 countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
18138 countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
18139 countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018140 uint64_t cgen_var_1214 = (uint64_t)local_location;
18141 countingStream->putBe64(cgen_var_1214);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018142 countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
18143 countingStream->putString(local_pLayerPrefix);
18144 countingStream->putString(local_pMessage);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018145 }
18146 uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18147 countingStream->rewind();
18148 uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
18149 stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
18150 stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018151 uint64_t cgen_var_1215;
18152 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1215, 1);
18153 stream->write((uint64_t*)&cgen_var_1215, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018154 stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
18155 stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
18156 stream->write((uint64_t*)&local_object, sizeof(uint64_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018157 uint64_t cgen_var_1216 = (uint64_t)local_location;
18158 stream->putBe64(cgen_var_1216);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018159 stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
18160 stream->putString(local_pLayerPrefix);
18161 stream->putString(local_pMessage);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018162 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT readParams");
18163 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018164 mImpl->log("finish vkDebugReportMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018165}
18166
18167#endif
18168#ifdef VK_NV_glsl_shader
18169#endif
18170#ifdef VK_EXT_depth_range_unrestricted
18171#endif
18172#ifdef VK_IMG_filter_cubic
18173#endif
18174#ifdef VK_AMD_rasterization_order
18175#endif
18176#ifdef VK_AMD_shader_trinary_minmax
18177#endif
18178#ifdef VK_AMD_shader_explicit_vertex_parameter
18179#endif
18180#ifdef VK_EXT_debug_marker
18181VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
18182 VkDevice device,
18183 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
18184{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018185 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018186 mImpl->log("start vkDebugMarkerSetObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018187 auto stream = mImpl->stream();
18188 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018189 auto resources = mImpl->resources();
18190 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018191 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018192 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018193 VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018194 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018195 local_pTagInfo = nullptr;
18196 if (pTagInfo)
18197 {
18198 local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
18199 deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
18200 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018201 if (local_pTagInfo)
18202 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018203 transform_tohost_VkDebugMarkerObjectTagInfoEXT(mImpl->resources(), (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018204 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018205 countingStream->rewind();
18206 {
David Reveman9875f2c2019-06-11 21:47:12 -040018207 uint64_t cgen_var_1217;
18208 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1217, 1);
18209 countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018210 marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018211 }
18212 uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18213 countingStream->rewind();
18214 uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
18215 stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
18216 stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018217 uint64_t cgen_var_1218;
18218 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1218, 1);
18219 stream->write((uint64_t*)&cgen_var_1218, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018220 marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018221 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT readParams");
18222 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018223 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
18224 stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018225 countingStream->clearPool();
18226 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018227 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018228 mImpl->log("finish vkDebugMarkerSetObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018229 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
18230}
18231
18232VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
18233 VkDevice device,
18234 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
18235{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018236 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018237 mImpl->log("start vkDebugMarkerSetObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018238 auto stream = mImpl->stream();
18239 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018240 auto resources = mImpl->resources();
18241 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018242 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018243 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018244 VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018245 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018246 local_pNameInfo = nullptr;
18247 if (pNameInfo)
18248 {
18249 local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
18250 deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
18251 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018252 if (local_pNameInfo)
18253 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018254 transform_tohost_VkDebugMarkerObjectNameInfoEXT(mImpl->resources(), (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018255 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018256 countingStream->rewind();
18257 {
David Reveman9875f2c2019-06-11 21:47:12 -040018258 uint64_t cgen_var_1219;
18259 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1219, 1);
18260 countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018261 marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018262 }
18263 uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18264 countingStream->rewind();
18265 uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
18266 stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
18267 stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018268 uint64_t cgen_var_1220;
18269 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1220, 1);
18270 stream->write((uint64_t*)&cgen_var_1220, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018271 marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018272 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT readParams");
18273 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018274 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
18275 stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018276 countingStream->clearPool();
18277 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018278 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018279 mImpl->log("finish vkDebugMarkerSetObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018280 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
18281}
18282
18283void VkEncoder::vkCmdDebugMarkerBeginEXT(
18284 VkCommandBuffer commandBuffer,
18285 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
18286{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018287 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018288 mImpl->log("start vkCmdDebugMarkerBeginEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018289 auto stream = mImpl->stream();
18290 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018291 auto resources = mImpl->resources();
18292 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018293 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018294 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018295 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018296 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018297 local_pMarkerInfo = nullptr;
18298 if (pMarkerInfo)
18299 {
18300 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
18301 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18302 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018303 if (local_pMarkerInfo)
18304 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018305 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018306 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018307 countingStream->rewind();
18308 {
David Reveman9875f2c2019-06-11 21:47:12 -040018309 uint64_t cgen_var_1221;
18310 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1221, 1);
18311 countingStream->write((uint64_t*)&cgen_var_1221, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018312 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018313 }
18314 uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18315 countingStream->rewind();
18316 uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
18317 stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
18318 stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018319 uint64_t cgen_var_1222;
18320 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1222, 1);
18321 stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018322 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018323 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT readParams");
18324 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018325 mImpl->log("finish vkCmdDebugMarkerBeginEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018326}
18327
18328void VkEncoder::vkCmdDebugMarkerEndEXT(
18329 VkCommandBuffer commandBuffer)
18330{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018331 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018332 mImpl->log("start vkCmdDebugMarkerEndEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018333 auto stream = mImpl->stream();
18334 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018335 auto resources = mImpl->resources();
18336 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018337 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018338 VkCommandBuffer local_commandBuffer;
18339 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018340 countingStream->rewind();
18341 {
David Reveman9875f2c2019-06-11 21:47:12 -040018342 uint64_t cgen_var_1223;
18343 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1223, 1);
18344 countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018345 }
18346 uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18347 countingStream->rewind();
18348 uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
18349 stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
18350 stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018351 uint64_t cgen_var_1224;
18352 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1224, 1);
18353 stream->write((uint64_t*)&cgen_var_1224, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018354 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT readParams");
18355 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018356 mImpl->log("finish vkCmdDebugMarkerEndEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018357}
18358
18359void VkEncoder::vkCmdDebugMarkerInsertEXT(
18360 VkCommandBuffer commandBuffer,
18361 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
18362{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018363 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018364 mImpl->log("start vkCmdDebugMarkerInsertEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018365 auto stream = mImpl->stream();
18366 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018367 auto resources = mImpl->resources();
18368 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018369 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018370 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018371 VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018372 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018373 local_pMarkerInfo = nullptr;
18374 if (pMarkerInfo)
18375 {
18376 local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
18377 deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18378 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018379 if (local_pMarkerInfo)
18380 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018381 transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018382 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018383 countingStream->rewind();
18384 {
David Reveman9875f2c2019-06-11 21:47:12 -040018385 uint64_t cgen_var_1225;
18386 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1225, 1);
18387 countingStream->write((uint64_t*)&cgen_var_1225, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018388 marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018389 }
18390 uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18391 countingStream->rewind();
18392 uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
18393 stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
18394 stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018395 uint64_t cgen_var_1226;
18396 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1226, 1);
18397 stream->write((uint64_t*)&cgen_var_1226, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018398 marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018399 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT readParams");
18400 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018401 mImpl->log("finish vkCmdDebugMarkerInsertEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018402}
18403
18404#endif
18405#ifdef VK_AMD_gcn_shader
18406#endif
18407#ifdef VK_NV_dedicated_allocation
18408#endif
18409#ifdef VK_AMD_draw_indirect_count
18410void VkEncoder::vkCmdDrawIndirectCountAMD(
18411 VkCommandBuffer commandBuffer,
18412 VkBuffer buffer,
18413 VkDeviceSize offset,
18414 VkBuffer countBuffer,
18415 VkDeviceSize countBufferOffset,
18416 uint32_t maxDrawCount,
18417 uint32_t stride)
18418{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018419 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018420 mImpl->log("start vkCmdDrawIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018421 auto stream = mImpl->stream();
18422 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018423 auto resources = mImpl->resources();
18424 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018425 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018426 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018427 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018428 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018429 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018430 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018431 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018432 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018433 local_commandBuffer = commandBuffer;
18434 local_buffer = buffer;
18435 local_offset = offset;
18436 local_countBuffer = countBuffer;
18437 local_countBufferOffset = countBufferOffset;
18438 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018439 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018440 countingStream->rewind();
18441 {
David Reveman9875f2c2019-06-11 21:47:12 -040018442 uint64_t cgen_var_1227;
18443 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1227, 1);
18444 countingStream->write((uint64_t*)&cgen_var_1227, 1 * 8);
18445 uint64_t cgen_var_1228;
18446 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1228, 1);
18447 countingStream->write((uint64_t*)&cgen_var_1228, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018448 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
David Reveman9875f2c2019-06-11 21:47:12 -040018449 uint64_t cgen_var_1229;
18450 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1229, 1);
18451 countingStream->write((uint64_t*)&cgen_var_1229, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018452 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18453 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18454 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018455 }
18456 uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18457 countingStream->rewind();
18458 uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
18459 stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
18460 stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018461 uint64_t cgen_var_1230;
18462 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1230, 1);
18463 stream->write((uint64_t*)&cgen_var_1230, 1 * 8);
18464 uint64_t cgen_var_1231;
18465 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1231, 1);
18466 stream->write((uint64_t*)&cgen_var_1231, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018467 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
David Reveman9875f2c2019-06-11 21:47:12 -040018468 uint64_t cgen_var_1232;
18469 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1232, 1);
18470 stream->write((uint64_t*)&cgen_var_1232, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018471 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18472 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18473 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018474 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD readParams");
18475 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018476 mImpl->log("finish vkCmdDrawIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018477}
18478
18479void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
18480 VkCommandBuffer commandBuffer,
18481 VkBuffer buffer,
18482 VkDeviceSize offset,
18483 VkBuffer countBuffer,
18484 VkDeviceSize countBufferOffset,
18485 uint32_t maxDrawCount,
18486 uint32_t stride)
18487{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018488 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018489 mImpl->log("start vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018490 auto stream = mImpl->stream();
18491 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018492 auto resources = mImpl->resources();
18493 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018494 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018495 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018496 VkBuffer local_buffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018497 VkDeviceSize local_offset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018498 VkBuffer local_countBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018499 VkDeviceSize local_countBufferOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018500 uint32_t local_maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018501 uint32_t local_stride;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018502 local_commandBuffer = commandBuffer;
18503 local_buffer = buffer;
18504 local_offset = offset;
18505 local_countBuffer = countBuffer;
18506 local_countBufferOffset = countBufferOffset;
18507 local_maxDrawCount = maxDrawCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018508 local_stride = stride;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018509 countingStream->rewind();
18510 {
David Reveman9875f2c2019-06-11 21:47:12 -040018511 uint64_t cgen_var_1233;
18512 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1233, 1);
18513 countingStream->write((uint64_t*)&cgen_var_1233, 1 * 8);
18514 uint64_t cgen_var_1234;
18515 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1234, 1);
18516 countingStream->write((uint64_t*)&cgen_var_1234, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018517 countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
David Reveman9875f2c2019-06-11 21:47:12 -040018518 uint64_t cgen_var_1235;
18519 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1235, 1);
18520 countingStream->write((uint64_t*)&cgen_var_1235, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018521 countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18522 countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18523 countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018524 }
18525 uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18526 countingStream->rewind();
18527 uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
18528 stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
18529 stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018530 uint64_t cgen_var_1236;
18531 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1236, 1);
18532 stream->write((uint64_t*)&cgen_var_1236, 1 * 8);
18533 uint64_t cgen_var_1237;
18534 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1237, 1);
18535 stream->write((uint64_t*)&cgen_var_1237, 1 * 8);
Lingfeng Yang5fda8132019-01-23 09:57:27 -080018536 stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
David Reveman9875f2c2019-06-11 21:47:12 -040018537 uint64_t cgen_var_1238;
18538 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1238, 1);
18539 stream->write((uint64_t*)&cgen_var_1238, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018540 stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18541 stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18542 stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018543 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD readParams");
18544 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018545 mImpl->log("finish vkCmdDrawIndexedIndirectCountAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018546}
18547
18548#endif
18549#ifdef VK_AMD_negative_viewport_height
18550#endif
18551#ifdef VK_AMD_gpu_shader_half_float
18552#endif
18553#ifdef VK_AMD_shader_ballot
18554#endif
18555#ifdef VK_AMD_texture_gather_bias_lod
18556#endif
18557#ifdef VK_AMD_shader_info
18558VkResult VkEncoder::vkGetShaderInfoAMD(
18559 VkDevice device,
18560 VkPipeline pipeline,
18561 VkShaderStageFlagBits shaderStage,
18562 VkShaderInfoTypeAMD infoType,
18563 size_t* pInfoSize,
18564 void* pInfo)
18565{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018566 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018567 mImpl->log("start vkGetShaderInfoAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018568 auto stream = mImpl->stream();
18569 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018570 auto resources = mImpl->resources();
18571 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018572 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018573 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018574 VkPipeline local_pipeline;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018575 VkShaderStageFlagBits local_shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018576 VkShaderInfoTypeAMD local_infoType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018577 local_device = device;
18578 local_pipeline = pipeline;
18579 local_shaderStage = shaderStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018580 local_infoType = infoType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018581 countingStream->rewind();
18582 {
David Reveman9875f2c2019-06-11 21:47:12 -040018583 uint64_t cgen_var_1239;
18584 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1239, 1);
18585 countingStream->write((uint64_t*)&cgen_var_1239, 1 * 8);
18586 uint64_t cgen_var_1240;
18587 countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1240, 1);
18588 countingStream->write((uint64_t*)&cgen_var_1240, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018589 countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
18590 countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018591 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040018592 uint64_t cgen_var_1241 = (uint64_t)(uintptr_t)pInfoSize;
18593 countingStream->putBe64(cgen_var_1241);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018594 if (pInfoSize)
18595 {
David Reveman9875f2c2019-06-11 21:47:12 -040018596 uint64_t cgen_var_1242 = (uint64_t)(*pInfoSize);
18597 countingStream->putBe64(cgen_var_1242);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018598 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018599 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040018600 uint64_t cgen_var_1243 = (uint64_t)(uintptr_t)pInfo;
18601 countingStream->putBe64(cgen_var_1243);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018602 if (pInfo)
18603 {
18604 countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
18605 }
18606 }
18607 uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18608 countingStream->rewind();
18609 uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
18610 stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
18611 stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018612 uint64_t cgen_var_1244;
18613 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1244, 1);
18614 stream->write((uint64_t*)&cgen_var_1244, 1 * 8);
18615 uint64_t cgen_var_1245;
18616 stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1245, 1);
18617 stream->write((uint64_t*)&cgen_var_1245, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018618 stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
18619 stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018620 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040018621 uint64_t cgen_var_1246 = (uint64_t)(uintptr_t)pInfoSize;
18622 stream->putBe64(cgen_var_1246);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018623 if (pInfoSize)
18624 {
David Reveman9875f2c2019-06-11 21:47:12 -040018625 uint64_t cgen_var_1247 = (uint64_t)(*pInfoSize);
18626 stream->putBe64(cgen_var_1247);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018627 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018628 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040018629 uint64_t cgen_var_1248 = (uint64_t)(uintptr_t)pInfo;
18630 stream->putBe64(cgen_var_1248);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018631 if (pInfo)
18632 {
18633 stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
18634 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018635 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018636 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018637 size_t* check_pInfoSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018638 check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018639 if (pInfoSize)
18640 {
18641 if (!(check_pInfoSize))
18642 {
18643 fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
18644 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080018645 (*pInfoSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018646 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018647 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018648 void* check_pInfo;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018649 check_pInfo = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018650 if (pInfo)
18651 {
18652 if (!(check_pInfo))
18653 {
18654 fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
18655 }
18656 stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
18657 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018658 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018659 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
18660 stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018661 countingStream->clearPool();
18662 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018663 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018664 mImpl->log("finish vkGetShaderInfoAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018665 return vkGetShaderInfoAMD_VkResult_return;
18666}
18667
18668#endif
18669#ifdef VK_AMD_shader_image_load_store_lod
18670#endif
18671#ifdef VK_IMG_format_pvrtc
18672#endif
18673#ifdef VK_NV_external_memory_capabilities
18674VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
18675 VkPhysicalDevice physicalDevice,
18676 VkFormat format,
18677 VkImageType type,
18678 VkImageTiling tiling,
18679 VkImageUsageFlags usage,
18680 VkImageCreateFlags flags,
18681 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
18682 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
18683{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018684 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018685 mImpl->log("start vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018686 auto stream = mImpl->stream();
18687 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018688 auto resources = mImpl->resources();
18689 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018690 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018691 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018692 VkFormat local_format;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018693 VkImageType local_type;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018694 VkImageTiling local_tiling;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018695 VkImageUsageFlags local_usage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018696 VkImageCreateFlags local_flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018697 VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018698 local_physicalDevice = physicalDevice;
18699 local_format = format;
18700 local_type = type;
18701 local_tiling = tiling;
18702 local_usage = usage;
18703 local_flags = flags;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018704 local_externalHandleType = externalHandleType;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018705 countingStream->rewind();
18706 {
David Reveman9875f2c2019-06-11 21:47:12 -040018707 uint64_t cgen_var_1252;
18708 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1252, 1);
18709 countingStream->write((uint64_t*)&cgen_var_1252, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018710 countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
18711 countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
18712 countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
18713 countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
18714 countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
18715 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018716 marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
18717 }
18718 uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18719 countingStream->rewind();
18720 uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
18721 stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
18722 stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018723 uint64_t cgen_var_1253;
18724 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1253, 1);
18725 stream->write((uint64_t*)&cgen_var_1253, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018726 stream->write((VkFormat*)&local_format, sizeof(VkFormat));
18727 stream->write((VkImageType*)&local_type, sizeof(VkImageType));
18728 stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
18729 stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
18730 stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
18731 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018732 marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018733 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018734 unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080018735 if (pExternalImageFormatProperties)
18736 {
18737 transform_fromhost_VkExternalImageFormatPropertiesNV(mImpl->resources(), (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
18738 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018739 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018740 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
18741 stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018742 countingStream->clearPool();
18743 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018744 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018745 mImpl->log("finish vkGetPhysicalDeviceExternalImageFormatPropertiesNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018746 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
18747}
18748
18749#endif
18750#ifdef VK_NV_external_memory
18751#endif
18752#ifdef VK_NV_external_memory_win32
18753VkResult VkEncoder::vkGetMemoryWin32HandleNV(
18754 VkDevice device,
18755 VkDeviceMemory memory,
18756 VkExternalMemoryHandleTypeFlagsNV handleType,
18757 HANDLE* pHandle)
18758{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018759 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018760 mImpl->log("start vkGetMemoryWin32HandleNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018761 auto stream = mImpl->stream();
18762 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018763 auto resources = mImpl->resources();
18764 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018765 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018766 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018767 VkDeviceMemory local_memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018768 VkExternalMemoryHandleTypeFlagsNV local_handleType;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018769 local_device = device;
18770 local_memory = memory;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018771 local_handleType = handleType;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080018772 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 -070018773 countingStream->rewind();
18774 {
David Reveman9875f2c2019-06-11 21:47:12 -040018775 uint64_t cgen_var_1254;
18776 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1254, 1);
18777 countingStream->write((uint64_t*)&cgen_var_1254, 1 * 8);
18778 uint64_t cgen_var_1255;
18779 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1255, 1);
18780 countingStream->write((uint64_t*)&cgen_var_1255, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018781 countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018782 countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
18783 }
18784 uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18785 countingStream->rewind();
18786 uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
18787 stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
18788 stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018789 uint64_t cgen_var_1256;
18790 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1256, 1);
18791 stream->write((uint64_t*)&cgen_var_1256, 1 * 8);
18792 uint64_t cgen_var_1257;
18793 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1257, 1);
18794 stream->write((uint64_t*)&cgen_var_1257, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018795 stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018796 stream->write((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018797 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018798 stream->read((HANDLE*)pHandle, sizeof(HANDLE));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018799 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018800 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
18801 stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018802 countingStream->clearPool();
18803 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018804 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018805 mImpl->log("finish vkGetMemoryWin32HandleNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018806 return vkGetMemoryWin32HandleNV_VkResult_return;
18807}
18808
18809#endif
18810#ifdef VK_NV_win32_keyed_mutex
18811#endif
18812#ifdef VK_EXT_validation_flags
18813#endif
18814#ifdef VK_NN_vi_surface
18815VkResult VkEncoder::vkCreateViSurfaceNN(
18816 VkInstance instance,
18817 const VkViSurfaceCreateInfoNN* pCreateInfo,
18818 const VkAllocationCallbacks* pAllocator,
18819 VkSurfaceKHR* pSurface)
18820{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018821 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018822 mImpl->log("start vkCreateViSurfaceNN");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018823 auto stream = mImpl->stream();
18824 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018825 auto resources = mImpl->resources();
18826 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018827 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018828 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018829 VkViSurfaceCreateInfoNN* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018830 VkAllocationCallbacks* local_pAllocator;
18831 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018832 local_pCreateInfo = nullptr;
18833 if (pCreateInfo)
18834 {
18835 local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
18836 deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
18837 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018838 local_pAllocator = nullptr;
18839 if (pAllocator)
18840 {
18841 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18842 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18843 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080018844 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080018845 if (local_pCreateInfo)
18846 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018847 transform_tohost_VkViSurfaceCreateInfoNN(mImpl->resources(), (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018848 }
18849 if (local_pAllocator)
18850 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018851 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018852 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018853 countingStream->rewind();
18854 {
David Reveman9875f2c2019-06-11 21:47:12 -040018855 uint64_t cgen_var_1258;
18856 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1258, 1);
18857 countingStream->write((uint64_t*)&cgen_var_1258, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018858 marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018859 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040018860 uint64_t cgen_var_1259 = (uint64_t)(uintptr_t)local_pAllocator;
18861 countingStream->putBe64(cgen_var_1259);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018862 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018863 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018864 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018865 }
David Reveman9875f2c2019-06-11 21:47:12 -040018866 uint64_t cgen_var_1260;
18867 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1260, 1);
18868 countingStream->write((uint64_t*)&cgen_var_1260, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018869 }
18870 uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18871 countingStream->rewind();
18872 uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
18873 stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
18874 stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018875 uint64_t cgen_var_1261;
18876 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1261, 1);
18877 stream->write((uint64_t*)&cgen_var_1261, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018878 marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080018879 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040018880 uint64_t cgen_var_1262 = (uint64_t)(uintptr_t)local_pAllocator;
18881 stream->putBe64(cgen_var_1262);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018882 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018883 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018884 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018885 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080018886 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040018887 uint64_t cgen_var_1263;
18888 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1263, 1);
18889 stream->write((uint64_t*)&cgen_var_1263, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080018890 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018891 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040018892 uint64_t cgen_var_1264;
18893 stream->read((uint64_t*)&cgen_var_1264, 8);
18894 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1264, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018895 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018896 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
18897 stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080018898 countingStream->clearPool();
18899 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018900 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018901 mImpl->log("finish vkCreateViSurfaceNN");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018902 return vkCreateViSurfaceNN_VkResult_return;
18903}
18904
18905#endif
18906#ifdef VK_EXT_shader_subgroup_ballot
18907#endif
18908#ifdef VK_EXT_shader_subgroup_vote
18909#endif
18910#ifdef VK_EXT_conditional_rendering
18911void VkEncoder::vkCmdBeginConditionalRenderingEXT(
18912 VkCommandBuffer commandBuffer,
18913 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
18914{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018915 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018916 mImpl->log("start vkCmdBeginConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018917 auto stream = mImpl->stream();
18918 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018919 auto resources = mImpl->resources();
18920 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018921 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018922 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018923 VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
Lingfeng Yang9666b852018-11-13 23:09:59 -080018924 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018925 local_pConditionalRenderingBegin = nullptr;
18926 if (pConditionalRenderingBegin)
18927 {
18928 local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
18929 deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
18930 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080018931 if (local_pConditionalRenderingBegin)
18932 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080018933 transform_tohost_VkConditionalRenderingBeginInfoEXT(mImpl->resources(), (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang62b23322018-12-24 12:45:47 -080018934 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018935 countingStream->rewind();
18936 {
David Reveman9875f2c2019-06-11 21:47:12 -040018937 uint64_t cgen_var_1265;
18938 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1265, 1);
18939 countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018940 marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018941 }
18942 uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18943 countingStream->rewind();
18944 uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
18945 stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
18946 stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018947 uint64_t cgen_var_1266;
18948 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1266, 1);
18949 stream->write((uint64_t*)&cgen_var_1266, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018950 marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018951 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT readParams");
18952 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018953 mImpl->log("finish vkCmdBeginConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018954}
18955
18956void VkEncoder::vkCmdEndConditionalRenderingEXT(
18957 VkCommandBuffer commandBuffer)
18958{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018959 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018960 mImpl->log("start vkCmdEndConditionalRenderingEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018961 auto stream = mImpl->stream();
18962 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018963 auto resources = mImpl->resources();
18964 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018965 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018966 VkCommandBuffer local_commandBuffer;
18967 local_commandBuffer = commandBuffer;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018968 countingStream->rewind();
18969 {
David Reveman9875f2c2019-06-11 21:47:12 -040018970 uint64_t cgen_var_1267;
18971 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1267, 1);
18972 countingStream->write((uint64_t*)&cgen_var_1267, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018973 }
18974 uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18975 countingStream->rewind();
18976 uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
18977 stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
18978 stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040018979 uint64_t cgen_var_1268;
18980 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1268, 1);
18981 stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018982 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT readParams");
18983 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018984 mImpl->log("finish vkCmdEndConditionalRenderingEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018985}
18986
18987#endif
18988#ifdef VK_NVX_device_generated_commands
18989void VkEncoder::vkCmdProcessCommandsNVX(
18990 VkCommandBuffer commandBuffer,
18991 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
18992{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080018993 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080018994 mImpl->log("start vkCmdProcessCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070018995 auto stream = mImpl->stream();
18996 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080018997 auto resources = mImpl->resources();
18998 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080018999 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019000 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019001 VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019002 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019003 local_pProcessCommandsInfo = nullptr;
19004 if (pProcessCommandsInfo)
19005 {
19006 local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
19007 deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
19008 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019009 if (local_pProcessCommandsInfo)
19010 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019011 transform_tohost_VkCmdProcessCommandsInfoNVX(mImpl->resources(), (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019012 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019013 countingStream->rewind();
19014 {
David Reveman9875f2c2019-06-11 21:47:12 -040019015 uint64_t cgen_var_1269;
19016 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1269, 1);
19017 countingStream->write((uint64_t*)&cgen_var_1269, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019018 marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019019 }
19020 uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19021 countingStream->rewind();
19022 uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
19023 stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
19024 stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019025 uint64_t cgen_var_1270;
19026 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1270, 1);
19027 stream->write((uint64_t*)&cgen_var_1270, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019028 marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019029 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX readParams");
19030 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019031 mImpl->log("finish vkCmdProcessCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019032}
19033
19034void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
19035 VkCommandBuffer commandBuffer,
19036 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
19037{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019038 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019039 mImpl->log("start vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019040 auto stream = mImpl->stream();
19041 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019042 auto resources = mImpl->resources();
19043 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019044 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019045 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019046 VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019047 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019048 local_pReserveSpaceInfo = nullptr;
19049 if (pReserveSpaceInfo)
19050 {
19051 local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
19052 deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
19053 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019054 if (local_pReserveSpaceInfo)
19055 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019056 transform_tohost_VkCmdReserveSpaceForCommandsInfoNVX(mImpl->resources(), (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019057 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019058 countingStream->rewind();
19059 {
David Reveman9875f2c2019-06-11 21:47:12 -040019060 uint64_t cgen_var_1271;
19061 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1271, 1);
19062 countingStream->write((uint64_t*)&cgen_var_1271, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019063 marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019064 }
19065 uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19066 countingStream->rewind();
19067 uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
19068 stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
19069 stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019070 uint64_t cgen_var_1272;
19071 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1272, 1);
19072 stream->write((uint64_t*)&cgen_var_1272, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019073 marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019074 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX readParams");
19075 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019076 mImpl->log("finish vkCmdReserveSpaceForCommandsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019077}
19078
19079VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
19080 VkDevice device,
19081 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
19082 const VkAllocationCallbacks* pAllocator,
19083 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
19084{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019085 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019086 mImpl->log("start vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019087 auto stream = mImpl->stream();
19088 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019089 auto resources = mImpl->resources();
19090 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019091 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019092 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019093 VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019094 VkAllocationCallbacks* local_pAllocator;
19095 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019096 local_pCreateInfo = nullptr;
19097 if (pCreateInfo)
19098 {
19099 local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
19100 deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
19101 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019102 local_pAllocator = nullptr;
19103 if (pAllocator)
19104 {
19105 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19106 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19107 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019108 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019109 if (local_pCreateInfo)
19110 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019111 transform_tohost_VkIndirectCommandsLayoutCreateInfoNVX(mImpl->resources(), (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019112 }
19113 if (local_pAllocator)
19114 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019115 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019116 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019117 countingStream->rewind();
19118 {
David Reveman9875f2c2019-06-11 21:47:12 -040019119 uint64_t cgen_var_1273;
19120 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1273, 1);
19121 countingStream->write((uint64_t*)&cgen_var_1273, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019122 marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019123 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040019124 uint64_t cgen_var_1274 = (uint64_t)(uintptr_t)local_pAllocator;
19125 countingStream->putBe64(cgen_var_1274);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019126 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019127 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019128 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019129 }
David Reveman9875f2c2019-06-11 21:47:12 -040019130 uint64_t cgen_var_1275;
19131 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1275, 1);
19132 countingStream->write((uint64_t*)&cgen_var_1275, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019133 }
19134 uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19135 countingStream->rewind();
19136 uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
19137 stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
19138 stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019139 uint64_t cgen_var_1276;
19140 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1276, 1);
19141 stream->write((uint64_t*)&cgen_var_1276, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019142 marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019143 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040019144 uint64_t cgen_var_1277 = (uint64_t)(uintptr_t)local_pAllocator;
19145 stream->putBe64(cgen_var_1277);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019146 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019147 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019148 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019149 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019150 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040019151 uint64_t cgen_var_1278;
19152 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1278, 1);
19153 stream->write((uint64_t*)&cgen_var_1278, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019154 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019155 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080019156 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -040019157 uint64_t cgen_var_1279;
19158 stream->read((uint64_t*)&cgen_var_1279, 8);
19159 stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1279, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019160 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019161 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019162 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
19163 stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019164 countingStream->clearPool();
19165 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019166 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019167 mImpl->log("finish vkCreateIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019168 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
19169}
19170
19171void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
19172 VkDevice device,
19173 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
19174 const VkAllocationCallbacks* pAllocator)
19175{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019176 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019177 mImpl->log("start vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019178 auto stream = mImpl->stream();
19179 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019180 auto resources = mImpl->resources();
19181 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019182 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019183 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019184 VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019185 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019186 local_device = device;
19187 local_indirectCommandsLayout = indirectCommandsLayout;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019188 local_pAllocator = nullptr;
19189 if (pAllocator)
19190 {
19191 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19192 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19193 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019194 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019195 if (local_pAllocator)
19196 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019197 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019198 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019199 countingStream->rewind();
19200 {
David Reveman9875f2c2019-06-11 21:47:12 -040019201 uint64_t cgen_var_1280;
19202 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1280, 1);
19203 countingStream->write((uint64_t*)&cgen_var_1280, 1 * 8);
19204 uint64_t cgen_var_1281;
19205 countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1281, 1);
19206 countingStream->write((uint64_t*)&cgen_var_1281, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019207 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040019208 uint64_t cgen_var_1282 = (uint64_t)(uintptr_t)local_pAllocator;
19209 countingStream->putBe64(cgen_var_1282);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019210 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019211 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019212 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019213 }
19214 }
19215 uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19216 countingStream->rewind();
19217 uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
19218 stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
19219 stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019220 uint64_t cgen_var_1283;
19221 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1283, 1);
19222 stream->write((uint64_t*)&cgen_var_1283, 1 * 8);
19223 uint64_t cgen_var_1284;
19224 stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1284, 1);
19225 stream->write((uint64_t*)&cgen_var_1284, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019226 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040019227 uint64_t cgen_var_1285 = (uint64_t)(uintptr_t)local_pAllocator;
19228 stream->putBe64(cgen_var_1285);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019229 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019230 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019231 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019232 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019233 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX readParams");
19234 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019235 resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019236 mImpl->log("finish vkDestroyIndirectCommandsLayoutNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019237}
19238
19239VkResult VkEncoder::vkCreateObjectTableNVX(
19240 VkDevice device,
19241 const VkObjectTableCreateInfoNVX* pCreateInfo,
19242 const VkAllocationCallbacks* pAllocator,
19243 VkObjectTableNVX* pObjectTable)
19244{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019245 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019246 mImpl->log("start vkCreateObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019247 auto stream = mImpl->stream();
19248 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019249 auto resources = mImpl->resources();
19250 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019251 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019252 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019253 VkObjectTableCreateInfoNVX* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019254 VkAllocationCallbacks* local_pAllocator;
19255 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019256 local_pCreateInfo = nullptr;
19257 if (pCreateInfo)
19258 {
19259 local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
19260 deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
19261 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019262 local_pAllocator = nullptr;
19263 if (pAllocator)
19264 {
19265 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19266 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19267 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019268 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019269 if (local_pCreateInfo)
19270 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019271 transform_tohost_VkObjectTableCreateInfoNVX(mImpl->resources(), (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019272 }
19273 if (local_pAllocator)
19274 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019275 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019276 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019277 countingStream->rewind();
19278 {
David Reveman9875f2c2019-06-11 21:47:12 -040019279 uint64_t cgen_var_1286;
19280 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1286, 1);
19281 countingStream->write((uint64_t*)&cgen_var_1286, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019282 marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019283 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040019284 uint64_t cgen_var_1287 = (uint64_t)(uintptr_t)local_pAllocator;
19285 countingStream->putBe64(cgen_var_1287);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019286 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019287 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019288 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019289 }
David Reveman9875f2c2019-06-11 21:47:12 -040019290 uint64_t cgen_var_1288;
19291 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1288, 1);
19292 countingStream->write((uint64_t*)&cgen_var_1288, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019293 }
19294 uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19295 countingStream->rewind();
19296 uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
19297 stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
19298 stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019299 uint64_t cgen_var_1289;
19300 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
19301 stream->write((uint64_t*)&cgen_var_1289, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019302 marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019303 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040019304 uint64_t cgen_var_1290 = (uint64_t)(uintptr_t)local_pAllocator;
19305 stream->putBe64(cgen_var_1290);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019306 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019307 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019308 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019309 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019310 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040019311 uint64_t cgen_var_1291;
19312 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1291, 1);
19313 stream->write((uint64_t*)&cgen_var_1291, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019314 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019315 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080019316 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -040019317 uint64_t cgen_var_1292;
19318 stream->read((uint64_t*)&cgen_var_1292, 8);
19319 stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1292, (VkObjectTableNVX*)pObjectTable, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019320 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019321 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019322 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
19323 stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019324 countingStream->clearPool();
19325 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019326 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019327 mImpl->log("finish vkCreateObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019328 return vkCreateObjectTableNVX_VkResult_return;
19329}
19330
19331void VkEncoder::vkDestroyObjectTableNVX(
19332 VkDevice device,
19333 VkObjectTableNVX objectTable,
19334 const VkAllocationCallbacks* pAllocator)
19335{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019336 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019337 mImpl->log("start vkDestroyObjectTableNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019338 auto stream = mImpl->stream();
19339 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019340 auto resources = mImpl->resources();
19341 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019342 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019343 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019344 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019345 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019346 local_device = device;
19347 local_objectTable = objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019348 local_pAllocator = nullptr;
19349 if (pAllocator)
19350 {
19351 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19352 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19353 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019354 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019355 if (local_pAllocator)
19356 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019357 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019358 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019359 countingStream->rewind();
19360 {
David Reveman9875f2c2019-06-11 21:47:12 -040019361 uint64_t cgen_var_1293;
19362 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1293, 1);
19363 countingStream->write((uint64_t*)&cgen_var_1293, 1 * 8);
19364 uint64_t cgen_var_1294;
19365 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1294, 1);
19366 countingStream->write((uint64_t*)&cgen_var_1294, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019367 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040019368 uint64_t cgen_var_1295 = (uint64_t)(uintptr_t)local_pAllocator;
19369 countingStream->putBe64(cgen_var_1295);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019370 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019371 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019372 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019373 }
19374 }
19375 uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19376 countingStream->rewind();
19377 uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
19378 stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
19379 stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019380 uint64_t cgen_var_1296;
19381 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1296, 1);
19382 stream->write((uint64_t*)&cgen_var_1296, 1 * 8);
19383 uint64_t cgen_var_1297;
19384 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1297, 1);
19385 stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019386 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040019387 uint64_t cgen_var_1298 = (uint64_t)(uintptr_t)local_pAllocator;
19388 stream->putBe64(cgen_var_1298);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019389 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019390 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019391 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019392 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019393 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX readParams");
19394 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019395 resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019396 mImpl->log("finish vkDestroyObjectTableNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019397}
19398
19399VkResult VkEncoder::vkRegisterObjectsNVX(
19400 VkDevice device,
19401 VkObjectTableNVX objectTable,
19402 uint32_t objectCount,
19403 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
19404 const uint32_t* pObjectIndices)
19405{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019406 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019407 mImpl->log("start vkRegisterObjectsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019408 auto stream = mImpl->stream();
19409 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019410 auto resources = mImpl->resources();
19411 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019412 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019413 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019414 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019415 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019416 VkObjectTableEntryNVX** local_ppObjectTableEntries;
19417 uint32_t* local_pObjectIndices;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019418 local_device = device;
19419 local_objectTable = objectTable;
19420 local_objectCount = objectCount;
19421 (void)ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019422 local_pObjectIndices = nullptr;
19423 if (pObjectIndices)
19424 {
19425 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
19426 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019427 (void)local_ppObjectTableEntries;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019428 countingStream->rewind();
19429 {
David Reveman9875f2c2019-06-11 21:47:12 -040019430 uint64_t cgen_var_1299;
19431 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1299, 1);
19432 countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8);
19433 uint64_t cgen_var_1300;
19434 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1300, 1);
19435 countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019436 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080019437 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019438 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019439 }
19440 uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19441 countingStream->rewind();
19442 uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
19443 stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
19444 stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019445 uint64_t cgen_var_1301;
19446 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1301, 1);
19447 stream->write((uint64_t*)&cgen_var_1301, 1 * 8);
19448 uint64_t cgen_var_1302;
19449 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1302, 1);
19450 stream->write((uint64_t*)&cgen_var_1302, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019451 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
Lingfeng Yang36891c52018-11-09 14:18:35 -080019452 (void)local_ppObjectTableEntries;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019453 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019454 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX readParams");
19455 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019456 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
19457 stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019458 countingStream->clearPool();
19459 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019460 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019461 mImpl->log("finish vkRegisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019462 return vkRegisterObjectsNVX_VkResult_return;
19463}
19464
19465VkResult VkEncoder::vkUnregisterObjectsNVX(
19466 VkDevice device,
19467 VkObjectTableNVX objectTable,
19468 uint32_t objectCount,
19469 const VkObjectEntryTypeNVX* pObjectEntryTypes,
19470 const uint32_t* pObjectIndices)
19471{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019472 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019473 mImpl->log("start vkUnregisterObjectsNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019474 auto stream = mImpl->stream();
19475 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019476 auto resources = mImpl->resources();
19477 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019478 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019479 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019480 VkObjectTableNVX local_objectTable;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019481 uint32_t local_objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019482 VkObjectEntryTypeNVX* local_pObjectEntryTypes;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019483 uint32_t* local_pObjectIndices;
19484 local_device = device;
19485 local_objectTable = objectTable;
19486 local_objectCount = objectCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019487 local_pObjectEntryTypes = nullptr;
19488 if (pObjectEntryTypes)
19489 {
19490 local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
19491 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019492 local_pObjectIndices = nullptr;
19493 if (pObjectIndices)
19494 {
19495 local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
19496 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019497 countingStream->rewind();
19498 {
David Reveman9875f2c2019-06-11 21:47:12 -040019499 uint64_t cgen_var_1303;
19500 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1303, 1);
19501 countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8);
19502 uint64_t cgen_var_1304;
19503 countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1304, 1);
19504 countingStream->write((uint64_t*)&cgen_var_1304, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019505 countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
19506 countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
19507 countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019508 }
19509 uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19510 countingStream->rewind();
19511 uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
19512 stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
19513 stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019514 uint64_t cgen_var_1305;
19515 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1305, 1);
19516 stream->write((uint64_t*)&cgen_var_1305, 1 * 8);
19517 uint64_t cgen_var_1306;
19518 stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1306, 1);
19519 stream->write((uint64_t*)&cgen_var_1306, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019520 stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
19521 stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
19522 stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019523 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX readParams");
19524 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019525 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
19526 stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019527 countingStream->clearPool();
19528 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019529 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019530 mImpl->log("finish vkUnregisterObjectsNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019531 return vkUnregisterObjectsNVX_VkResult_return;
19532}
19533
19534void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
19535 VkPhysicalDevice physicalDevice,
19536 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
19537 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
19538{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019539 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019540 mImpl->log("start vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019541 auto stream = mImpl->stream();
19542 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019543 auto resources = mImpl->resources();
19544 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019545 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019546 VkPhysicalDevice local_physicalDevice;
19547 local_physicalDevice = physicalDevice;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019548 countingStream->rewind();
19549 {
David Reveman9875f2c2019-06-11 21:47:12 -040019550 uint64_t cgen_var_1307;
19551 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1307, 1);
19552 countingStream->write((uint64_t*)&cgen_var_1307, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019553 marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
19554 marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
19555 }
19556 uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19557 countingStream->rewind();
19558 uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
19559 stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
19560 stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019561 uint64_t cgen_var_1308;
19562 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1308, 1);
19563 stream->write((uint64_t*)&cgen_var_1308, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019564 marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
19565 marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019566 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019567 unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019568 if (pFeatures)
19569 {
19570 transform_fromhost_VkDeviceGeneratedCommandsFeaturesNVX(mImpl->resources(), (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
19571 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019572 unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019573 if (pLimits)
19574 {
19575 transform_fromhost_VkDeviceGeneratedCommandsLimitsNVX(mImpl->resources(), (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
19576 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019577 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019578 mImpl->log("finish vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019579}
19580
19581#endif
19582#ifdef VK_NV_clip_space_w_scaling
19583void VkEncoder::vkCmdSetViewportWScalingNV(
19584 VkCommandBuffer commandBuffer,
19585 uint32_t firstViewport,
19586 uint32_t viewportCount,
19587 const VkViewportWScalingNV* pViewportWScalings)
19588{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019589 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019590 mImpl->log("start vkCmdSetViewportWScalingNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019591 auto stream = mImpl->stream();
19592 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019593 auto resources = mImpl->resources();
19594 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019595 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019596 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019597 uint32_t local_firstViewport;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019598 uint32_t local_viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019599 VkViewportWScalingNV* local_pViewportWScalings;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019600 local_commandBuffer = commandBuffer;
19601 local_firstViewport = firstViewport;
19602 local_viewportCount = viewportCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019603 local_pViewportWScalings = nullptr;
19604 if (pViewportWScalings)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019605 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019606 local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019607 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19608 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019609 deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
19610 }
19611 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019612 if (local_pViewportWScalings)
19613 {
19614 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19615 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019616 transform_tohost_VkViewportWScalingNV(mImpl->resources(), (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019617 }
19618 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019619 countingStream->rewind();
19620 {
David Reveman9875f2c2019-06-11 21:47:12 -040019621 uint64_t cgen_var_1309;
19622 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1309, 1);
19623 countingStream->write((uint64_t*)&cgen_var_1309, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019624 countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
19625 countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
19626 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19627 {
19628 marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019629 }
19630 }
19631 uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19632 countingStream->rewind();
19633 uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
19634 stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
19635 stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019636 uint64_t cgen_var_1310;
19637 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1310, 1);
19638 stream->write((uint64_t*)&cgen_var_1310, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019639 stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
19640 stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019641 for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19642 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019643 marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019644 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019645 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV readParams");
19646 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019647 mImpl->log("finish vkCmdSetViewportWScalingNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019648}
19649
19650#endif
19651#ifdef VK_EXT_direct_mode_display
19652VkResult VkEncoder::vkReleaseDisplayEXT(
19653 VkPhysicalDevice physicalDevice,
19654 VkDisplayKHR display)
19655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019656 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019657 mImpl->log("start vkReleaseDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019658 auto stream = mImpl->stream();
19659 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019660 auto resources = mImpl->resources();
19661 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019662 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019663 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019664 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019665 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019666 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019667 countingStream->rewind();
19668 {
David Reveman9875f2c2019-06-11 21:47:12 -040019669 uint64_t cgen_var_1311;
19670 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1311, 1);
19671 countingStream->write((uint64_t*)&cgen_var_1311, 1 * 8);
19672 uint64_t cgen_var_1312;
19673 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1312, 1);
19674 countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019675 }
19676 uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19677 countingStream->rewind();
19678 uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
19679 stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
19680 stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019681 uint64_t cgen_var_1313;
19682 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1313, 1);
19683 stream->write((uint64_t*)&cgen_var_1313, 1 * 8);
19684 uint64_t cgen_var_1314;
19685 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1314, 1);
19686 stream->write((uint64_t*)&cgen_var_1314, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019687 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT readParams");
19688 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019689 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
19690 stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019691 countingStream->clearPool();
19692 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019693 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019694 mImpl->log("finish vkReleaseDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019695 return vkReleaseDisplayEXT_VkResult_return;
19696}
19697
19698#endif
19699#ifdef VK_EXT_acquire_xlib_display
19700VkResult VkEncoder::vkAcquireXlibDisplayEXT(
19701 VkPhysicalDevice physicalDevice,
19702 Display* dpy,
19703 VkDisplayKHR display)
19704{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019705 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019706 mImpl->log("start vkAcquireXlibDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019707 auto stream = mImpl->stream();
19708 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019709 auto resources = mImpl->resources();
19710 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019711 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019712 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019713 VkDisplayKHR local_display;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019714 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019715 local_display = display;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019716 countingStream->rewind();
19717 {
David Reveman9875f2c2019-06-11 21:47:12 -040019718 uint64_t cgen_var_1315;
19719 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1315, 1);
19720 countingStream->write((uint64_t*)&cgen_var_1315, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019721 countingStream->write((Display*)dpy, sizeof(Display));
David Reveman9875f2c2019-06-11 21:47:12 -040019722 uint64_t cgen_var_1316;
19723 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1316, 1);
19724 countingStream->write((uint64_t*)&cgen_var_1316, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019725 }
19726 uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19727 countingStream->rewind();
19728 uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
19729 stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
19730 stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019731 uint64_t cgen_var_1317;
19732 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1317, 1);
19733 stream->write((uint64_t*)&cgen_var_1317, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019734 stream->write((Display*)dpy, sizeof(Display));
David Reveman9875f2c2019-06-11 21:47:12 -040019735 uint64_t cgen_var_1318;
19736 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1318, 1);
19737 stream->write((uint64_t*)&cgen_var_1318, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019738 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019739 stream->read((Display*)dpy, sizeof(Display));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019740 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019741 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
19742 stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019743 countingStream->clearPool();
19744 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019745 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019746 mImpl->log("finish vkAcquireXlibDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019747 return vkAcquireXlibDisplayEXT_VkResult_return;
19748}
19749
19750VkResult VkEncoder::vkGetRandROutputDisplayEXT(
19751 VkPhysicalDevice physicalDevice,
19752 Display* dpy,
19753 RROutput rrOutput,
19754 VkDisplayKHR* pDisplay)
19755{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019756 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019757 mImpl->log("start vkGetRandROutputDisplayEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019758 auto stream = mImpl->stream();
19759 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019760 auto resources = mImpl->resources();
19761 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019762 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019763 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019764 RROutput local_rrOutput;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019765 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019766 local_rrOutput = rrOutput;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019767 countingStream->rewind();
19768 {
David Reveman9875f2c2019-06-11 21:47:12 -040019769 uint64_t cgen_var_1319;
19770 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1319, 1);
19771 countingStream->write((uint64_t*)&cgen_var_1319, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019772 countingStream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019773 countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
David Reveman9875f2c2019-06-11 21:47:12 -040019774 uint64_t cgen_var_1320;
19775 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1320, 1);
19776 countingStream->write((uint64_t*)&cgen_var_1320, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019777 }
19778 uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19779 countingStream->rewind();
19780 uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
19781 stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
19782 stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019783 uint64_t cgen_var_1321;
19784 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1321, 1);
19785 stream->write((uint64_t*)&cgen_var_1321, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019786 stream->write((Display*)dpy, sizeof(Display));
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019787 stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
Lingfeng Yange4008a02018-11-18 12:22:48 -080019788 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040019789 uint64_t cgen_var_1322;
19790 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1322, 1);
19791 stream->write((uint64_t*)&cgen_var_1322, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080019792 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019793 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019794 stream->read((Display*)dpy, sizeof(Display));
David Reveman9875f2c2019-06-11 21:47:12 -040019795 uint64_t cgen_var_1323;
19796 stream->read((uint64_t*)&cgen_var_1323, 8);
19797 stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1323, (VkDisplayKHR*)pDisplay, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019798 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019799 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
19800 stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019801 countingStream->clearPool();
19802 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019803 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019804 mImpl->log("finish vkGetRandROutputDisplayEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019805 return vkGetRandROutputDisplayEXT_VkResult_return;
19806}
19807
19808#endif
19809#ifdef VK_EXT_display_surface_counter
19810VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
19811 VkPhysicalDevice physicalDevice,
19812 VkSurfaceKHR surface,
19813 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
19814{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019815 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019816 mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019817 auto stream = mImpl->stream();
19818 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019819 auto resources = mImpl->resources();
19820 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019821 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019822 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019823 VkSurfaceKHR local_surface;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019824 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019825 local_surface = surface;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019826 countingStream->rewind();
19827 {
David Reveman9875f2c2019-06-11 21:47:12 -040019828 uint64_t cgen_var_1324;
19829 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1324, 1);
19830 countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
19831 uint64_t cgen_var_1325;
19832 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1325, 1);
19833 countingStream->write((uint64_t*)&cgen_var_1325, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019834 marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
19835 }
19836 uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19837 countingStream->rewind();
19838 uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
19839 stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
19840 stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019841 uint64_t cgen_var_1326;
19842 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1326, 1);
19843 stream->write((uint64_t*)&cgen_var_1326, 1 * 8);
19844 uint64_t cgen_var_1327;
19845 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1327, 1);
19846 stream->write((uint64_t*)&cgen_var_1327, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019847 marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019848 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019849 unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
Lingfeng Yang97a06702018-12-24 17:02:43 -080019850 if (pSurfaceCapabilities)
19851 {
19852 transform_fromhost_VkSurfaceCapabilities2EXT(mImpl->resources(), (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
19853 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019854 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019855 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
19856 stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019857 countingStream->clearPool();
19858 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019859 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019860 mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2EXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019861 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
19862}
19863
19864#endif
19865#ifdef VK_EXT_display_control
19866VkResult VkEncoder::vkDisplayPowerControlEXT(
19867 VkDevice device,
19868 VkDisplayKHR display,
19869 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
19870{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019871 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019872 mImpl->log("start vkDisplayPowerControlEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019873 auto stream = mImpl->stream();
19874 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019875 auto resources = mImpl->resources();
19876 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019877 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019878 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019879 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019880 VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019881 local_device = device;
19882 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019883 local_pDisplayPowerInfo = nullptr;
19884 if (pDisplayPowerInfo)
19885 {
19886 local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
19887 deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
19888 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080019889 if (local_pDisplayPowerInfo)
19890 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019891 transform_tohost_VkDisplayPowerInfoEXT(mImpl->resources(), (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019892 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019893 countingStream->rewind();
19894 {
David Reveman9875f2c2019-06-11 21:47:12 -040019895 uint64_t cgen_var_1328;
19896 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1328, 1);
19897 countingStream->write((uint64_t*)&cgen_var_1328, 1 * 8);
19898 uint64_t cgen_var_1329;
19899 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1329, 1);
19900 countingStream->write((uint64_t*)&cgen_var_1329, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019901 marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019902 }
19903 uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19904 countingStream->rewind();
19905 uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
19906 stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
19907 stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019908 uint64_t cgen_var_1330;
19909 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1330, 1);
19910 stream->write((uint64_t*)&cgen_var_1330, 1 * 8);
19911 uint64_t cgen_var_1331;
19912 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1331, 1);
19913 stream->write((uint64_t*)&cgen_var_1331, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019914 marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019915 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT readParams");
19916 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019917 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
19918 stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080019919 countingStream->clearPool();
19920 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019921 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019922 mImpl->log("finish vkDisplayPowerControlEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019923 return vkDisplayPowerControlEXT_VkResult_return;
19924}
19925
19926VkResult VkEncoder::vkRegisterDeviceEventEXT(
19927 VkDevice device,
19928 const VkDeviceEventInfoEXT* pDeviceEventInfo,
19929 const VkAllocationCallbacks* pAllocator,
19930 VkFence* pFence)
19931{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080019932 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080019933 mImpl->log("start vkRegisterDeviceEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019934 auto stream = mImpl->stream();
19935 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019936 auto resources = mImpl->resources();
19937 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080019938 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019939 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019940 VkDeviceEventInfoEXT* local_pDeviceEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080019941 VkAllocationCallbacks* local_pAllocator;
19942 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019943 local_pDeviceEventInfo = nullptr;
19944 if (pDeviceEventInfo)
19945 {
19946 local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
19947 deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
19948 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019949 local_pAllocator = nullptr;
19950 if (pAllocator)
19951 {
19952 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19953 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19954 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080019955 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080019956 if (local_pDeviceEventInfo)
19957 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019958 transform_tohost_VkDeviceEventInfoEXT(mImpl->resources(), (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019959 }
19960 if (local_pAllocator)
19961 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080019962 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080019963 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019964 countingStream->rewind();
19965 {
David Reveman9875f2c2019-06-11 21:47:12 -040019966 uint64_t cgen_var_1332;
19967 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1332, 1);
19968 countingStream->write((uint64_t*)&cgen_var_1332, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019969 marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019970 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040019971 uint64_t cgen_var_1333 = (uint64_t)(uintptr_t)local_pAllocator;
19972 countingStream->putBe64(cgen_var_1333);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019973 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019974 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019975 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019976 }
David Reveman9875f2c2019-06-11 21:47:12 -040019977 uint64_t cgen_var_1334;
19978 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1334, 1);
19979 countingStream->write((uint64_t*)&cgen_var_1334, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019980 }
19981 uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19982 countingStream->rewind();
19983 uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
19984 stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
19985 stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040019986 uint64_t cgen_var_1335;
19987 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1335, 1);
19988 stream->write((uint64_t*)&cgen_var_1335, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019989 marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080019990 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040019991 uint64_t cgen_var_1336 = (uint64_t)(uintptr_t)local_pAllocator;
19992 stream->putBe64(cgen_var_1336);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019993 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019994 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080019995 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070019996 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080019997 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040019998 uint64_t cgen_var_1337;
19999 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1337, 1);
20000 stream->write((uint64_t*)&cgen_var_1337, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020001 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020002 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040020003 uint64_t cgen_var_1338;
20004 stream->read((uint64_t*)&cgen_var_1338, 8);
20005 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1338, (VkFence*)pFence, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020006 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020007 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
20008 stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020009 countingStream->clearPool();
20010 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020011 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020012 mImpl->log("finish vkRegisterDeviceEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020013 return vkRegisterDeviceEventEXT_VkResult_return;
20014}
20015
20016VkResult VkEncoder::vkRegisterDisplayEventEXT(
20017 VkDevice device,
20018 VkDisplayKHR display,
20019 const VkDisplayEventInfoEXT* pDisplayEventInfo,
20020 const VkAllocationCallbacks* pAllocator,
20021 VkFence* pFence)
20022{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020023 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020024 mImpl->log("start vkRegisterDisplayEventEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020025 auto stream = mImpl->stream();
20026 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020027 auto resources = mImpl->resources();
20028 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020029 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020030 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020031 VkDisplayKHR local_display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020032 VkDisplayEventInfoEXT* local_pDisplayEventInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020033 VkAllocationCallbacks* local_pAllocator;
20034 local_device = device;
20035 local_display = display;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020036 local_pDisplayEventInfo = nullptr;
20037 if (pDisplayEventInfo)
20038 {
20039 local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
20040 deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
20041 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020042 local_pAllocator = nullptr;
20043 if (pAllocator)
20044 {
20045 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20046 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20047 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020048 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020049 if (local_pDisplayEventInfo)
20050 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020051 transform_tohost_VkDisplayEventInfoEXT(mImpl->resources(), (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020052 }
20053 if (local_pAllocator)
20054 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020055 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020056 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020057 countingStream->rewind();
20058 {
David Reveman9875f2c2019-06-11 21:47:12 -040020059 uint64_t cgen_var_1339;
20060 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1339, 1);
20061 countingStream->write((uint64_t*)&cgen_var_1339, 1 * 8);
20062 uint64_t cgen_var_1340;
20063 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1340, 1);
20064 countingStream->write((uint64_t*)&cgen_var_1340, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020065 marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020066 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040020067 uint64_t cgen_var_1341 = (uint64_t)(uintptr_t)local_pAllocator;
20068 countingStream->putBe64(cgen_var_1341);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020069 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020070 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020071 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020072 }
David Reveman9875f2c2019-06-11 21:47:12 -040020073 uint64_t cgen_var_1342;
20074 countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1342, 1);
20075 countingStream->write((uint64_t*)&cgen_var_1342, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020076 }
20077 uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20078 countingStream->rewind();
20079 uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
20080 stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
20081 stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020082 uint64_t cgen_var_1343;
20083 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1343, 1);
20084 stream->write((uint64_t*)&cgen_var_1343, 1 * 8);
20085 uint64_t cgen_var_1344;
20086 stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1344, 1);
20087 stream->write((uint64_t*)&cgen_var_1344, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020088 marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020089 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040020090 uint64_t cgen_var_1345 = (uint64_t)(uintptr_t)local_pAllocator;
20091 stream->putBe64(cgen_var_1345);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020092 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020093 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020094 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020095 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020096 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040020097 uint64_t cgen_var_1346;
20098 stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1346, 1);
20099 stream->write((uint64_t*)&cgen_var_1346, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020100 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020101 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040020102 uint64_t cgen_var_1347;
20103 stream->read((uint64_t*)&cgen_var_1347, 8);
20104 stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1347, (VkFence*)pFence, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020105 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020106 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
20107 stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020108 countingStream->clearPool();
20109 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020110 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020111 mImpl->log("finish vkRegisterDisplayEventEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020112 return vkRegisterDisplayEventEXT_VkResult_return;
20113}
20114
20115VkResult VkEncoder::vkGetSwapchainCounterEXT(
20116 VkDevice device,
20117 VkSwapchainKHR swapchain,
20118 VkSurfaceCounterFlagBitsEXT counter,
20119 uint64_t* pCounterValue)
20120{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020121 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020122 mImpl->log("start vkGetSwapchainCounterEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020123 auto stream = mImpl->stream();
20124 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020125 auto resources = mImpl->resources();
20126 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020127 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020128 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020129 VkSwapchainKHR local_swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020130 VkSurfaceCounterFlagBitsEXT local_counter;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020131 local_device = device;
20132 local_swapchain = swapchain;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020133 local_counter = counter;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020134 countingStream->rewind();
20135 {
David Reveman9875f2c2019-06-11 21:47:12 -040020136 uint64_t cgen_var_1348;
20137 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1348, 1);
20138 countingStream->write((uint64_t*)&cgen_var_1348, 1 * 8);
20139 uint64_t cgen_var_1349;
20140 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1349, 1);
20141 countingStream->write((uint64_t*)&cgen_var_1349, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020142 countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020143 countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
20144 }
20145 uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20146 countingStream->rewind();
20147 uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
20148 stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
20149 stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020150 uint64_t cgen_var_1350;
20151 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1350, 1);
20152 stream->write((uint64_t*)&cgen_var_1350, 1 * 8);
20153 uint64_t cgen_var_1351;
20154 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1351, 1);
20155 stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020156 stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020157 stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020158 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020159 stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020160 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020161 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
20162 stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020163 countingStream->clearPool();
20164 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020165 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020166 mImpl->log("finish vkGetSwapchainCounterEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020167 return vkGetSwapchainCounterEXT_VkResult_return;
20168}
20169
20170#endif
20171#ifdef VK_GOOGLE_display_timing
20172VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
20173 VkDevice device,
20174 VkSwapchainKHR swapchain,
20175 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
20176{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020177 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020178 mImpl->log("start vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020179 auto stream = mImpl->stream();
20180 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020181 auto resources = mImpl->resources();
20182 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020183 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020184 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020185 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020186 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020187 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020188 countingStream->rewind();
20189 {
David Reveman9875f2c2019-06-11 21:47:12 -040020190 uint64_t cgen_var_1352;
20191 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1);
20192 countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
20193 uint64_t cgen_var_1353;
20194 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1353, 1);
20195 countingStream->write((uint64_t*)&cgen_var_1353, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020196 marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
20197 }
20198 uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20199 countingStream->rewind();
20200 uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
20201 stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
20202 stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020203 uint64_t cgen_var_1354;
20204 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1354, 1);
20205 stream->write((uint64_t*)&cgen_var_1354, 1 * 8);
20206 uint64_t cgen_var_1355;
20207 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1355, 1);
20208 stream->write((uint64_t*)&cgen_var_1355, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020209 marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020210 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020211 unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080020212 if (pDisplayTimingProperties)
20213 {
20214 transform_fromhost_VkRefreshCycleDurationGOOGLE(mImpl->resources(), (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
20215 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020216 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020217 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
20218 stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020219 countingStream->clearPool();
20220 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020221 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020222 mImpl->log("finish vkGetRefreshCycleDurationGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020223 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
20224}
20225
20226VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
20227 VkDevice device,
20228 VkSwapchainKHR swapchain,
20229 uint32_t* pPresentationTimingCount,
20230 VkPastPresentationTimingGOOGLE* pPresentationTimings)
20231{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020232 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020233 mImpl->log("start vkGetPastPresentationTimingGOOGLE");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020234 auto stream = mImpl->stream();
20235 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020236 auto resources = mImpl->resources();
20237 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020238 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020239 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020240 VkSwapchainKHR local_swapchain;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020241 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020242 local_swapchain = swapchain;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020243 countingStream->rewind();
20244 {
David Reveman9875f2c2019-06-11 21:47:12 -040020245 uint64_t cgen_var_1356;
20246 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1356, 1);
20247 countingStream->write((uint64_t*)&cgen_var_1356, 1 * 8);
20248 uint64_t cgen_var_1357;
20249 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1357, 1);
20250 countingStream->write((uint64_t*)&cgen_var_1357, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020251 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040020252 uint64_t cgen_var_1358 = (uint64_t)(uintptr_t)pPresentationTimingCount;
20253 countingStream->putBe64(cgen_var_1358);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020254 if (pPresentationTimingCount)
20255 {
20256 countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
20257 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020258 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040020259 uint64_t cgen_var_1359 = (uint64_t)(uintptr_t)pPresentationTimings;
20260 countingStream->putBe64(cgen_var_1359);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020261 if (pPresentationTimings)
20262 {
20263 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20264 {
20265 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20266 }
20267 }
20268 }
20269 uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20270 countingStream->rewind();
20271 uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
20272 stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
20273 stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020274 uint64_t cgen_var_1360;
20275 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1360, 1);
20276 stream->write((uint64_t*)&cgen_var_1360, 1 * 8);
20277 uint64_t cgen_var_1361;
20278 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1361, 1);
20279 stream->write((uint64_t*)&cgen_var_1361, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020280 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040020281 uint64_t cgen_var_1362 = (uint64_t)(uintptr_t)pPresentationTimingCount;
20282 stream->putBe64(cgen_var_1362);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020283 if (pPresentationTimingCount)
20284 {
20285 stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
20286 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020287 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040020288 uint64_t cgen_var_1363 = (uint64_t)(uintptr_t)pPresentationTimings;
20289 stream->putBe64(cgen_var_1363);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020290 if (pPresentationTimings)
20291 {
20292 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20293 {
20294 marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20295 }
20296 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020297 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020298 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020299 uint32_t* check_pPresentationTimingCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020300 check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020301 if (pPresentationTimingCount)
20302 {
20303 if (!(check_pPresentationTimingCount))
20304 {
20305 fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
20306 }
20307 stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
20308 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020309 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020310 VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020311 check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020312 if (pPresentationTimings)
20313 {
20314 if (!(check_pPresentationTimings))
20315 {
20316 fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
20317 }
20318 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20319 {
20320 unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20321 }
20322 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080020323 if (pPresentationTimings)
20324 {
20325 for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20326 {
20327 transform_fromhost_VkPastPresentationTimingGOOGLE(mImpl->resources(), (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20328 }
20329 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020330 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020331 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
20332 stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020333 countingStream->clearPool();
20334 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020335 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020336 mImpl->log("finish vkGetPastPresentationTimingGOOGLE");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020337 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
20338}
20339
20340#endif
20341#ifdef VK_NV_sample_mask_override_coverage
20342#endif
20343#ifdef VK_NV_geometry_shader_passthrough
20344#endif
20345#ifdef VK_NV_viewport_array2
20346#endif
20347#ifdef VK_NVX_multiview_per_view_attributes
20348#endif
20349#ifdef VK_NV_viewport_swizzle
20350#endif
20351#ifdef VK_EXT_discard_rectangles
20352void VkEncoder::vkCmdSetDiscardRectangleEXT(
20353 VkCommandBuffer commandBuffer,
20354 uint32_t firstDiscardRectangle,
20355 uint32_t discardRectangleCount,
20356 const VkRect2D* pDiscardRectangles)
20357{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020358 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020359 mImpl->log("start vkCmdSetDiscardRectangleEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020360 auto stream = mImpl->stream();
20361 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020362 auto resources = mImpl->resources();
20363 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020364 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020365 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020366 uint32_t local_firstDiscardRectangle;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020367 uint32_t local_discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020368 VkRect2D* local_pDiscardRectangles;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020369 local_commandBuffer = commandBuffer;
20370 local_firstDiscardRectangle = firstDiscardRectangle;
20371 local_discardRectangleCount = discardRectangleCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020372 local_pDiscardRectangles = nullptr;
20373 if (pDiscardRectangles)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020374 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020375 local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020376 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20377 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020378 deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
20379 }
20380 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020381 if (local_pDiscardRectangles)
20382 {
20383 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20384 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020385 transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020386 }
20387 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020388 countingStream->rewind();
20389 {
David Reveman9875f2c2019-06-11 21:47:12 -040020390 uint64_t cgen_var_1366;
20391 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1366, 1);
20392 countingStream->write((uint64_t*)&cgen_var_1366, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020393 countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
20394 countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
20395 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20396 {
20397 marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020398 }
20399 }
20400 uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20401 countingStream->rewind();
20402 uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
20403 stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
20404 stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020405 uint64_t cgen_var_1367;
20406 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1367, 1);
20407 stream->write((uint64_t*)&cgen_var_1367, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020408 stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
20409 stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020410 for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20411 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020412 marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020413 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020414 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT readParams");
20415 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020416 mImpl->log("finish vkCmdSetDiscardRectangleEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020417}
20418
20419#endif
20420#ifdef VK_EXT_conservative_rasterization
20421#endif
20422#ifdef VK_EXT_swapchain_colorspace
20423#endif
20424#ifdef VK_EXT_hdr_metadata
20425void VkEncoder::vkSetHdrMetadataEXT(
20426 VkDevice device,
20427 uint32_t swapchainCount,
20428 const VkSwapchainKHR* pSwapchains,
20429 const VkHdrMetadataEXT* pMetadata)
20430{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020431 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020432 mImpl->log("start vkSetHdrMetadataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020433 auto stream = mImpl->stream();
20434 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020435 auto resources = mImpl->resources();
20436 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020437 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020438 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020439 uint32_t local_swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020440 VkSwapchainKHR* local_pSwapchains;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020441 VkHdrMetadataEXT* local_pMetadata;
20442 local_device = device;
20443 local_swapchainCount = swapchainCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020444 local_pSwapchains = nullptr;
20445 if (pSwapchains)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020446 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020447 local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
20448 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020449 local_pMetadata = nullptr;
20450 if (pMetadata)
20451 {
20452 local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020453 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20454 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020455 deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
20456 }
20457 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020458 if (local_pMetadata)
20459 {
20460 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20461 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020462 transform_tohost_VkHdrMetadataEXT(mImpl->resources(), (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020463 }
20464 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020465 countingStream->rewind();
20466 {
David Reveman9875f2c2019-06-11 21:47:12 -040020467 uint64_t cgen_var_1368;
20468 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1368, 1);
20469 countingStream->write((uint64_t*)&cgen_var_1368, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020470 countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020471 if (((swapchainCount)))
20472 {
David Reveman9875f2c2019-06-11 21:47:12 -040020473 uint64_t* cgen_var_1369;
20474 countingStream->alloc((void**)&cgen_var_1369, ((swapchainCount)) * 8);
20475 countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1369, ((swapchainCount)));
20476 countingStream->write((uint64_t*)cgen_var_1369, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020477 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020478 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20479 {
20480 marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020481 }
20482 }
20483 uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20484 countingStream->rewind();
20485 uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
20486 stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
20487 stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020488 uint64_t cgen_var_1370;
20489 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1370, 1);
20490 stream->write((uint64_t*)&cgen_var_1370, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020491 stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020492 if (((swapchainCount)))
20493 {
David Reveman9875f2c2019-06-11 21:47:12 -040020494 uint64_t* cgen_var_1371;
20495 stream->alloc((void**)&cgen_var_1371, ((swapchainCount)) * 8);
20496 stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1371, ((swapchainCount)));
20497 stream->write((uint64_t*)cgen_var_1371, ((swapchainCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080020498 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020499 for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20500 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020501 marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020502 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020503 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT readParams");
20504 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020505 mImpl->log("finish vkSetHdrMetadataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020506}
20507
20508#endif
20509#ifdef VK_MVK_ios_surface
20510VkResult VkEncoder::vkCreateIOSSurfaceMVK(
20511 VkInstance instance,
20512 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
20513 const VkAllocationCallbacks* pAllocator,
20514 VkSurfaceKHR* pSurface)
20515{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020516 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020517 mImpl->log("start vkCreateIOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020518 auto stream = mImpl->stream();
20519 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020520 auto resources = mImpl->resources();
20521 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020522 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020523 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020524 VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020525 VkAllocationCallbacks* local_pAllocator;
20526 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020527 local_pCreateInfo = nullptr;
20528 if (pCreateInfo)
20529 {
20530 local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
20531 deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20532 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020533 local_pAllocator = nullptr;
20534 if (pAllocator)
20535 {
20536 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20537 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20538 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020539 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020540 if (local_pCreateInfo)
20541 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020542 transform_tohost_VkIOSSurfaceCreateInfoMVK(mImpl->resources(), (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020543 }
20544 if (local_pAllocator)
20545 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020546 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020547 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020548 countingStream->rewind();
20549 {
David Reveman9875f2c2019-06-11 21:47:12 -040020550 uint64_t cgen_var_1372;
20551 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1372, 1);
20552 countingStream->write((uint64_t*)&cgen_var_1372, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020553 marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020554 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040020555 uint64_t cgen_var_1373 = (uint64_t)(uintptr_t)local_pAllocator;
20556 countingStream->putBe64(cgen_var_1373);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020557 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020558 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020559 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020560 }
David Reveman9875f2c2019-06-11 21:47:12 -040020561 uint64_t cgen_var_1374;
20562 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1374, 1);
20563 countingStream->write((uint64_t*)&cgen_var_1374, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020564 }
20565 uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20566 countingStream->rewind();
20567 uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
20568 stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
20569 stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020570 uint64_t cgen_var_1375;
20571 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1375, 1);
20572 stream->write((uint64_t*)&cgen_var_1375, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020573 marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020574 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040020575 uint64_t cgen_var_1376 = (uint64_t)(uintptr_t)local_pAllocator;
20576 stream->putBe64(cgen_var_1376);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020577 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020578 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020579 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020580 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020581 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040020582 uint64_t cgen_var_1377;
20583 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1377, 1);
20584 stream->write((uint64_t*)&cgen_var_1377, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020585 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020586 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040020587 uint64_t cgen_var_1378;
20588 stream->read((uint64_t*)&cgen_var_1378, 8);
20589 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1378, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020590 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020591 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
20592 stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020593 countingStream->clearPool();
20594 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020595 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020596 mImpl->log("finish vkCreateIOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020597 return vkCreateIOSSurfaceMVK_VkResult_return;
20598}
20599
20600#endif
20601#ifdef VK_MVK_macos_surface
20602VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
20603 VkInstance instance,
20604 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
20605 const VkAllocationCallbacks* pAllocator,
20606 VkSurfaceKHR* pSurface)
20607{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020608 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020609 mImpl->log("start vkCreateMacOSSurfaceMVK");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020610 auto stream = mImpl->stream();
20611 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020612 auto resources = mImpl->resources();
20613 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020614 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020615 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020616 VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020617 VkAllocationCallbacks* local_pAllocator;
20618 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020619 local_pCreateInfo = nullptr;
20620 if (pCreateInfo)
20621 {
20622 local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
20623 deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20624 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020625 local_pAllocator = nullptr;
20626 if (pAllocator)
20627 {
20628 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20629 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20630 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080020631 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080020632 if (local_pCreateInfo)
20633 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020634 transform_tohost_VkMacOSSurfaceCreateInfoMVK(mImpl->resources(), (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020635 }
20636 if (local_pAllocator)
20637 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020638 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020639 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020640 countingStream->rewind();
20641 {
David Reveman9875f2c2019-06-11 21:47:12 -040020642 uint64_t cgen_var_1379;
20643 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1379, 1);
20644 countingStream->write((uint64_t*)&cgen_var_1379, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020645 marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020646 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040020647 uint64_t cgen_var_1380 = (uint64_t)(uintptr_t)local_pAllocator;
20648 countingStream->putBe64(cgen_var_1380);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020649 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020650 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020651 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020652 }
David Reveman9875f2c2019-06-11 21:47:12 -040020653 uint64_t cgen_var_1381;
20654 countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1381, 1);
20655 countingStream->write((uint64_t*)&cgen_var_1381, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020656 }
20657 uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20658 countingStream->rewind();
20659 uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
20660 stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
20661 stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020662 uint64_t cgen_var_1382;
20663 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1382, 1);
20664 stream->write((uint64_t*)&cgen_var_1382, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020665 marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080020666 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040020667 uint64_t cgen_var_1383 = (uint64_t)(uintptr_t)local_pAllocator;
20668 stream->putBe64(cgen_var_1383);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020669 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020670 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020671 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020672 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080020673 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040020674 uint64_t cgen_var_1384;
20675 stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1384, 1);
20676 stream->write((uint64_t*)&cgen_var_1384, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080020677 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020678 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK readParams");
David Reveman9875f2c2019-06-11 21:47:12 -040020679 uint64_t cgen_var_1385;
20680 stream->read((uint64_t*)&cgen_var_1385, 8);
20681 stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1385, (VkSurfaceKHR*)pSurface, 1);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020682 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020683 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
20684 stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020685 countingStream->clearPool();
20686 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020687 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020688 mImpl->log("finish vkCreateMacOSSurfaceMVK");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020689 return vkCreateMacOSSurfaceMVK_VkResult_return;
20690}
20691
20692#endif
20693#ifdef VK_EXT_external_memory_dma_buf
20694#endif
20695#ifdef VK_EXT_queue_family_foreign
20696#endif
20697#ifdef VK_EXT_debug_utils
20698VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
20699 VkDevice device,
20700 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
20701{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020702 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020703 mImpl->log("start vkSetDebugUtilsObjectNameEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020704 auto stream = mImpl->stream();
20705 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020706 auto resources = mImpl->resources();
20707 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020708 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020709 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020710 VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020711 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020712 local_pNameInfo = nullptr;
20713 if (pNameInfo)
20714 {
20715 local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
20716 deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
20717 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020718 if (local_pNameInfo)
20719 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020720 transform_tohost_VkDebugUtilsObjectNameInfoEXT(mImpl->resources(), (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020721 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020722 countingStream->rewind();
20723 {
David Reveman9875f2c2019-06-11 21:47:12 -040020724 uint64_t cgen_var_1386;
20725 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1386, 1);
20726 countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020727 marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020728 }
20729 uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20730 countingStream->rewind();
20731 uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
20732 stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
20733 stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020734 uint64_t cgen_var_1387;
20735 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1387, 1);
20736 stream->write((uint64_t*)&cgen_var_1387, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020737 marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020738 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT readParams");
20739 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020740 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
20741 stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020742 countingStream->clearPool();
20743 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020744 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020745 mImpl->log("finish vkSetDebugUtilsObjectNameEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020746 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
20747}
20748
20749VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
20750 VkDevice device,
20751 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
20752{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020753 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020754 mImpl->log("start vkSetDebugUtilsObjectTagEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020755 auto stream = mImpl->stream();
20756 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020757 auto resources = mImpl->resources();
20758 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020759 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020760 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020761 VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020762 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020763 local_pTagInfo = nullptr;
20764 if (pTagInfo)
20765 {
20766 local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
20767 deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
20768 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020769 if (local_pTagInfo)
20770 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020771 transform_tohost_VkDebugUtilsObjectTagInfoEXT(mImpl->resources(), (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020772 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020773 countingStream->rewind();
20774 {
David Reveman9875f2c2019-06-11 21:47:12 -040020775 uint64_t cgen_var_1388;
20776 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1388, 1);
20777 countingStream->write((uint64_t*)&cgen_var_1388, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020778 marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020779 }
20780 uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20781 countingStream->rewind();
20782 uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
20783 stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
20784 stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020785 uint64_t cgen_var_1389;
20786 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1389, 1);
20787 stream->write((uint64_t*)&cgen_var_1389, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020788 marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020789 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT readParams");
20790 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020791 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
20792 stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080020793 countingStream->clearPool();
20794 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020795 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020796 mImpl->log("finish vkSetDebugUtilsObjectTagEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020797 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
20798}
20799
20800void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
20801 VkQueue queue,
20802 const VkDebugUtilsLabelEXT* pLabelInfo)
20803{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020804 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020805 mImpl->log("start vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020806 auto stream = mImpl->stream();
20807 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020808 auto resources = mImpl->resources();
20809 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020810 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020811 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020812 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020813 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020814 local_pLabelInfo = nullptr;
20815 if (pLabelInfo)
20816 {
20817 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20818 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20819 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020820 if (local_pLabelInfo)
20821 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020822 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020823 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020824 countingStream->rewind();
20825 {
David Reveman9875f2c2019-06-11 21:47:12 -040020826 uint64_t cgen_var_1390;
20827 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1390, 1);
20828 countingStream->write((uint64_t*)&cgen_var_1390, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020829 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020830 }
20831 uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20832 countingStream->rewind();
20833 uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
20834 stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
20835 stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020836 uint64_t cgen_var_1391;
20837 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1391, 1);
20838 stream->write((uint64_t*)&cgen_var_1391, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020839 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020840 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT readParams");
20841 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020842 mImpl->log("finish vkQueueBeginDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020843}
20844
20845void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
20846 VkQueue queue)
20847{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020848 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020849 mImpl->log("start vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020850 auto stream = mImpl->stream();
20851 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020852 auto resources = mImpl->resources();
20853 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020854 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020855 VkQueue local_queue;
20856 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020857 countingStream->rewind();
20858 {
David Reveman9875f2c2019-06-11 21:47:12 -040020859 uint64_t cgen_var_1392;
20860 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1392, 1);
20861 countingStream->write((uint64_t*)&cgen_var_1392, 1 * 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020862 }
20863 uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20864 countingStream->rewind();
20865 uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
20866 stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
20867 stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020868 uint64_t cgen_var_1393;
20869 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1393, 1);
20870 stream->write((uint64_t*)&cgen_var_1393, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020871 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT readParams");
20872 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020873 mImpl->log("finish vkQueueEndDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020874}
20875
20876void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
20877 VkQueue queue,
20878 const VkDebugUtilsLabelEXT* pLabelInfo)
20879{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020880 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020881 mImpl->log("start vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020882 auto stream = mImpl->stream();
20883 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020884 auto resources = mImpl->resources();
20885 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020886 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020887 VkQueue local_queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020888 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020889 local_queue = queue;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020890 local_pLabelInfo = nullptr;
20891 if (pLabelInfo)
20892 {
20893 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20894 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20895 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020896 if (local_pLabelInfo)
20897 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020898 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020899 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020900 countingStream->rewind();
20901 {
David Reveman9875f2c2019-06-11 21:47:12 -040020902 uint64_t cgen_var_1394;
20903 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1394, 1);
20904 countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020905 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020906 }
20907 uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20908 countingStream->rewind();
20909 uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
20910 stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
20911 stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020912 uint64_t cgen_var_1395;
20913 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1395, 1);
20914 stream->write((uint64_t*)&cgen_var_1395, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020915 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020916 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT readParams");
20917 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020918 mImpl->log("finish vkQueueInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020919}
20920
20921void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
20922 VkCommandBuffer commandBuffer,
20923 const VkDebugUtilsLabelEXT* pLabelInfo)
20924{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020925 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020926 mImpl->log("start vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020927 auto stream = mImpl->stream();
20928 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020929 auto resources = mImpl->resources();
20930 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080020931 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020932 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020933 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080020934 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020935 local_pLabelInfo = nullptr;
20936 if (pLabelInfo)
20937 {
20938 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20939 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20940 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080020941 if (local_pLabelInfo)
20942 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080020943 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080020944 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020945 countingStream->rewind();
20946 {
David Reveman9875f2c2019-06-11 21:47:12 -040020947 uint64_t cgen_var_1396;
20948 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1396, 1);
20949 countingStream->write((uint64_t*)&cgen_var_1396, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080020950 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070020951 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020952 uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20953 countingStream->rewind();
20954 uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
20955 stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
20956 stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020957 uint64_t cgen_var_1397;
20958 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1397, 1);
20959 stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020960 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020961 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT readParams");
20962 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020963 mImpl->log("finish vkCmdBeginDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020964}
20965
20966void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
20967 VkCommandBuffer commandBuffer)
20968{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020969 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020970 mImpl->log("start vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020971 auto stream = mImpl->stream();
20972 auto countingStream = mImpl->countingStream();
20973 auto resources = mImpl->resources();
20974 auto pool = mImpl->pool();
20975 stream->setHandleMapping(resources->unwrapMapping());
20976 VkCommandBuffer local_commandBuffer;
20977 local_commandBuffer = commandBuffer;
20978 countingStream->rewind();
20979 {
David Reveman9875f2c2019-06-11 21:47:12 -040020980 uint64_t cgen_var_1398;
20981 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1398, 1);
20982 countingStream->write((uint64_t*)&cgen_var_1398, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020983 }
20984 uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20985 countingStream->rewind();
20986 uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
20987 stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
20988 stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040020989 uint64_t cgen_var_1399;
20990 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1399, 1);
20991 stream->write((uint64_t*)&cgen_var_1399, 1 * 8);
Lingfeng Yang42ac1792019-02-22 20:13:44 -080020992 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT readParams");
20993 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080020994 mImpl->log("finish vkCmdEndDebugUtilsLabelEXT");;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080020995}
20996
20997void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
20998 VkCommandBuffer commandBuffer,
20999 const VkDebugUtilsLabelEXT* pLabelInfo)
21000{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021001 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021002 mImpl->log("start vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080021003 auto stream = mImpl->stream();
21004 auto countingStream = mImpl->countingStream();
21005 auto resources = mImpl->resources();
21006 auto pool = mImpl->pool();
21007 stream->setHandleMapping(resources->unwrapMapping());
21008 VkCommandBuffer local_commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080021009 VkDebugUtilsLabelEXT* local_pLabelInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021010 local_commandBuffer = commandBuffer;
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080021011 local_pLabelInfo = nullptr;
21012 if (pLabelInfo)
21013 {
21014 local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
21015 deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
21016 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080021017 if (local_pLabelInfo)
21018 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021019 transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021020 }
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080021021 countingStream->rewind();
21022 {
David Reveman9875f2c2019-06-11 21:47:12 -040021023 uint64_t cgen_var_1400;
21024 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1400, 1);
21025 countingStream->write((uint64_t*)&cgen_var_1400, 1 * 8);
Lingfeng Yangb92df0c2018-11-19 01:57:25 -080021026 marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
21027 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021028 uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21029 countingStream->rewind();
21030 uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
21031 stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
21032 stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021033 uint64_t cgen_var_1401;
21034 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1401, 1);
21035 stream->write((uint64_t*)&cgen_var_1401, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021036 marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021037 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT readParams");
21038 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021039 mImpl->log("finish vkCmdInsertDebugUtilsLabelEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021040}
21041
21042VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
21043 VkInstance instance,
21044 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
21045 const VkAllocationCallbacks* pAllocator,
21046 VkDebugUtilsMessengerEXT* pMessenger)
21047{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021048 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021049 mImpl->log("start vkCreateDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021050 auto stream = mImpl->stream();
21051 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021052 auto resources = mImpl->resources();
21053 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021054 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021055 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021056 VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021057 VkAllocationCallbacks* local_pAllocator;
21058 local_instance = instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021059 local_pCreateInfo = nullptr;
21060 if (pCreateInfo)
21061 {
21062 local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
21063 deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
21064 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021065 local_pAllocator = nullptr;
21066 if (pAllocator)
21067 {
21068 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21069 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21070 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021071 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080021072 if (local_pCreateInfo)
21073 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021074 transform_tohost_VkDebugUtilsMessengerCreateInfoEXT(mImpl->resources(), (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021075 }
21076 if (local_pAllocator)
21077 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021078 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021079 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021080 countingStream->rewind();
21081 {
David Reveman9875f2c2019-06-11 21:47:12 -040021082 uint64_t cgen_var_1402;
21083 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1402, 1);
21084 countingStream->write((uint64_t*)&cgen_var_1402, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021085 marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021086 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021087 uint64_t cgen_var_1403 = (uint64_t)(uintptr_t)local_pAllocator;
21088 countingStream->putBe64(cgen_var_1403);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021089 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021090 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021091 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021092 }
David Reveman9875f2c2019-06-11 21:47:12 -040021093 uint64_t cgen_var_1404;
21094 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1404, 1);
21095 countingStream->write((uint64_t*)&cgen_var_1404, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021096 }
21097 uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21098 countingStream->rewind();
21099 uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
21100 stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
21101 stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021102 uint64_t cgen_var_1405;
21103 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1405, 1);
21104 stream->write((uint64_t*)&cgen_var_1405, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021105 marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021106 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021107 uint64_t cgen_var_1406 = (uint64_t)(uintptr_t)local_pAllocator;
21108 stream->putBe64(cgen_var_1406);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021109 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021110 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021111 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021112 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080021113 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040021114 uint64_t cgen_var_1407;
21115 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1407, 1);
21116 stream->write((uint64_t*)&cgen_var_1407, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080021117 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021118 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080021119 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -040021120 uint64_t cgen_var_1408;
21121 stream->read((uint64_t*)&cgen_var_1408, 8);
21122 stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1408, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080021123 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021124 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021125 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
21126 stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021127 countingStream->clearPool();
21128 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021129 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021130 mImpl->log("finish vkCreateDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021131 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
21132}
21133
21134void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
21135 VkInstance instance,
21136 VkDebugUtilsMessengerEXT messenger,
21137 const VkAllocationCallbacks* pAllocator)
21138{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021139 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021140 mImpl->log("start vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021141 auto stream = mImpl->stream();
21142 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021143 auto resources = mImpl->resources();
21144 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021145 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021146 VkInstance local_instance;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021147 VkDebugUtilsMessengerEXT local_messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021148 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021149 local_instance = instance;
21150 local_messenger = messenger;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021151 local_pAllocator = nullptr;
21152 if (pAllocator)
21153 {
21154 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21155 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21156 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021157 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080021158 if (local_pAllocator)
21159 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021160 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021161 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021162 countingStream->rewind();
21163 {
David Reveman9875f2c2019-06-11 21:47:12 -040021164 uint64_t cgen_var_1409;
21165 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1409, 1);
21166 countingStream->write((uint64_t*)&cgen_var_1409, 1 * 8);
21167 uint64_t cgen_var_1410;
21168 countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1410, 1);
21169 countingStream->write((uint64_t*)&cgen_var_1410, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021170 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021171 uint64_t cgen_var_1411 = (uint64_t)(uintptr_t)local_pAllocator;
21172 countingStream->putBe64(cgen_var_1411);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021173 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021174 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021175 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021176 }
21177 }
21178 uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21179 countingStream->rewind();
21180 uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
21181 stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
21182 stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021183 uint64_t cgen_var_1412;
21184 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1412, 1);
21185 stream->write((uint64_t*)&cgen_var_1412, 1 * 8);
21186 uint64_t cgen_var_1413;
21187 stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1413, 1);
21188 stream->write((uint64_t*)&cgen_var_1413, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021189 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021190 uint64_t cgen_var_1414 = (uint64_t)(uintptr_t)local_pAllocator;
21191 stream->putBe64(cgen_var_1414);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021192 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021193 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021194 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021195 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021196 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT readParams");
21197 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021198 resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021199 mImpl->log("finish vkDestroyDebugUtilsMessengerEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021200}
21201
21202void VkEncoder::vkSubmitDebugUtilsMessageEXT(
21203 VkInstance instance,
21204 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
21205 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
21206 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
21207{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021208 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021209 mImpl->log("start vkSubmitDebugUtilsMessageEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021210 auto stream = mImpl->stream();
21211 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021212 auto resources = mImpl->resources();
21213 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021214 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021215 VkInstance local_instance;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021216 VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021217 VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021218 VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021219 local_instance = instance;
21220 local_messageSeverity = messageSeverity;
21221 local_messageTypes = messageTypes;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021222 local_pCallbackData = nullptr;
21223 if (pCallbackData)
21224 {
21225 local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
21226 deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
21227 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080021228 if (local_pCallbackData)
21229 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021230 transform_tohost_VkDebugUtilsMessengerCallbackDataEXT(mImpl->resources(), (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021231 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021232 countingStream->rewind();
21233 {
David Reveman9875f2c2019-06-11 21:47:12 -040021234 uint64_t cgen_var_1415;
21235 countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1415, 1);
21236 countingStream->write((uint64_t*)&cgen_var_1415, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021237 countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
21238 countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
21239 marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021240 }
21241 uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21242 countingStream->rewind();
21243 uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
21244 stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
21245 stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021246 uint64_t cgen_var_1416;
21247 stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1416, 1);
21248 stream->write((uint64_t*)&cgen_var_1416, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021249 stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
21250 stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
21251 marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021252 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT readParams");
21253 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021254 mImpl->log("finish vkSubmitDebugUtilsMessageEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021255}
21256
21257#endif
21258#ifdef VK_ANDROID_external_memory_android_hardware_buffer
21259VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
21260 VkDevice device,
21261 const AHardwareBuffer* buffer,
21262 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
21263{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021264 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021265 mImpl->log("start vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021266 auto stream = mImpl->stream();
21267 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021268 auto resources = mImpl->resources();
21269 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021270 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021271 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021272 AHardwareBuffer* local_buffer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021273 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021274 local_buffer = nullptr;
21275 if (buffer)
21276 {
21277 local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
21278 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021279 countingStream->rewind();
21280 {
David Reveman9875f2c2019-06-11 21:47:12 -040021281 uint64_t cgen_var_1417;
21282 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1417, 1);
21283 countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021284 countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021285 marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
21286 }
21287 uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21288 countingStream->rewind();
21289 uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
21290 stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
21291 stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021292 uint64_t cgen_var_1418;
21293 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1418, 1);
21294 stream->write((uint64_t*)&cgen_var_1418, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021295 stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021296 marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021297 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021298 unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080021299 if (pProperties)
21300 {
21301 transform_fromhost_VkAndroidHardwareBufferPropertiesANDROID(mImpl->resources(), (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
21302 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021303 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021304 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
21305 stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021306 countingStream->clearPool();
21307 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021308 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021309 mImpl->log("finish vkGetAndroidHardwareBufferPropertiesANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021310 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
21311}
21312
21313VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
21314 VkDevice device,
21315 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
21316 AHardwareBuffer** pBuffer)
21317{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021318 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021319 mImpl->log("start vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021320 auto stream = mImpl->stream();
21321 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021322 auto resources = mImpl->resources();
21323 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021324 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021325 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021326 VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021327 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021328 local_pInfo = nullptr;
21329 if (pInfo)
21330 {
21331 local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
21332 deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
21333 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080021334 if (local_pInfo)
21335 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021336 transform_tohost_VkMemoryGetAndroidHardwareBufferInfoANDROID(mImpl->resources(), (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021337 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021338 countingStream->rewind();
21339 {
David Reveman9875f2c2019-06-11 21:47:12 -040021340 uint64_t cgen_var_1419;
21341 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1419, 1);
21342 countingStream->write((uint64_t*)&cgen_var_1419, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021343 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021344 countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
21345 }
21346 uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21347 countingStream->rewind();
21348 uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
21349 stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
21350 stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021351 uint64_t cgen_var_1420;
21352 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1420, 1);
21353 stream->write((uint64_t*)&cgen_var_1420, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021354 marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021355 stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021356 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021357 stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021358 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021359 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
21360 stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021361 countingStream->clearPool();
21362 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021363 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021364 mImpl->log("finish vkGetMemoryAndroidHardwareBufferANDROID");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021365 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
21366}
21367
21368#endif
21369#ifdef VK_EXT_sampler_filter_minmax
21370#endif
21371#ifdef VK_AMD_gpu_shader_int16
21372#endif
21373#ifdef VK_AMD_mixed_attachment_samples
21374#endif
21375#ifdef VK_AMD_shader_fragment_mask
21376#endif
21377#ifdef VK_EXT_shader_stencil_export
21378#endif
21379#ifdef VK_EXT_sample_locations
21380void VkEncoder::vkCmdSetSampleLocationsEXT(
21381 VkCommandBuffer commandBuffer,
21382 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
21383{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021384 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021385 mImpl->log("start vkCmdSetSampleLocationsEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021386 auto stream = mImpl->stream();
21387 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021388 auto resources = mImpl->resources();
21389 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021390 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021391 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021392 VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021393 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021394 local_pSampleLocationsInfo = nullptr;
21395 if (pSampleLocationsInfo)
21396 {
21397 local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
21398 deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
21399 }
Lingfeng Yang62b23322018-12-24 12:45:47 -080021400 if (local_pSampleLocationsInfo)
21401 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021402 transform_tohost_VkSampleLocationsInfoEXT(mImpl->resources(), (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021403 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021404 countingStream->rewind();
21405 {
David Reveman9875f2c2019-06-11 21:47:12 -040021406 uint64_t cgen_var_1421;
21407 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1421, 1);
21408 countingStream->write((uint64_t*)&cgen_var_1421, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021409 marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021410 }
21411 uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21412 countingStream->rewind();
21413 uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
21414 stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
21415 stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021416 uint64_t cgen_var_1422;
21417 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1422, 1);
21418 stream->write((uint64_t*)&cgen_var_1422, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021419 marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021420 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT readParams");
21421 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021422 mImpl->log("finish vkCmdSetSampleLocationsEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021423}
21424
21425void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
21426 VkPhysicalDevice physicalDevice,
21427 VkSampleCountFlagBits samples,
21428 VkMultisamplePropertiesEXT* pMultisampleProperties)
21429{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021430 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021431 mImpl->log("start vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021432 auto stream = mImpl->stream();
21433 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021434 auto resources = mImpl->resources();
21435 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021436 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021437 VkPhysicalDevice local_physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021438 VkSampleCountFlagBits local_samples;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021439 local_physicalDevice = physicalDevice;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021440 local_samples = samples;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021441 countingStream->rewind();
21442 {
David Reveman9875f2c2019-06-11 21:47:12 -040021443 uint64_t cgen_var_1423;
21444 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1423, 1);
21445 countingStream->write((uint64_t*)&cgen_var_1423, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021446 countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021447 marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
21448 }
21449 uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21450 countingStream->rewind();
21451 uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
21452 stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
21453 stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021454 uint64_t cgen_var_1424;
21455 stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1424, 1);
21456 stream->write((uint64_t*)&cgen_var_1424, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021457 stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021458 marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021459 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021460 unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080021461 if (pMultisampleProperties)
21462 {
21463 transform_fromhost_VkMultisamplePropertiesEXT(mImpl->resources(), (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
21464 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021465 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021466 mImpl->log("finish vkGetPhysicalDeviceMultisamplePropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021467}
21468
21469#endif
21470#ifdef VK_EXT_blend_operation_advanced
21471#endif
21472#ifdef VK_NV_fragment_coverage_to_color
21473#endif
21474#ifdef VK_NV_framebuffer_mixed_samples
21475#endif
21476#ifdef VK_NV_fill_rectangle
21477#endif
21478#ifdef VK_EXT_post_depth_coverage
21479#endif
21480#ifdef VK_EXT_validation_cache
21481VkResult VkEncoder::vkCreateValidationCacheEXT(
21482 VkDevice device,
21483 const VkValidationCacheCreateInfoEXT* pCreateInfo,
21484 const VkAllocationCallbacks* pAllocator,
21485 VkValidationCacheEXT* pValidationCache)
21486{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021487 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021488 mImpl->log("start vkCreateValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021489 auto stream = mImpl->stream();
21490 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021491 auto resources = mImpl->resources();
21492 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021493 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021494 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021495 VkValidationCacheCreateInfoEXT* local_pCreateInfo;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021496 VkAllocationCallbacks* local_pAllocator;
21497 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021498 local_pCreateInfo = nullptr;
21499 if (pCreateInfo)
21500 {
21501 local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
21502 deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
21503 }
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021504 local_pAllocator = nullptr;
21505 if (pAllocator)
21506 {
21507 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21508 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21509 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021510 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080021511 if (local_pCreateInfo)
21512 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021513 transform_tohost_VkValidationCacheCreateInfoEXT(mImpl->resources(), (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021514 }
21515 if (local_pAllocator)
21516 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021517 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021518 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021519 countingStream->rewind();
21520 {
David Reveman9875f2c2019-06-11 21:47:12 -040021521 uint64_t cgen_var_1425;
21522 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1425, 1);
21523 countingStream->write((uint64_t*)&cgen_var_1425, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021524 marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021525 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021526 uint64_t cgen_var_1426 = (uint64_t)(uintptr_t)local_pAllocator;
21527 countingStream->putBe64(cgen_var_1426);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021528 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021529 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021530 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021531 }
David Reveman9875f2c2019-06-11 21:47:12 -040021532 uint64_t cgen_var_1427;
21533 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1427, 1);
21534 countingStream->write((uint64_t*)&cgen_var_1427, 8);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021535 }
21536 uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21537 countingStream->rewind();
21538 uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
21539 stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
21540 stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021541 uint64_t cgen_var_1428;
21542 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1);
21543 stream->write((uint64_t*)&cgen_var_1428, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021544 marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021545 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021546 uint64_t cgen_var_1429 = (uint64_t)(uintptr_t)local_pAllocator;
21547 stream->putBe64(cgen_var_1429);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021548 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021549 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021550 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021551 }
Lingfeng Yange4008a02018-11-18 12:22:48 -080021552 stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
David Reveman9875f2c2019-06-11 21:47:12 -040021553 uint64_t cgen_var_1430;
21554 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1430, 1);
21555 stream->write((uint64_t*)&cgen_var_1430, 8);
Lingfeng Yange4008a02018-11-18 12:22:48 -080021556 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021557 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT readParams");
Lingfeng Yange4008a02018-11-18 12:22:48 -080021558 stream->setHandleMapping(resources->createMapping());
David Reveman9875f2c2019-06-11 21:47:12 -040021559 uint64_t cgen_var_1431;
21560 stream->read((uint64_t*)&cgen_var_1431, 8);
21561 stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1431, (VkValidationCacheEXT*)pValidationCache, 1);
Lingfeng Yange4008a02018-11-18 12:22:48 -080021562 stream->unsetHandleMapping();
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021563 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021564 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
21565 stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021566 countingStream->clearPool();
21567 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021568 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021569 mImpl->log("finish vkCreateValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021570 return vkCreateValidationCacheEXT_VkResult_return;
21571}
21572
21573void VkEncoder::vkDestroyValidationCacheEXT(
21574 VkDevice device,
21575 VkValidationCacheEXT validationCache,
21576 const VkAllocationCallbacks* pAllocator)
21577{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021578 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021579 mImpl->log("start vkDestroyValidationCacheEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021580 auto stream = mImpl->stream();
21581 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021582 auto resources = mImpl->resources();
21583 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021584 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021585 VkDevice local_device;
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021586 VkValidationCacheEXT local_validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021587 VkAllocationCallbacks* local_pAllocator;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021588 local_device = device;
21589 local_validationCache = validationCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021590 local_pAllocator = nullptr;
21591 if (pAllocator)
21592 {
21593 local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21594 deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21595 }
Lingfeng Yang9d02e102018-11-10 01:51:46 -080021596 local_pAllocator = nullptr;
Lingfeng Yang62b23322018-12-24 12:45:47 -080021597 if (local_pAllocator)
21598 {
Lingfeng Yang97a06702018-12-24 17:02:43 -080021599 transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yang62b23322018-12-24 12:45:47 -080021600 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021601 countingStream->rewind();
21602 {
David Reveman9875f2c2019-06-11 21:47:12 -040021603 uint64_t cgen_var_1432;
21604 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1432, 1);
21605 countingStream->write((uint64_t*)&cgen_var_1432, 1 * 8);
21606 uint64_t cgen_var_1433;
21607 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1433, 1);
21608 countingStream->write((uint64_t*)&cgen_var_1433, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021609 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021610 uint64_t cgen_var_1434 = (uint64_t)(uintptr_t)local_pAllocator;
21611 countingStream->putBe64(cgen_var_1434);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021612 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021613 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021614 marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021615 }
21616 }
21617 uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21618 countingStream->rewind();
21619 uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
21620 stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
21621 stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021622 uint64_t cgen_var_1435;
21623 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1435, 1);
21624 stream->write((uint64_t*)&cgen_var_1435, 1 * 8);
21625 uint64_t cgen_var_1436;
21626 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1436, 1);
21627 stream->write((uint64_t*)&cgen_var_1436, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021628 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021629 uint64_t cgen_var_1437 = (uint64_t)(uintptr_t)local_pAllocator;
21630 stream->putBe64(cgen_var_1437);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021631 if (local_pAllocator)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021632 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021633 marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021634 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021635 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT readParams");
21636 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT returnUnmarshal");
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021637 resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021638 mImpl->log("finish vkDestroyValidationCacheEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021639}
21640
21641VkResult VkEncoder::vkMergeValidationCachesEXT(
21642 VkDevice device,
21643 VkValidationCacheEXT dstCache,
21644 uint32_t srcCacheCount,
21645 const VkValidationCacheEXT* pSrcCaches)
21646{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021647 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021648 mImpl->log("start vkMergeValidationCachesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021649 auto stream = mImpl->stream();
21650 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021651 auto resources = mImpl->resources();
21652 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021653 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021654 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021655 VkValidationCacheEXT local_dstCache;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021656 uint32_t local_srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021657 VkValidationCacheEXT* local_pSrcCaches;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021658 local_device = device;
21659 local_dstCache = dstCache;
21660 local_srcCacheCount = srcCacheCount;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021661 local_pSrcCaches = nullptr;
21662 if (pSrcCaches)
21663 {
21664 local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
21665 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021666 countingStream->rewind();
21667 {
David Reveman9875f2c2019-06-11 21:47:12 -040021668 uint64_t cgen_var_1438;
21669 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1438, 1);
21670 countingStream->write((uint64_t*)&cgen_var_1438, 1 * 8);
21671 uint64_t cgen_var_1439;
21672 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1439, 1);
21673 countingStream->write((uint64_t*)&cgen_var_1439, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021674 countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021675 if (((srcCacheCount)))
21676 {
David Reveman9875f2c2019-06-11 21:47:12 -040021677 uint64_t* cgen_var_1440;
21678 countingStream->alloc((void**)&cgen_var_1440, ((srcCacheCount)) * 8);
21679 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1440, ((srcCacheCount)));
21680 countingStream->write((uint64_t*)cgen_var_1440, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080021681 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021682 }
21683 uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21684 countingStream->rewind();
21685 uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
21686 stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
21687 stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021688 uint64_t cgen_var_1441;
21689 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1441, 1);
21690 stream->write((uint64_t*)&cgen_var_1441, 1 * 8);
21691 uint64_t cgen_var_1442;
21692 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1442, 1);
21693 stream->write((uint64_t*)&cgen_var_1442, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021694 stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021695 if (((srcCacheCount)))
21696 {
David Reveman9875f2c2019-06-11 21:47:12 -040021697 uint64_t* cgen_var_1443;
21698 stream->alloc((void**)&cgen_var_1443, ((srcCacheCount)) * 8);
21699 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1443, ((srcCacheCount)));
21700 stream->write((uint64_t*)cgen_var_1443, ((srcCacheCount)) * 8);
Lingfeng Yang2285df12018-11-17 16:25:11 -080021701 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021702 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT readParams");
21703 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021704 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
21705 stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021706 countingStream->clearPool();
21707 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021708 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021709 mImpl->log("finish vkMergeValidationCachesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021710 return vkMergeValidationCachesEXT_VkResult_return;
21711}
21712
21713VkResult VkEncoder::vkGetValidationCacheDataEXT(
21714 VkDevice device,
21715 VkValidationCacheEXT validationCache,
21716 size_t* pDataSize,
21717 void* pData)
21718{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021719 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021720 mImpl->log("start vkGetValidationCacheDataEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021721 auto stream = mImpl->stream();
21722 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021723 auto resources = mImpl->resources();
21724 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021725 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021726 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021727 VkValidationCacheEXT local_validationCache;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021728 local_device = device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021729 local_validationCache = validationCache;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021730 countingStream->rewind();
21731 {
David Reveman9875f2c2019-06-11 21:47:12 -040021732 uint64_t cgen_var_1444;
21733 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1444, 1);
21734 countingStream->write((uint64_t*)&cgen_var_1444, 1 * 8);
21735 uint64_t cgen_var_1445;
21736 countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1445, 1);
21737 countingStream->write((uint64_t*)&cgen_var_1445, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021738 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021739 uint64_t cgen_var_1446 = (uint64_t)(uintptr_t)pDataSize;
21740 countingStream->putBe64(cgen_var_1446);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021741 if (pDataSize)
21742 {
David Reveman9875f2c2019-06-11 21:47:12 -040021743 uint64_t cgen_var_1447 = (uint64_t)(*pDataSize);
21744 countingStream->putBe64(cgen_var_1447);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021745 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021746 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021747 uint64_t cgen_var_1448 = (uint64_t)(uintptr_t)pData;
21748 countingStream->putBe64(cgen_var_1448);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021749 if (pData)
21750 {
21751 countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
21752 }
21753 }
21754 uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21755 countingStream->rewind();
21756 uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
21757 stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
21758 stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021759 uint64_t cgen_var_1449;
21760 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1449, 1);
21761 stream->write((uint64_t*)&cgen_var_1449, 1 * 8);
21762 uint64_t cgen_var_1450;
21763 stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1450, 1);
21764 stream->write((uint64_t*)&cgen_var_1450, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021765 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021766 uint64_t cgen_var_1451 = (uint64_t)(uintptr_t)pDataSize;
21767 stream->putBe64(cgen_var_1451);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021768 if (pDataSize)
21769 {
David Reveman9875f2c2019-06-11 21:47:12 -040021770 uint64_t cgen_var_1452 = (uint64_t)(*pDataSize);
21771 stream->putBe64(cgen_var_1452);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021772 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021773 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021774 uint64_t cgen_var_1453 = (uint64_t)(uintptr_t)pData;
21775 stream->putBe64(cgen_var_1453);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021776 if (pData)
21777 {
21778 stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
21779 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021780 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021781 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021782 size_t* check_pDataSize;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021783 check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021784 if (pDataSize)
21785 {
21786 if (!(check_pDataSize))
21787 {
21788 fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
21789 }
Lingfeng Yangfddc0de2018-11-27 22:26:51 -080021790 (*pDataSize) = (size_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021791 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021792 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021793 void* check_pData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021794 check_pData = (void*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021795 if (pData)
21796 {
21797 if (!(check_pData))
21798 {
21799 fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
21800 }
21801 stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
21802 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021803 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021804 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
21805 stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021806 countingStream->clearPool();
21807 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021808 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021809 mImpl->log("finish vkGetValidationCacheDataEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021810 return vkGetValidationCacheDataEXT_VkResult_return;
21811}
21812
21813#endif
21814#ifdef VK_EXT_descriptor_indexing
21815#endif
21816#ifdef VK_EXT_shader_viewport_index_layer
21817#endif
21818#ifdef VK_EXT_global_priority
21819#endif
21820#ifdef VK_EXT_external_memory_host
21821VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
21822 VkDevice device,
21823 VkExternalMemoryHandleTypeFlagBits handleType,
21824 const void* pHostPointer,
21825 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
21826{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021827 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021828 mImpl->log("start vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021829 auto stream = mImpl->stream();
21830 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021831 auto resources = mImpl->resources();
21832 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021833 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021834 VkDevice local_device;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021835 VkExternalMemoryHandleTypeFlagBits local_handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021836 void* local_pHostPointer;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021837 local_device = device;
21838 local_handleType = handleType;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021839 local_pHostPointer = nullptr;
21840 if (pHostPointer)
21841 {
21842 local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
21843 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021844 countingStream->rewind();
21845 {
David Reveman9875f2c2019-06-11 21:47:12 -040021846 uint64_t cgen_var_1457;
21847 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1457, 1);
21848 countingStream->write((uint64_t*)&cgen_var_1457, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021849 countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021850 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021851 uint64_t cgen_var_1458 = (uint64_t)(uintptr_t)local_pHostPointer;
21852 countingStream->putBe64(cgen_var_1458);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021853 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021854 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021855 countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021856 }
21857 marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
21858 }
21859 uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21860 countingStream->rewind();
21861 uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
21862 stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
21863 stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021864 uint64_t cgen_var_1459;
21865 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1459, 1);
21866 stream->write((uint64_t*)&cgen_var_1459, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021867 stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021868 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021869 uint64_t cgen_var_1460 = (uint64_t)(uintptr_t)local_pHostPointer;
21870 stream->putBe64(cgen_var_1460);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021871 if (local_pHostPointer)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021872 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021873 stream->write((void*)local_pHostPointer, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021874 }
21875 marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021876 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT readParams");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021877 unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
Lingfeng Yang97a06702018-12-24 17:02:43 -080021878 if (pMemoryHostPointerProperties)
21879 {
21880 transform_fromhost_VkMemoryHostPointerPropertiesEXT(mImpl->resources(), (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
21881 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021882 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT returnUnmarshal");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021883 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
21884 stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
Lingfeng Yang2285df12018-11-17 16:25:11 -080021885 countingStream->clearPool();
21886 stream->clearPool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021887 pool->freeAll();
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021888 mImpl->log("finish vkGetMemoryHostPointerPropertiesEXT");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021889 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
21890}
21891
21892#endif
21893#ifdef VK_AMD_buffer_marker
21894void VkEncoder::vkCmdWriteBufferMarkerAMD(
21895 VkCommandBuffer commandBuffer,
21896 VkPipelineStageFlagBits pipelineStage,
21897 VkBuffer dstBuffer,
21898 VkDeviceSize dstOffset,
21899 uint32_t marker)
21900{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021901 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021902 mImpl->log("start vkCmdWriteBufferMarkerAMD");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021903 auto stream = mImpl->stream();
21904 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021905 auto resources = mImpl->resources();
21906 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021907 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021908 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021909 VkPipelineStageFlagBits local_pipelineStage;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021910 VkBuffer local_dstBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021911 VkDeviceSize local_dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021912 uint32_t local_marker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021913 local_commandBuffer = commandBuffer;
21914 local_pipelineStage = pipelineStage;
21915 local_dstBuffer = dstBuffer;
21916 local_dstOffset = dstOffset;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021917 local_marker = marker;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021918 countingStream->rewind();
21919 {
David Reveman9875f2c2019-06-11 21:47:12 -040021920 uint64_t cgen_var_1461;
21921 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1461, 1);
21922 countingStream->write((uint64_t*)&cgen_var_1461, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021923 countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
David Reveman9875f2c2019-06-11 21:47:12 -040021924 uint64_t cgen_var_1462;
21925 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1462, 1);
21926 countingStream->write((uint64_t*)&cgen_var_1462, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021927 countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
21928 countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021929 }
21930 uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21931 countingStream->rewind();
21932 uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
21933 stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
21934 stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021935 uint64_t cgen_var_1463;
21936 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1463, 1);
21937 stream->write((uint64_t*)&cgen_var_1463, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021938 stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
David Reveman9875f2c2019-06-11 21:47:12 -040021939 uint64_t cgen_var_1464;
21940 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1464, 1);
21941 stream->write((uint64_t*)&cgen_var_1464, 1 * 8);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021942 stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
21943 stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021944 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD readParams");
21945 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021946 mImpl->log("finish vkCmdWriteBufferMarkerAMD");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021947}
21948
21949#endif
21950#ifdef VK_AMD_shader_core_properties
21951#endif
21952#ifdef VK_EXT_vertex_attribute_divisor
21953#endif
21954#ifdef VK_NV_shader_subgroup_partitioned
21955#endif
21956#ifdef VK_NV_device_diagnostic_checkpoints
21957void VkEncoder::vkCmdSetCheckpointNV(
21958 VkCommandBuffer commandBuffer,
21959 const void* pCheckpointMarker)
21960{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080021961 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080021962 mImpl->log("start vkCmdSetCheckpointNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021963 auto stream = mImpl->stream();
21964 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021965 auto resources = mImpl->resources();
21966 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080021967 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021968 VkCommandBuffer local_commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021969 void* local_pCheckpointMarker;
Lingfeng Yang9666b852018-11-13 23:09:59 -080021970 local_commandBuffer = commandBuffer;
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021971 local_pCheckpointMarker = nullptr;
21972 if (pCheckpointMarker)
21973 {
21974 local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
21975 }
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021976 countingStream->rewind();
21977 {
David Reveman9875f2c2019-06-11 21:47:12 -040021978 uint64_t cgen_var_1465;
21979 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1465, 1);
21980 countingStream->write((uint64_t*)&cgen_var_1465, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021981 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021982 uint64_t cgen_var_1466 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
21983 countingStream->putBe64(cgen_var_1466);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021984 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021985 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080021986 countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070021987 }
21988 }
21989 uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21990 countingStream->rewind();
21991 uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
21992 stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
21993 stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040021994 uint64_t cgen_var_1467;
21995 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1467, 1);
21996 stream->write((uint64_t*)&cgen_var_1467, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080021997 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040021998 uint64_t cgen_var_1468 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
21999 stream->putBe64(cgen_var_1468);
Lingfeng Yang71b596b2018-11-07 18:03:25 -080022000 if (local_pCheckpointMarker)
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022001 {
Lingfeng Yang71b596b2018-11-07 18:03:25 -080022002 stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022003 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022004 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV readParams");
22005 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080022006 mImpl->log("finish vkCmdSetCheckpointNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022007}
22008
22009void VkEncoder::vkGetQueueCheckpointDataNV(
22010 VkQueue queue,
22011 uint32_t* pCheckpointDataCount,
22012 VkCheckpointDataNV* pCheckpointData)
22013{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022014 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080022015 mImpl->log("start vkGetQueueCheckpointDataNV");
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022016 auto stream = mImpl->stream();
22017 auto countingStream = mImpl->countingStream();
Lingfeng Yang71b596b2018-11-07 18:03:25 -080022018 auto resources = mImpl->resources();
22019 auto pool = mImpl->pool();
Lingfeng Yange4008a02018-11-18 12:22:48 -080022020 stream->setHandleMapping(resources->unwrapMapping());
Lingfeng Yang71b596b2018-11-07 18:03:25 -080022021 VkQueue local_queue;
22022 local_queue = queue;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022023 countingStream->rewind();
22024 {
David Reveman9875f2c2019-06-11 21:47:12 -040022025 uint64_t cgen_var_1469;
22026 countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1469, 1);
22027 countingStream->write((uint64_t*)&cgen_var_1469, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022028 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022029 uint64_t cgen_var_1470 = (uint64_t)(uintptr_t)pCheckpointDataCount;
22030 countingStream->putBe64(cgen_var_1470);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022031 if (pCheckpointDataCount)
22032 {
22033 countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
22034 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022035 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022036 uint64_t cgen_var_1471 = (uint64_t)(uintptr_t)pCheckpointData;
22037 countingStream->putBe64(cgen_var_1471);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022038 if (pCheckpointData)
22039 {
22040 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22041 {
22042 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
22043 }
22044 }
22045 }
22046 uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22047 countingStream->rewind();
22048 uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
22049 stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
22050 stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040022051 uint64_t cgen_var_1472;
22052 stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1472, 1);
22053 stream->write((uint64_t*)&cgen_var_1472, 1 * 8);
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022054 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022055 uint64_t cgen_var_1473 = (uint64_t)(uintptr_t)pCheckpointDataCount;
22056 stream->putBe64(cgen_var_1473);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022057 if (pCheckpointDataCount)
22058 {
22059 stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
22060 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022061 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022062 uint64_t cgen_var_1474 = (uint64_t)(uintptr_t)pCheckpointData;
22063 stream->putBe64(cgen_var_1474);
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022064 if (pCheckpointData)
22065 {
22066 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22067 {
22068 marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
22069 }
22070 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022071 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV readParams");
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022072 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022073 uint32_t* check_pCheckpointDataCount;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022074 check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022075 if (pCheckpointDataCount)
22076 {
22077 if (!(check_pCheckpointDataCount))
22078 {
22079 fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
22080 }
22081 stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
22082 }
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022083 // WARNING PTR CHECK
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022084 VkCheckpointDataNV* check_pCheckpointData;
Lingfeng Yang77dc2512018-11-17 12:48:37 -080022085 check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022086 if (pCheckpointData)
22087 {
22088 if (!(check_pCheckpointData))
22089 {
22090 fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
22091 }
22092 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22093 {
22094 unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
22095 }
22096 }
Lingfeng Yang97a06702018-12-24 17:02:43 -080022097 if (pCheckpointData)
22098 {
22099 for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22100 {
22101 transform_fromhost_VkCheckpointDataNV(mImpl->resources(), (VkCheckpointDataNV*)(pCheckpointData + i));
22102 }
22103 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022104 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV returnUnmarshal");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080022105 mImpl->log("finish vkGetQueueCheckpointDataNV");;
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022106}
22107
22108#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022109#ifdef VK_GOOGLE_address_space
22110VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE(
22111 VkDevice device,
22112 VkDeviceMemory memory,
22113 uint64_t* pAddress)
22114{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022115 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE encode");
Lingfeng Yang858ebe22019-01-22 15:53:52 -080022116 mImpl->log("start vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022117 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress);
22118 auto stream = mImpl->stream();
22119 auto countingStream = mImpl->countingStream();
22120 auto resources = mImpl->resources();
22121 auto pool = mImpl->pool();
22122 stream->setHandleMapping(resources->unwrapMapping());
22123 VkDevice local_device;
22124 VkDeviceMemory local_memory;
22125 local_device = device;
22126 local_memory = memory;
Lingfeng Yang2b1b8cf2019-02-08 09:53:36 -080022127 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 -080022128 countingStream->rewind();
22129 {
David Reveman9875f2c2019-06-11 21:47:12 -040022130 uint64_t cgen_var_1477;
22131 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1477, 1);
22132 countingStream->write((uint64_t*)&cgen_var_1477, 1 * 8);
22133 uint64_t cgen_var_1478;
22134 countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1478, 1);
22135 countingStream->write((uint64_t*)&cgen_var_1478, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022136 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022137 uint64_t cgen_var_1479 = (uint64_t)(uintptr_t)pAddress;
22138 countingStream->putBe64(cgen_var_1479);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022139 if (pAddress)
22140 {
22141 countingStream->write((uint64_t*)pAddress, sizeof(uint64_t));
22142 }
22143 }
22144 uint32_t packetSize_vkMapMemoryIntoAddressSpaceGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22145 countingStream->rewind();
22146 uint32_t opcode_vkMapMemoryIntoAddressSpaceGOOGLE = OP_vkMapMemoryIntoAddressSpaceGOOGLE;
22147 stream->write(&opcode_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
22148 stream->write(&packetSize_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040022149 uint64_t cgen_var_1480;
22150 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1480, 1);
22151 stream->write((uint64_t*)&cgen_var_1480, 1 * 8);
22152 uint64_t cgen_var_1481;
22153 stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1481, 1);
22154 stream->write((uint64_t*)&cgen_var_1481, 1 * 8);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022155 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022156 uint64_t cgen_var_1482 = (uint64_t)(uintptr_t)pAddress;
22157 stream->putBe64(cgen_var_1482);
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022158 if (pAddress)
22159 {
22160 stream->write((uint64_t*)pAddress, sizeof(uint64_t));
22161 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022162 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE readParams");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022163 // WARNING PTR CHECK
22164 uint64_t* check_pAddress;
22165 check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64();
22166 if (pAddress)
22167 {
22168 if (!(check_pAddress))
22169 {
22170 fprintf(stderr, "fatal: pAddress inconsistent between guest and host\n");
22171 }
22172 stream->read((uint64_t*)pAddress, sizeof(uint64_t));
22173 }
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022174 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE returnUnmarshal");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022175 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
22176 stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult));
22177 countingStream->clearPool();
22178 stream->clearPool();
22179 pool->freeAll();
22180 mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress);
Lingfeng Yang858ebe22019-01-22 15:53:52 -080022181 mImpl->log("finish vkMapMemoryIntoAddressSpaceGOOGLE");;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080022182 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
22183}
22184
22185#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022186#ifdef VK_GOOGLE_color_buffer
22187VkResult VkEncoder::vkRegisterImageColorBufferGOOGLE(
22188 VkDevice device,
22189 VkImage image,
22190 uint32_t colorBuffer)
22191{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022192 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE encode");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022193 mImpl->log("start vkRegisterImageColorBufferGOOGLE");
22194 auto stream = mImpl->stream();
22195 auto countingStream = mImpl->countingStream();
22196 auto resources = mImpl->resources();
22197 auto pool = mImpl->pool();
22198 stream->setHandleMapping(resources->unwrapMapping());
22199 VkDevice local_device;
22200 VkImage local_image;
22201 uint32_t local_colorBuffer;
22202 local_device = device;
22203 local_image = image;
22204 local_colorBuffer = colorBuffer;
22205 countingStream->rewind();
22206 {
David Reveman9875f2c2019-06-11 21:47:12 -040022207 uint64_t cgen_var_1484;
22208 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1484, 1);
22209 countingStream->write((uint64_t*)&cgen_var_1484, 1 * 8);
22210 uint64_t cgen_var_1485;
22211 countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1485, 1);
22212 countingStream->write((uint64_t*)&cgen_var_1485, 1 * 8);
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022213 countingStream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
22214 }
22215 uint32_t packetSize_vkRegisterImageColorBufferGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22216 countingStream->rewind();
22217 uint32_t opcode_vkRegisterImageColorBufferGOOGLE = OP_vkRegisterImageColorBufferGOOGLE;
22218 stream->write(&opcode_vkRegisterImageColorBufferGOOGLE, sizeof(uint32_t));
22219 stream->write(&packetSize_vkRegisterImageColorBufferGOOGLE, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040022220 uint64_t cgen_var_1486;
22221 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1486, 1);
22222 stream->write((uint64_t*)&cgen_var_1486, 1 * 8);
22223 uint64_t cgen_var_1487;
22224 stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1487, 1);
22225 stream->write((uint64_t*)&cgen_var_1487, 1 * 8);
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022226 stream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022227 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE readParams");
22228 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE returnUnmarshal");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022229 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
22230 stream->read(&vkRegisterImageColorBufferGOOGLE_VkResult_return, sizeof(VkResult));
22231 countingStream->clearPool();
22232 stream->clearPool();
22233 pool->freeAll();
22234 mImpl->log("finish vkRegisterImageColorBufferGOOGLE");;
22235 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
22236}
22237
22238VkResult VkEncoder::vkRegisterBufferColorBufferGOOGLE(
22239 VkDevice device,
22240 VkBuffer buffer,
22241 uint32_t colorBuffer)
22242{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022243 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE encode");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022244 mImpl->log("start vkRegisterBufferColorBufferGOOGLE");
22245 auto stream = mImpl->stream();
22246 auto countingStream = mImpl->countingStream();
22247 auto resources = mImpl->resources();
22248 auto pool = mImpl->pool();
22249 stream->setHandleMapping(resources->unwrapMapping());
22250 VkDevice local_device;
22251 VkBuffer local_buffer;
22252 uint32_t local_colorBuffer;
22253 local_device = device;
22254 local_buffer = buffer;
22255 local_colorBuffer = colorBuffer;
22256 countingStream->rewind();
22257 {
David Reveman9875f2c2019-06-11 21:47:12 -040022258 uint64_t cgen_var_1488;
22259 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1488, 1);
22260 countingStream->write((uint64_t*)&cgen_var_1488, 1 * 8);
22261 uint64_t cgen_var_1489;
22262 countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1489, 1);
22263 countingStream->write((uint64_t*)&cgen_var_1489, 1 * 8);
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022264 countingStream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
22265 }
22266 uint32_t packetSize_vkRegisterBufferColorBufferGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22267 countingStream->rewind();
22268 uint32_t opcode_vkRegisterBufferColorBufferGOOGLE = OP_vkRegisterBufferColorBufferGOOGLE;
22269 stream->write(&opcode_vkRegisterBufferColorBufferGOOGLE, sizeof(uint32_t));
22270 stream->write(&packetSize_vkRegisterBufferColorBufferGOOGLE, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040022271 uint64_t cgen_var_1490;
22272 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1490, 1);
22273 stream->write((uint64_t*)&cgen_var_1490, 1 * 8);
22274 uint64_t cgen_var_1491;
22275 stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1491, 1);
22276 stream->write((uint64_t*)&cgen_var_1491, 1 * 8);
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022277 stream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
Lingfeng Yang42ac1792019-02-22 20:13:44 -080022278 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE readParams");
22279 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE returnUnmarshal");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080022280 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
22281 stream->read(&vkRegisterBufferColorBufferGOOGLE_VkResult_return, sizeof(VkResult));
22282 countingStream->clearPool();
22283 stream->clearPool();
22284 pool->freeAll();
22285 mImpl->log("finish vkRegisterBufferColorBufferGOOGLE");;
22286 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
22287}
22288
22289#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022290#ifdef VK_GOOGLE_sized_descriptor_update_template
22291void VkEncoder::vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
22292 VkDevice device,
22293 VkDescriptorSet descriptorSet,
22294 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
22295 uint32_t imageInfoCount,
22296 uint32_t bufferInfoCount,
22297 uint32_t bufferViewCount,
22298 const uint32_t* pImageInfoEntryIndices,
22299 const uint32_t* pBufferInfoEntryIndices,
22300 const uint32_t* pBufferViewEntryIndices,
22301 const VkDescriptorImageInfo* pImageInfos,
22302 const VkDescriptorBufferInfo* pBufferInfos,
22303 const VkBufferView* pBufferViews)
22304{
22305 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE encode");
22306 mImpl->log("start vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
22307 auto stream = mImpl->stream();
22308 auto countingStream = mImpl->countingStream();
22309 auto resources = mImpl->resources();
22310 auto pool = mImpl->pool();
22311 stream->setHandleMapping(resources->unwrapMapping());
22312 VkDevice local_device;
22313 VkDescriptorSet local_descriptorSet;
22314 VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
22315 uint32_t local_imageInfoCount;
22316 uint32_t local_bufferInfoCount;
22317 uint32_t local_bufferViewCount;
22318 uint32_t* local_pImageInfoEntryIndices;
22319 uint32_t* local_pBufferInfoEntryIndices;
22320 uint32_t* local_pBufferViewEntryIndices;
22321 VkDescriptorImageInfo* local_pImageInfos;
22322 VkDescriptorBufferInfo* local_pBufferInfos;
22323 VkBufferView* local_pBufferViews;
22324 local_device = device;
22325 local_descriptorSet = descriptorSet;
22326 local_descriptorUpdateTemplate = descriptorUpdateTemplate;
22327 local_imageInfoCount = imageInfoCount;
22328 local_bufferInfoCount = bufferInfoCount;
22329 local_bufferViewCount = bufferViewCount;
22330 local_pImageInfoEntryIndices = nullptr;
22331 if (pImageInfoEntryIndices)
22332 {
22333 local_pImageInfoEntryIndices = (uint32_t*)pool->dupArray(pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(const uint32_t));
22334 }
22335 local_pBufferInfoEntryIndices = nullptr;
22336 if (pBufferInfoEntryIndices)
22337 {
22338 local_pBufferInfoEntryIndices = (uint32_t*)pool->dupArray(pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(const uint32_t));
22339 }
22340 local_pBufferViewEntryIndices = nullptr;
22341 if (pBufferViewEntryIndices)
22342 {
22343 local_pBufferViewEntryIndices = (uint32_t*)pool->dupArray(pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(const uint32_t));
22344 }
22345 local_pImageInfos = nullptr;
22346 if (pImageInfos)
22347 {
22348 local_pImageInfos = (VkDescriptorImageInfo*)pool->alloc(((imageInfoCount)) * sizeof(const VkDescriptorImageInfo));
22349 for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22350 {
22351 deepcopy_VkDescriptorImageInfo(pool, pImageInfos + i, (VkDescriptorImageInfo*)(local_pImageInfos + i));
22352 }
22353 }
22354 local_pBufferInfos = nullptr;
22355 if (pBufferInfos)
22356 {
22357 local_pBufferInfos = (VkDescriptorBufferInfo*)pool->alloc(((bufferInfoCount)) * sizeof(const VkDescriptorBufferInfo));
22358 for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22359 {
22360 deepcopy_VkDescriptorBufferInfo(pool, pBufferInfos + i, (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22361 }
22362 }
22363 local_pBufferViews = nullptr;
22364 if (pBufferViews)
22365 {
22366 local_pBufferViews = (VkBufferView*)pool->dupArray(pBufferViews, ((bufferViewCount)) * sizeof(const VkBufferView));
22367 }
22368 if (local_pImageInfos)
22369 {
22370 for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22371 {
22372 transform_tohost_VkDescriptorImageInfo(mImpl->resources(), (VkDescriptorImageInfo*)(local_pImageInfos + i));
22373 }
22374 }
22375 if (local_pBufferInfos)
22376 {
22377 for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22378 {
22379 transform_tohost_VkDescriptorBufferInfo(mImpl->resources(), (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22380 }
22381 }
22382 countingStream->rewind();
22383 {
David Reveman9875f2c2019-06-11 21:47:12 -040022384 uint64_t cgen_var_1492;
22385 countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1492, 1);
22386 countingStream->write((uint64_t*)&cgen_var_1492, 1 * 8);
22387 uint64_t cgen_var_1493;
22388 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1493, 1);
22389 countingStream->write((uint64_t*)&cgen_var_1493, 1 * 8);
22390 uint64_t cgen_var_1494;
22391 countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1494, 1);
22392 countingStream->write((uint64_t*)&cgen_var_1494, 1 * 8);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022393 countingStream->write((uint32_t*)&local_imageInfoCount, sizeof(uint32_t));
22394 countingStream->write((uint32_t*)&local_bufferInfoCount, sizeof(uint32_t));
22395 countingStream->write((uint32_t*)&local_bufferViewCount, sizeof(uint32_t));
22396 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022397 uint64_t cgen_var_1495 = (uint64_t)(uintptr_t)local_pImageInfoEntryIndices;
22398 countingStream->putBe64(cgen_var_1495);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022399 if (local_pImageInfoEntryIndices)
22400 {
22401 countingStream->write((uint32_t*)local_pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(uint32_t));
22402 }
22403 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022404 uint64_t cgen_var_1496 = (uint64_t)(uintptr_t)local_pBufferInfoEntryIndices;
22405 countingStream->putBe64(cgen_var_1496);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022406 if (local_pBufferInfoEntryIndices)
22407 {
22408 countingStream->write((uint32_t*)local_pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(uint32_t));
22409 }
22410 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022411 uint64_t cgen_var_1497 = (uint64_t)(uintptr_t)local_pBufferViewEntryIndices;
22412 countingStream->putBe64(cgen_var_1497);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022413 if (local_pBufferViewEntryIndices)
22414 {
22415 countingStream->write((uint32_t*)local_pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(uint32_t));
22416 }
22417 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022418 uint64_t cgen_var_1498 = (uint64_t)(uintptr_t)local_pImageInfos;
22419 countingStream->putBe64(cgen_var_1498);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022420 if (local_pImageInfos)
22421 {
22422 for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22423 {
22424 marshal_VkDescriptorImageInfo(countingStream, (VkDescriptorImageInfo*)(local_pImageInfos + i));
22425 }
22426 }
22427 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022428 uint64_t cgen_var_1499 = (uint64_t)(uintptr_t)local_pBufferInfos;
22429 countingStream->putBe64(cgen_var_1499);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022430 if (local_pBufferInfos)
22431 {
22432 for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22433 {
22434 marshal_VkDescriptorBufferInfo(countingStream, (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22435 }
22436 }
22437 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022438 uint64_t cgen_var_1500 = (uint64_t)(uintptr_t)local_pBufferViews;
22439 countingStream->putBe64(cgen_var_1500);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022440 if (local_pBufferViews)
22441 {
22442 if (((bufferViewCount)))
22443 {
David Reveman9875f2c2019-06-11 21:47:12 -040022444 uint64_t* cgen_var_1501;
22445 countingStream->alloc((void**)&cgen_var_1501, ((bufferViewCount)) * 8);
22446 countingStream->handleMapping()->mapHandles_VkBufferView_u64(local_pBufferViews, cgen_var_1501, ((bufferViewCount)));
22447 countingStream->write((uint64_t*)cgen_var_1501, ((bufferViewCount)) * 8);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022448 }
22449 }
22450 }
22451 uint32_t packetSize_vkUpdateDescriptorSetWithTemplateSizedGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22452 countingStream->rewind();
22453 uint32_t opcode_vkUpdateDescriptorSetWithTemplateSizedGOOGLE = OP_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
22454 stream->write(&opcode_vkUpdateDescriptorSetWithTemplateSizedGOOGLE, sizeof(uint32_t));
22455 stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateSizedGOOGLE, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040022456 uint64_t cgen_var_1502;
22457 stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1502, 1);
22458 stream->write((uint64_t*)&cgen_var_1502, 1 * 8);
22459 uint64_t cgen_var_1503;
22460 stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1503, 1);
22461 stream->write((uint64_t*)&cgen_var_1503, 1 * 8);
22462 uint64_t cgen_var_1504;
22463 stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1504, 1);
22464 stream->write((uint64_t*)&cgen_var_1504, 1 * 8);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022465 stream->write((uint32_t*)&local_imageInfoCount, sizeof(uint32_t));
22466 stream->write((uint32_t*)&local_bufferInfoCount, sizeof(uint32_t));
22467 stream->write((uint32_t*)&local_bufferViewCount, sizeof(uint32_t));
22468 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022469 uint64_t cgen_var_1505 = (uint64_t)(uintptr_t)local_pImageInfoEntryIndices;
22470 stream->putBe64(cgen_var_1505);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022471 if (local_pImageInfoEntryIndices)
22472 {
22473 stream->write((uint32_t*)local_pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(uint32_t));
22474 }
22475 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022476 uint64_t cgen_var_1506 = (uint64_t)(uintptr_t)local_pBufferInfoEntryIndices;
22477 stream->putBe64(cgen_var_1506);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022478 if (local_pBufferInfoEntryIndices)
22479 {
22480 stream->write((uint32_t*)local_pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(uint32_t));
22481 }
22482 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022483 uint64_t cgen_var_1507 = (uint64_t)(uintptr_t)local_pBufferViewEntryIndices;
22484 stream->putBe64(cgen_var_1507);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022485 if (local_pBufferViewEntryIndices)
22486 {
22487 stream->write((uint32_t*)local_pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(uint32_t));
22488 }
22489 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022490 uint64_t cgen_var_1508 = (uint64_t)(uintptr_t)local_pImageInfos;
22491 stream->putBe64(cgen_var_1508);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022492 if (local_pImageInfos)
22493 {
22494 for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22495 {
22496 marshal_VkDescriptorImageInfo(stream, (VkDescriptorImageInfo*)(local_pImageInfos + i));
22497 }
22498 }
22499 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022500 uint64_t cgen_var_1509 = (uint64_t)(uintptr_t)local_pBufferInfos;
22501 stream->putBe64(cgen_var_1509);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022502 if (local_pBufferInfos)
22503 {
22504 for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22505 {
22506 marshal_VkDescriptorBufferInfo(stream, (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22507 }
22508 }
22509 // WARNING PTR CHECK
David Reveman9875f2c2019-06-11 21:47:12 -040022510 uint64_t cgen_var_1510 = (uint64_t)(uintptr_t)local_pBufferViews;
22511 stream->putBe64(cgen_var_1510);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022512 if (local_pBufferViews)
22513 {
22514 if (((bufferViewCount)))
22515 {
David Reveman9875f2c2019-06-11 21:47:12 -040022516 uint64_t* cgen_var_1511;
22517 stream->alloc((void**)&cgen_var_1511, ((bufferViewCount)) * 8);
22518 stream->handleMapping()->mapHandles_VkBufferView_u64(local_pBufferViews, cgen_var_1511, ((bufferViewCount)));
22519 stream->write((uint64_t*)cgen_var_1511, ((bufferViewCount)) * 8);
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070022520 }
22521 }
22522 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE readParams");
22523 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE returnUnmarshal");
22524 mImpl->log("finish vkUpdateDescriptorSetWithTemplateSizedGOOGLE");;
22525}
22526
22527#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -070022528#ifdef VK_GOOGLE_async_command_buffers
22529void VkEncoder::vkBeginCommandBufferAsyncGOOGLE(
22530 VkCommandBuffer commandBuffer,
22531 const VkCommandBufferBeginInfo* pBeginInfo)
22532{
22533 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE encode");
22534 mImpl->log("start vkBeginCommandBufferAsyncGOOGLE");
22535 auto stream = mImpl->stream();
22536 auto countingStream = mImpl->countingStream();
22537 auto resources = mImpl->resources();
22538 auto pool = mImpl->pool();
22539 stream->setHandleMapping(resources->unwrapMapping());
22540 VkCommandBuffer local_commandBuffer;
22541 VkCommandBufferBeginInfo* local_pBeginInfo;
22542 local_commandBuffer = commandBuffer;
22543 local_pBeginInfo = nullptr;
22544 if (pBeginInfo)
22545 {
22546 local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
22547 deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22548 }
22549 if (local_pBeginInfo)
22550 {
22551 transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22552 }
22553 countingStream->rewind();
22554 {
David Reveman9875f2c2019-06-11 21:47:12 -040022555 uint64_t cgen_var_1512;
22556 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1512, 1);
22557 countingStream->write((uint64_t*)&cgen_var_1512, 1 * 8);
Lingfeng Yangc53e7472019-03-27 08:50:55 -070022558 marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22559 }
22560 uint32_t packetSize_vkBeginCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22561 countingStream->rewind();
22562 uint32_t opcode_vkBeginCommandBufferAsyncGOOGLE = OP_vkBeginCommandBufferAsyncGOOGLE;
22563 stream->write(&opcode_vkBeginCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22564 stream->write(&packetSize_vkBeginCommandBufferAsyncGOOGLE, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040022565 uint64_t cgen_var_1513;
22566 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1513, 1);
22567 stream->write((uint64_t*)&cgen_var_1513, 1 * 8);
Lingfeng Yangc53e7472019-03-27 08:50:55 -070022568 marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22569 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE readParams");
22570 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE returnUnmarshal");
22571 mImpl->log("finish vkBeginCommandBufferAsyncGOOGLE");;
22572}
22573
22574void VkEncoder::vkEndCommandBufferAsyncGOOGLE(
22575 VkCommandBuffer commandBuffer)
22576{
22577 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE encode");
22578 mImpl->log("start vkEndCommandBufferAsyncGOOGLE");
22579 auto stream = mImpl->stream();
22580 auto countingStream = mImpl->countingStream();
22581 auto resources = mImpl->resources();
22582 auto pool = mImpl->pool();
22583 stream->setHandleMapping(resources->unwrapMapping());
22584 VkCommandBuffer local_commandBuffer;
22585 local_commandBuffer = commandBuffer;
22586 countingStream->rewind();
22587 {
David Reveman9875f2c2019-06-11 21:47:12 -040022588 uint64_t cgen_var_1514;
22589 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1514, 1);
22590 countingStream->write((uint64_t*)&cgen_var_1514, 1 * 8);
Lingfeng Yangc53e7472019-03-27 08:50:55 -070022591 }
22592 uint32_t packetSize_vkEndCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22593 countingStream->rewind();
22594 uint32_t opcode_vkEndCommandBufferAsyncGOOGLE = OP_vkEndCommandBufferAsyncGOOGLE;
22595 stream->write(&opcode_vkEndCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22596 stream->write(&packetSize_vkEndCommandBufferAsyncGOOGLE, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040022597 uint64_t cgen_var_1515;
22598 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1515, 1);
22599 stream->write((uint64_t*)&cgen_var_1515, 1 * 8);
Lingfeng Yangc53e7472019-03-27 08:50:55 -070022600 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE readParams");
22601 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE returnUnmarshal");
22602 mImpl->log("finish vkEndCommandBufferAsyncGOOGLE");;
22603}
22604
22605void VkEncoder::vkResetCommandBufferAsyncGOOGLE(
22606 VkCommandBuffer commandBuffer,
22607 VkCommandBufferResetFlags flags)
22608{
22609 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE encode");
22610 mImpl->log("start vkResetCommandBufferAsyncGOOGLE");
22611 auto stream = mImpl->stream();
22612 auto countingStream = mImpl->countingStream();
22613 auto resources = mImpl->resources();
22614 auto pool = mImpl->pool();
22615 stream->setHandleMapping(resources->unwrapMapping());
22616 VkCommandBuffer local_commandBuffer;
22617 VkCommandBufferResetFlags local_flags;
22618 local_commandBuffer = commandBuffer;
22619 local_flags = flags;
22620 countingStream->rewind();
22621 {
David Reveman9875f2c2019-06-11 21:47:12 -040022622 uint64_t cgen_var_1516;
22623 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1516, 1);
22624 countingStream->write((uint64_t*)&cgen_var_1516, 1 * 8);
Lingfeng Yangc53e7472019-03-27 08:50:55 -070022625 countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
22626 }
22627 uint32_t packetSize_vkResetCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22628 countingStream->rewind();
22629 uint32_t opcode_vkResetCommandBufferAsyncGOOGLE = OP_vkResetCommandBufferAsyncGOOGLE;
22630 stream->write(&opcode_vkResetCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22631 stream->write(&packetSize_vkResetCommandBufferAsyncGOOGLE, sizeof(uint32_t));
David Reveman9875f2c2019-06-11 21:47:12 -040022632 uint64_t cgen_var_1517;
22633 stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1517, 1);
22634 stream->write((uint64_t*)&cgen_var_1517, 1 * 8);
Lingfeng Yangc53e7472019-03-27 08:50:55 -070022635 stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
22636 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE readParams");
22637 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE returnUnmarshal");
22638 mImpl->log("finish vkResetCommandBufferAsyncGOOGLE");;
22639}
22640
22641#endif
Lingfeng Yangf4d77ef2018-11-02 23:21:37 -070022642
Lingfeng Yangb1d90102018-11-29 16:10:36 -080022643} // namespace goldfish_vk