Hades (0100535012974000, update 1.0.38233, SDK 9) renders with Vulkan through The Forge, not NVN. The host now implements its 100 vk* imports on Metal in dm/gfx/vk/hle_vk.m, and the Vulkan loader (subsdk0) and NVIDIA's driver (subsdk1) are not loaded. The title menu, the intro and Tartarus gameplay run at 60 fps on the Mac, and a Metal validation run is clean. The iPhone build is untested. - dm/gfx/vk/hle_vk.m: one Tegra X1-shaped device. Memory is a lazily made shared MTLBuffer; images are private MTLTextures. Command buffers are recorded on the host and replayed at vkQueueSubmit on the layer's own queue, which signals an MTLSharedEvent. Descriptor sets, update templates, render passes and pipelines are supported. The swapchain presents through the NVN layer's present path. vkGet*ProcAddr look names up in the HLE table, also trying a name without its KHR suffix. - dm/gfx/tools/vk_shaders.py: SPIR-V to one metallib plus a slot table. It renumbers bindings per kind, flips vertex y, and lists only the resources the Metal entry point takes. - nvn_mtl.m/h: mtl_device, mtl_ext_tex and mtl_present_ext for external producers. Their present waits on the producer's event. - hle_nvn.c: dm_gfx_enter/leave and dm_vk_drain, so the background suspend also covers Vulkan submits. - hle_oe.c: GetNotificationMessageEvent returns a host-owned auto-clear SystemEvent. The SDK's version returned an event the no-op oe::Initialize never created. - patch_nso.py: the byte-table jump search looks 16 instructions back, not 8 (Hades main+0x1135d0). The output for every other module is byte-identical. - Profile key `graphics vulkan`: build_ipa.sh ships $MSL_IOS/vk instead of the NVN chain libraries. - dm/third_party/vulkan-headers: Vulkan-Headers 1.4.363, unmodified. - dm/.gitignore: per-game host binaries (dm/host/dmhost_*).
51 lines
1.3 KiB
C
51 lines
1.3 KiB
C
#ifndef VULKAN_VI_H_
|
|
#define VULKAN_VI_H_ 1
|
|
|
|
/*
|
|
** Copyright 2015-2026 The Khronos Group Inc.
|
|
**
|
|
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
*/
|
|
|
|
/*
|
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
|
**
|
|
*/
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
|
|
// VK_NN_vi_surface is a preprocessor guard. Do not pass it to API calls.
|
|
#define VK_NN_vi_surface 1
|
|
#define VK_NN_VI_SURFACE_SPEC_VERSION 1
|
|
#define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface"
|
|
typedef VkFlags VkViSurfaceCreateFlagsNN;
|
|
typedef struct VkViSurfaceCreateInfoNN {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkViSurfaceCreateFlagsNN flags;
|
|
void* window;
|
|
} VkViSurfaceCreateInfoNN;
|
|
|
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
#ifndef VK_ONLY_EXPORTED_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN(
|
|
VkInstance instance,
|
|
const VkViSurfaceCreateInfoNN* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSurfaceKHR* pSurface);
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|