VkResult vkCreateXlibSurfaceKHR( VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const
| 223 | |
| 224 | // VkResult vkCreateXlibSurfaceKHR( VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const |
| 225 | static void BOXED_vkCreateXlibSurfaceKHR(CPU* cpu) { |
| 226 | //VkInstance instance, |
| 227 | //const VkWin32SurfaceCreateInfoKHR* create_info, |
| 228 | //const VkAllocationCallbacks* allocator, |
| 229 | // VkSurfaceKHR* surface |
| 230 | |
| 231 | KVulkanPtr vulkanWnd = KNativeSystem::getVulkan(); |
| 232 | |
| 233 | void* instance = getVulkanPtr(cpu->memory, cpu->peek32(1)); |
| 234 | // window is the 5th 32-bit variable in VkXlibSurfaceCreateInfoKHR |
| 235 | U32 windowId = cpu->memory->readd(ARG2 + 4 * sizeof(U32)); |
| 236 | XWindowPtr xWindow = XServer::getServer()->getWindow(windowId); |
| 237 | void* surface = vulkanWnd->createVulkanSurface(xWindow, instance); |
| 238 | if (!surface) { |
| 239 | EAX = VK_ERROR_OUT_OF_HOST_MEMORY; |
| 240 | } else { |
| 241 | EAX = VK_SUCCESS; |
| 242 | // VK_DEFINE_NON_DISPATCHABLE_HANDLE (always 64 bit) |
| 243 | cpu->memory->writeq(cpu->peek32(4), (U64)surface); |
| 244 | XServer::getServer()->setFakeFullScreenWindow(xWindow); |
| 245 | } |
| 246 | } |
| 247 | |
| 248 | #include "vk_host_marshal.h" |
| 249 |
nothing calls this directly
no test coverage detected