00cc9309cb
de6e324bdseparate emu thread10d3daf86Roms List improvements95d202f37Let's make the rom list process on a separate thread so the emulator doesnt take ages to load.fc306967fWow the ROM Header was just completely busted. Game list view works nowbad1691eefuck this shit2b59e5f46game list in progressd26417b83remappable inputs in progressac4af8106inpute72abc240update readme430139dc9Qt6 frontend3080d4d45Fix this small bug too08cd13b85Cop0 unused functions do not actually pose a threat (as per manual). They don't do anything, so shall we.61bb4fb44make idle loop detection a little more specific with where the load goesb037de4c3SAZDFsdff12e81e73eneed to figure out why n64-systemtest loops indefinitely at some address that appears to be valid (i think it's me not invalidating the cache properly)204f0e13bidle skipping seems to work!cb8bb634asdkfjlasdf58e5c89c1Fix compilation issue on my machine (no idea)24fb2898eattempting more serious idle skipping214719577Place rsp.Step inside cached interpreter. Gains about 3 more fpsbb97dcc23mmmmm920b77d38wjkhasdfjhkasdf430ccdab4it's a start...4f42a673aCached interpreter plays Mario 64. Start looking into RSP as wellc9a030787idle skipping works!5fbda03cenew idea366637abaIdle skipping... maybe?609fa2fb0Cache instructions implemented but broken lmao. Commented out for nowe140a6d12- Stop using inheritance for CPU, instead use composition. - Introduce KAIZEN_JIT_ENABLED optional define instead of relying on __aarch64__ and the like. - More cache work68e613057prep cache impl811b4d809fix clang formatfda755f7didkd5024ebbfsmall MI refactor in preparation of (eventually) implementing the RDRAM interface properly694b45341Merge commit '206dcdedf195fb320913584180edb12c7731e396' as 'external/SDL'206dcdedfSquashed 'external/SDL/' content from commit 4d17b99d0a4d16e1cb4need to update sdl848b19920Fix compilation errordb61b5299Merge commit 'e94a94559f28e49678fbcf72199a5258137b0fe9' as 'external/imgui'e94a94559Squashed 'external/imgui/' content from commit 02e9b8cac52edb3757need to update imguic1a705e86Emulate weird JALR behaviour4b4c32f4bFix exception for "unusable COP1" in 4 instructions i missed accidentally (again)df5828142Bug putting 0s in the log everywheref8b580048Make isviewer a sink to file8241e9735Fix exception for "unusable COP1" in 4 instructions i missed accidentallyb29715f20small changesd9a620bc1make use of my new small utility library0d1aa938eAdd 'external/ircolib/' from commit 'ce3cd726c8df8388d554abf8bb55d55020eb4450'e64eb40b3Fuck git git-subtree-dir: external/ircolib git-subtree-split:de6e324bde
343 lines
15 KiB
C
343 lines
15 KiB
C
#ifndef VULKAN_WIN32_H_
|
|
#define VULKAN_WIN32_H_ 1
|
|
|
|
/*
|
|
** Copyright 2015-2024 The Khronos Group Inc.
|
|
**
|
|
** SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/*
|
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
|
**
|
|
*/
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
|
|
// VK_KHR_win32_surface is a preprocessor guard. Do not pass it to API calls.
|
|
#define VK_KHR_win32_surface 1
|
|
#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
|
|
#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
|
|
typedef VkFlags VkWin32SurfaceCreateFlagsKHR;
|
|
typedef struct VkWin32SurfaceCreateInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkWin32SurfaceCreateFlagsKHR flags;
|
|
HINSTANCE hinstance;
|
|
HWND hwnd;
|
|
} VkWin32SurfaceCreateInfoKHR;
|
|
|
|
typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
|
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
|
|
VkInstance instance,
|
|
const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSurfaceKHR* pSurface);
|
|
|
|
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t queueFamilyIndex);
|
|
#endif
|
|
|
|
|
|
// VK_KHR_external_memory_win32 is a preprocessor guard. Do not pass it to API calls.
|
|
#define VK_KHR_external_memory_win32 1
|
|
#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
|
|
#define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
|
|
typedef struct VkImportMemoryWin32HandleInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkExternalMemoryHandleTypeFlagBits handleType;
|
|
HANDLE handle;
|
|
LPCWSTR name;
|
|
} VkImportMemoryWin32HandleInfoKHR;
|
|
|
|
typedef struct VkExportMemoryWin32HandleInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
const SECURITY_ATTRIBUTES* pAttributes;
|
|
DWORD dwAccess;
|
|
LPCWSTR name;
|
|
} VkExportMemoryWin32HandleInfoKHR;
|
|
|
|
typedef struct VkMemoryWin32HandlePropertiesKHR {
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
uint32_t memoryTypeBits;
|
|
} VkMemoryWin32HandlePropertiesKHR;
|
|
|
|
typedef struct VkMemoryGetWin32HandleInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkDeviceMemory memory;
|
|
VkExternalMemoryHandleTypeFlagBits handleType;
|
|
} VkMemoryGetWin32HandleInfoKHR;
|
|
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR(
|
|
VkDevice device,
|
|
const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
|
|
HANDLE* pHandle);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR(
|
|
VkDevice device,
|
|
VkExternalMemoryHandleTypeFlagBits handleType,
|
|
HANDLE handle,
|
|
VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
|
|
#endif
|
|
|
|
|
|
// VK_KHR_win32_keyed_mutex is a preprocessor guard. Do not pass it to API calls.
|
|
#define VK_KHR_win32_keyed_mutex 1
|
|
#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
|
|
#define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
|
|
typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
uint32_t acquireCount;
|
|
const VkDeviceMemory* pAcquireSyncs;
|
|
const uint64_t* pAcquireKeys;
|
|
const uint32_t* pAcquireTimeouts;
|
|
uint32_t releaseCount;
|
|
const VkDeviceMemory* pReleaseSyncs;
|
|
const uint64_t* pReleaseKeys;
|
|
} VkWin32KeyedMutexAcquireReleaseInfoKHR;
|
|
|
|
|
|
|
|
// VK_KHR_external_semaphore_win32 is a preprocessor guard. Do not pass it to API calls.
|
|
#define VK_KHR_external_semaphore_win32 1
|
|
#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
|
|
#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
|
|
typedef struct VkImportSemaphoreWin32HandleInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkSemaphore semaphore;
|
|
VkSemaphoreImportFlags flags;
|
|
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
|
HANDLE handle;
|
|
LPCWSTR name;
|
|
} VkImportSemaphoreWin32HandleInfoKHR;
|
|
|
|
typedef struct VkExportSemaphoreWin32HandleInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
const SECURITY_ATTRIBUTES* pAttributes;
|
|
DWORD dwAccess;
|
|
LPCWSTR name;
|
|
} VkExportSemaphoreWin32HandleInfoKHR;
|
|
|
|
typedef struct VkD3D12FenceSubmitInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
uint32_t waitSemaphoreValuesCount;
|
|
const uint64_t* pWaitSemaphoreValues;
|
|
uint32_t signalSemaphoreValuesCount;
|
|
const uint64_t* pSignalSemaphoreValues;
|
|
} VkD3D12FenceSubmitInfoKHR;
|
|
|
|
typedef struct VkSemaphoreGetWin32HandleInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkSemaphore semaphore;
|
|
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
|
} VkSemaphoreGetWin32HandleInfoKHR;
|
|
|
|
typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR(
|
|
VkDevice device,
|
|
const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR(
|
|
VkDevice device,
|
|
const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
|
|
HANDLE* pHandle);
|
|
#endif
|
|
|
|
|
|
// VK_KHR_external_fence_win32 is a preprocessor guard. Do not pass it to API calls.
|
|
#define VK_KHR_external_fence_win32 1
|
|
#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
|
|
#define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
|
|
typedef struct VkImportFenceWin32HandleInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkFence fence;
|
|
VkFenceImportFlags flags;
|
|
VkExternalFenceHandleTypeFlagBits handleType;
|
|
HANDLE handle;
|
|
LPCWSTR name;
|
|
} VkImportFenceWin32HandleInfoKHR;
|
|
|
|
typedef struct VkExportFenceWin32HandleInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
const SECURITY_ATTRIBUTES* pAttributes;
|
|
DWORD dwAccess;
|
|
LPCWSTR name;
|
|
} VkExportFenceWin32HandleInfoKHR;
|
|
|
|
typedef struct VkFenceGetWin32HandleInfoKHR {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkFence fence;
|
|
VkExternalFenceHandleTypeFlagBits handleType;
|
|
} VkFenceGetWin32HandleInfoKHR;
|
|
|
|
typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR(
|
|
VkDevice device,
|
|
const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR(
|
|
VkDevice device,
|
|
const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
|
|
HANDLE* pHandle);
|
|
#endif
|
|
|
|
|
|
// VK_NV_external_memory_win32 is a preprocessor guard. Do not pass it to API calls.
|
|
#define VK_NV_external_memory_win32 1
|
|
#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
|
|
#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
|
|
typedef struct VkImportMemoryWin32HandleInfoNV {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkExternalMemoryHandleTypeFlagsNV handleType;
|
|
HANDLE handle;
|
|
} VkImportMemoryWin32HandleInfoNV;
|
|
|
|
typedef struct VkExportMemoryWin32HandleInfoNV {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
const SECURITY_ATTRIBUTES* pAttributes;
|
|
DWORD dwAccess;
|
|
} VkExportMemoryWin32HandleInfoNV;
|
|
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV(
|
|
VkDevice device,
|
|
VkDeviceMemory memory,
|
|
VkExternalMemoryHandleTypeFlagsNV handleType,
|
|
HANDLE* pHandle);
|
|
#endif
|
|
|
|
|
|
// VK_NV_win32_keyed_mutex is a preprocessor guard. Do not pass it to API calls.
|
|
#define VK_NV_win32_keyed_mutex 1
|
|
#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2
|
|
#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
|
|
typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
uint32_t acquireCount;
|
|
const VkDeviceMemory* pAcquireSyncs;
|
|
const uint64_t* pAcquireKeys;
|
|
const uint32_t* pAcquireTimeoutMilliseconds;
|
|
uint32_t releaseCount;
|
|
const VkDeviceMemory* pReleaseSyncs;
|
|
const uint64_t* pReleaseKeys;
|
|
} VkWin32KeyedMutexAcquireReleaseInfoNV;
|
|
|
|
|
|
|
|
// VK_EXT_full_screen_exclusive is a preprocessor guard. Do not pass it to API calls.
|
|
#define VK_EXT_full_screen_exclusive 1
|
|
#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4
|
|
#define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive"
|
|
|
|
typedef enum VkFullScreenExclusiveEXT {
|
|
VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0,
|
|
VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1,
|
|
VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2,
|
|
VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3,
|
|
VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 0x7FFFFFFF
|
|
} VkFullScreenExclusiveEXT;
|
|
typedef struct VkSurfaceFullScreenExclusiveInfoEXT {
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
VkFullScreenExclusiveEXT fullScreenExclusive;
|
|
} VkSurfaceFullScreenExclusiveInfoEXT;
|
|
|
|
typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT {
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
VkBool32 fullScreenExclusiveSupported;
|
|
} VkSurfaceCapabilitiesFullScreenExclusiveEXT;
|
|
|
|
typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT {
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
HMONITOR hmonitor;
|
|
} VkSurfaceFullScreenExclusiveWin32InfoEXT;
|
|
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
uint32_t* pPresentModeCount,
|
|
VkPresentModeKHR* pPresentModes);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT(
|
|
VkDevice device,
|
|
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
VkDeviceGroupPresentModeFlagsKHR* pModes);
|
|
#endif
|
|
|
|
|
|
// VK_NV_acquire_winrt_display is a preprocessor guard. Do not pass it to API calls.
|
|
#define VK_NV_acquire_winrt_display 1
|
|
#define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1
|
|
#define VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME "VK_NV_acquire_winrt_display"
|
|
typedef VkResult (VKAPI_PTR *PFN_vkAcquireWinrtDisplayNV)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
|
|
typedef VkResult (VKAPI_PTR *PFN_vkGetWinrtDisplayNV)(VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay);
|
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkAcquireWinrtDisplayNV(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkDisplayKHR display);
|
|
|
|
VKAPI_ATTR VkResult VKAPI_CALL vkGetWinrtDisplayNV(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t deviceRelativeId,
|
|
VkDisplayKHR* pDisplay);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|