14#ifdef WITH_VULKAN_BACKEND
15# include <vulkan/vulkan_core.h>
16VK_DEFINE_HANDLE(VmaAllocator)
24#if defined(__cplusplus)
25# define GHOST_DECLARE_HANDLE(name) \
26 typedef struct name##__ { \
28 MEM_CXX_CLASS_ALLOC_FUNCS(#name) \
31# define GHOST_DECLARE_HANDLE(name) \
32 typedef struct name##__ { \
95 uint8_t *(*alloc_fn)(
size_t size),
98 bool *r_can_invert_color);
193#define GHOST_CAPABILITY_FLAG_ALL \
194 (GHOST_kCapabilityCursorWarp | GHOST_kCapabilityWindowPosition | \
195 GHOST_kCapabilityClipboardPrimary | GHOST_kCapabilityGPUReadFrontBuffer | \
196 GHOST_kCapabilityClipboardImage | GHOST_kCapabilityDesktopSample | GHOST_kCapabilityInputIME | \
197 GHOST_kCapabilityTrackpadPhysicalDirection | GHOST_kCapabilityWindowDecorationStyles | \
198 GHOST_kCapabilityKeyboardHyperKey | GHOST_kCapabilityCursorRGBA | \
199 GHOST_kCapabilityCursorGenerator | GHOST_kCapabilityMultiMonitorPlacement)
279#if defined(WITH_OPENGL_BACKEND)
280 GHOST_kDrawingContextTypeOpenGL,
283 GHOST_kDrawingContextTypeD3D,
285#if defined(__APPLE__) && defined(WITH_METAL_BACKEND)
286 GHOST_kDrawingContextTypeMetal,
288#ifdef WITH_VULKAN_BACKEND
289 GHOST_kDrawingContextTypeVulkan,
304#define GHOST_kButtonNum (int(GHOST_kButtonMaskButton7) + 1)
332#ifdef WITH_INPUT_NDOF
338 GHOST_kEventNDOFMotion,
344 GHOST_kEventNDOFButton,
382#define GHOST_kNumEventTypes (GHOST_kEventImeCompositionEnd + 1)
386#define GHOST_kStandardCursorFirstCursor int(GHOST_kStandardCursorDefault)
439#define GHOST_kStandardCursorNumCursors (int(GHOST_kStandardCursorCustom) + 1)
507#define _GHOST_KEY_MODIFIER_MIN GHOST_kKeyLeftShift
520#define _GHOST_KEY_MODIFIER_MAX GHOST_kKeyRightHyper
595#define GHOST_KEY_MODIFIER_NUM ((_GHOST_KEY_MODIFIER_MAX - _GHOST_KEY_MODIFIER_MIN) + 1)
596#define GHOST_KEY_MODIFIER_TO_INDEX(key) ((unsigned int)(key) - _GHOST_KEY_MODIFIER_MIN)
597#define GHOST_KEY_MODIFIER_FROM_INDEX(key) \
598 (GHOST_TKey)(((unsigned int)(key) + _GHOST_KEY_MODIFIER_MIN))
599#define GHOST_KEY_MODIFIER_CHECK(key) (GHOST_KEY_MODIFIER_TO_INDEX(key) < GHOST_KEY_MODIFIER_NUM)
615#define GHOST_GRAB_NEEDS_SOFTWARE_CURSOR_FOR_WARP(grab) ((grab) == GHOST_kGrabWrap)
729#ifdef WITH_INPUT_NDOF
745} GHOST_TEventNDOFMotionData;
747typedef enum { GHOST_kPress, GHOST_kRelease } GHOST_TButtonAction;
751 GHOST_TButtonAction action;
753} GHOST_TEventNDOFButtonData;
826#define GHOST_CONTEXT_PARAMS_NONE \
830 GHOST_kVSyncModeUnset, \
833#define GHOST_CONTEXT_PARAMS_FROM_GPU_SETTINGS_OFFSCREEN(gpu_settings) \
836 (((gpu_settings).flags & GHOST_gpuDebugContext) != 0), \
837 GHOST_kVSyncModeUnset, \
840#define GHOST_CONTEXT_PARAMS_FROM_GPU_SETTINGS(gpu_settings) \
842 (((gpu_settings).flags & GHOST_gpuStereoVisual) != 0), \
843 (((gpu_settings).flags & GHOST_gpuDebugContext) != 0), \
844 (((gpu_settings).flags & GHOST_gpuVSyncIsOverridden) ? (gpu_settings).vsync : \
845 GHOST_kVSyncModeUnset), \
872#define GHOST_WINDOW_HDR_INFO_NONE \
879#ifdef WITH_VULKAN_BACKEND
884 VkSurfaceFormatKHR surface_format;
888 VkSemaphore acquire_semaphore;
890 VkSemaphore present_semaphore;
892 VkFence submission_fence;
895} GHOST_VulkanSwapChainData;
904 GHOST_kVulkanXRModeCPU,
912 GHOST_kVulkanXRModeFD,
920 GHOST_kVulkanXRModeWin32,
921} GHOST_TVulkanXRModes;
928 GHOST_TVulkanXRModes data_transfer_mode;
949 VkImage vk_image_blender;
966 VkFormat image_format;
971 VkDeviceSize memory_size;
976 VkDeviceSize memory_offset;
980} GHOST_VulkanOpenXRData;
991 VkPhysicalDevice physical_device;
1001 VmaAllocator vma_allocator;
1002} GHOST_VulkanHandles;
1035struct GHOST_TimerTaskHandle__;
1039#ifdef WITH_XR_OPENXR
1041struct GHOST_XrDrawViewInfo;
1042struct GHOST_XrError;
1050typedef enum GHOST_TXrGraphicsBinding {
1051 GHOST_kXrGraphicsUnknown = 0,
1052 GHOST_kXrGraphicsOpenGL,
1053 GHOST_kXrGraphicsVulkan,
1055 GHOST_kXrGraphicsOpenGLD3D11,
1056 GHOST_kXrGraphicsVulkanD3D11,
1060} GHOST_TXrGraphicsBinding;
1062typedef void (*GHOST_XrErrorHandlerFn)(
const struct GHOST_XrError *);
1064typedef void (*GHOST_XrSessionCreateFn)(void);
1065typedef void (*GHOST_XrSessionExitFn)(
void *customdata);
1066typedef void (*GHOST_XrCustomdataFreeFn)(
void *customdata);
1068typedef void *(*GHOST_XrGraphicsContextBindFn)(void);
1069typedef void (*GHOST_XrGraphicsContextUnbindFn)(GHOST_ContextHandle graphics_context);
1070typedef void (*GHOST_XrDrawViewFn)(
const struct GHOST_XrDrawViewInfo *draw_view,
void *customdata);
1071typedef bool (*GHOST_XrPassthroughEnabledFn)(
void *customdata);
1072typedef void (*GHOST_XrDisablePassthroughFn)(
void *customdata);
1078typedef const GHOST_TXrGraphicsBinding *GHOST_XrGraphicsBindingCandidates;
1084 float orientation_quat[4];
1088 GHOST_kXrContextDebug = (1 << 0),
1089 GHOST_kXrContextDebugTime = (1 << 1),
1093 GHOST_kXrContextGpuNVIDIA = (1 << 2),
1098 const GHOST_XrGraphicsBindingCandidates gpu_binding_candidates;
1099 unsigned int gpu_binding_candidates_count;
1101 unsigned int context_flag;
1102} GHOST_XrContextCreateInfo;
1105 GHOST_XrPose base_pose;
1107 GHOST_XrSessionCreateFn create_fn;
1108 GHOST_XrSessionExitFn exit_fn;
1109 void *exit_customdata;
1110} GHOST_XrSessionBeginInfo;
1113typedef enum GHOST_TXrSwapchainFormat {
1114 GHOST_kXrSwapchainFormatRGBA8,
1115 GHOST_kXrSwapchainFormatRGBA16,
1116 GHOST_kXrSwapchainFormatRGBA16F,
1117 GHOST_kXrSwapchainFormatRGB10_A2,
1118} GHOST_TXrSwapchainFormat;
1120typedef struct GHOST_XrDrawViewInfo {
1124 GHOST_XrPose eye_pose;
1125 GHOST_XrPose local_pose;
1128 float angle_left, angle_right;
1129 float angle_up, angle_down;
1132 GHOST_TXrSwapchainFormat swapchain_format;
1134 char expects_srgb_buffer;
1139} GHOST_XrDrawViewInfo;
1141typedef struct GHOST_XrError {
1142 const char *user_message;
1147typedef struct GHOST_XrActionSetInfo {
1150 GHOST_XrCustomdataFreeFn customdata_free_fn;
1152} GHOST_XrActionSetInfo;
1156typedef enum GHOST_XrActionType {
1157 GHOST_kXrActionTypeBooleanInput = 1,
1158 GHOST_kXrActionTypeFloatInput = 2,
1159 GHOST_kXrActionTypeVector2fInput = 3,
1160 GHOST_kXrActionTypePoseInput = 4,
1161 GHOST_kXrActionTypeVibrationOutput = 100,
1162} GHOST_XrActionType;
1164typedef struct GHOST_XrActionInfo {
1166 GHOST_XrActionType type;
1168 const char **subaction_paths;
1172 float *float_thresholds;
1175 GHOST_XrCustomdataFreeFn customdata_free_fn;
1177} GHOST_XrActionInfo;
1179typedef struct GHOST_XrActionBindingInfo {
1180 const char *component_path;
1181 float float_threshold;
1184} GHOST_XrActionBindingInfo;
1186typedef struct GHOST_XrActionProfileInfo {
1187 const char *action_name;
1188 const char *profile_path;
1190 const char **subaction_paths;
1192 const GHOST_XrActionBindingInfo *bindings;
1193} GHOST_XrActionProfileInfo;
1195typedef struct GHOST_XrControllerModelVertex {
1198} GHOST_XrControllerModelVertex;
1200typedef struct GHOST_XrControllerModelComponent {
1207} GHOST_XrControllerModelComponent;
1209typedef struct GHOST_XrControllerModelData {
1211 const GHOST_XrControllerModelVertex *vertices;
1215 const GHOST_XrControllerModelComponent *components;
1216} GHOST_XrControllerModelData;
@ GHOST_kEventWheelAxisVertical
@ GHOST_kEventWheelAxisHorizontal
GHOST_TTrackpadEventSubTypes
@ GHOST_kTrackpadEventSwipe
@ GHOST_kTrackpadEventMagnify
@ GHOST_kTrackpadEventSmartMagnify
@ GHOST_kTrackpadEventUnknown
@ GHOST_kTrackpadEventRotate
@ GHOST_kTrackpadEventScroll
@ GHOST_kWindowStateMinimized
@ GHOST_kWindowStateMaximized
@ GHOST_kWindowStateNormal
@ GHOST_kWindowStateFullScreen
void * GHOST_TUserDataPtr
@ GHOST_kStandardCursorLeftHandle
@ GHOST_kStandardCursorHandClosed
@ GHOST_kStandardCursorHandOpen
@ GHOST_kStandardCursorBottomLeftCorner
@ GHOST_kStandardCursorZoomIn
@ GHOST_kStandardCursorVerticalSplit
@ GHOST_kStandardCursorHelp
@ GHOST_kStandardCursorCopy
@ GHOST_kStandardCursorWait
@ GHOST_kStandardCursorRightHandle
@ GHOST_kStandardCursorHorizontalSplit
@ GHOST_kStandardCursorTopSide
@ GHOST_kStandardCursorStop
@ GHOST_kStandardCursorCrosshair
@ GHOST_kStandardCursorCustom
@ GHOST_kStandardCursorNSEWScroll
@ GHOST_kStandardCursorLeftRight
@ GHOST_kStandardCursorPencil
@ GHOST_kStandardCursorNSScroll
@ GHOST_kStandardCursorCrosshairA
@ GHOST_kStandardCursorUpDown
@ GHOST_kStandardCursorUpArrow
@ GHOST_kStandardCursorHandPoint
@ GHOST_kStandardCursorBottomSide
@ GHOST_kStandardCursorBothHandles
@ GHOST_kStandardCursorInfo
@ GHOST_kStandardCursorTopLeftCorner
@ GHOST_kStandardCursorEyedropper
@ GHOST_kStandardCursorKnife
@ GHOST_kStandardCursorMove
@ GHOST_kStandardCursorCrosshairB
@ GHOST_kStandardCursorBlade
@ GHOST_kStandardCursorSlip
@ GHOST_kStandardCursorBottomRightCorner
@ GHOST_kStandardCursorDownArrow
@ GHOST_kStandardCursorEraser
@ GHOST_kStandardCursorDefault
@ GHOST_kStandardCursorEWScroll
@ GHOST_kStandardCursorRightSide
@ GHOST_kStandardCursorRightArrow
@ GHOST_kStandardCursorTopRightCorner
@ GHOST_kStandardCursorDestroy
@ GHOST_kStandardCursorCrosshairC
@ GHOST_kStandardCursorZoomOut
@ GHOST_kStandardCursorLeftSide
@ GHOST_kStandardCursorText
@ GHOST_kStandardCursorLeftArrow
@ GHOST_NDOF_BUTTON_KBP_F11
@ GHOST_NDOF_BUTTON_TILT_CCW
@ GHOST_NDOF_BUTTON_FRONT
@ GHOST_NDOF_BUTTON_KBP_F7
@ GHOST_NDOF_BUTTON_DOMINANT
@ GHOST_NDOF_BUTTON_SPIN_CW
@ GHOST_NDOF_BUTTON_SPACE
@ GHOST_NDOF_BUTTON_DELETE
@ GHOST_NDOF_BUTTON_NP_F2
@ GHOST_NDOF_BUTTON_RIGHT
@ GHOST_NDOF_BUTTON_INVALID
@ GHOST_NDOF_BUTTON_KBP_F9
@ GHOST_NDOF_BUTTON_MINUS
@ GHOST_NDOF_BUTTON_SAVE_V1
@ GHOST_NDOF_BUTTON_PANZOOM
@ GHOST_NDOF_BUTTON_ROLL_CW
@ GHOST_NDOF_BUTTON_KBP_F1
@ GHOST_NDOF_BUTTON_ROLL_CCW
@ GHOST_NDOF_BUTTON_KBP_F12
@ GHOST_NDOF_BUTTON_SPIN_CCW
@ GHOST_NDOF_BUTTON_TILT_CW
@ GHOST_NDOF_BUTTON_SAVE_V3
@ GHOST_NDOF_BUTTON_SAVE_V2
@ GHOST_NDOF_BUTTON_KBP_F8
@ GHOST_NDOF_BUTTON_KBP_F5
@ GHOST_NDOF_BUTTON_KBP_F6
@ GHOST_NDOF_BUTTON_NP_F1
@ GHOST_NDOF_BUTTON_KBP_F2
@ GHOST_NDOF_BUTTON_NP_F4
@ GHOST_NDOF_BUTTON_NP_F3
@ GHOST_NDOF_BUTTON_KBP_F3
@ GHOST_NDOF_BUTTON_BOTTOM
@ GHOST_NDOF_BUTTON_ROTATE
@ GHOST_NDOF_BUTTON_KBP_F10
@ GHOST_NDOF_BUTTON_ENTER
@ GHOST_NDOF_BUTTON_KBP_F4
@ GHOST_NDOF_BUTTON_SHIFT
@ GHOST_kEventWindowClose
@ GHOST_kEventDraggingDropDone
@ GHOST_kEventDraggingExited
@ GHOST_kEventNativeResolutionChange
@ GHOST_kEventImeComposition
@ GHOST_kEventDraggingUpdated
@ GHOST_kEventOpenMainFile
@ GHOST_kEventDraggingEntered
@ GHOST_kEventWindowActivate
@ GHOST_kEventWindowUpdateDecor
@ GHOST_kEventWindowUpdate
@ GHOST_kEventWindowDeactivate
@ GHOST_kEventImeCompositionStart
@ GHOST_kEventImeCompositionEnd
@ GHOST_kEventWindowDPIHintChanged
@ GHOST_kEventQuitRequest
static const GHOST_TabletData GHOST_TABLET_DATA_NONE
@ GHOST_kTabletModeEraser
@ GHOST_kTabletModeStylus
@ GHOST_kCapabilityWindowPosition
@ GHOST_kCapabilityClipboardPrimary
@ GHOST_kCapabilityKeyboardHyperKey
@ GHOST_kCapabilityCursorRGBA
@ GHOST_kCapabilityGPUReadFrontBuffer
@ GHOST_kCapabilityCursorWarp
@ GHOST_kCapabilityInputIME
@ GHOST_kCapabilityCursorGenerator
@ GHOST_kCapabilityTrackpadPhysicalDirection
@ GHOST_kCapabilityMultiMonitorPlacement
@ GHOST_kCapabilityClipboardImage
@ GHOST_kCapabilityWindowDecorationStyles
@ GHOST_kCapabilityDesktopSample
@ GHOST_kPartiallyVisible
void * GHOST_TDragnDropDataPtr
void(* GHOST_TimerProcPtr)(struct GHOST_TimerTaskHandle__ *task, uint64_t time)
#define GHOST_DECLARE_HANDLE(name)
@ GHOST_kKeyNumpadAsterisk
const void * GHOST_TEventDataPtr
int GHOST_TEmbedderWindowID
GHOST_TDrawingContextType
@ GHOST_kDrawingContextTypeNone
@ GHOST_kWindowOrderBottom
@ GHOST_kModifierKeyRightControl
@ GHOST_kModifierKeyLeftControl
@ GHOST_kModifierKeyRightHyper
@ GHOST_kModifierKeyRightAlt
@ GHOST_kModifierKeyRightShift
@ GHOST_kModifierKeyLeftAlt
@ GHOST_kModifierKeyLeftShift
@ GHOST_kModifierKeyLeftOS
@ GHOST_kModifierKeyRightOS
@ GHOST_kModifierKeyLeftHyper
@ GHOST_gpuVSyncIsOverridden
void(* GHOST_TBacktraceFn)(void *file_handle)
GHOST_TUserSpecialDirTypes
@ GHOST_kUserSpecialDirDesktop
@ GHOST_kUserSpecialDirMusic
@ GHOST_kUserSpecialDirPictures
@ GHOST_kUserSpecialDirVideos
@ GHOST_kUserSpecialDirDownloads
@ GHOST_kUserSpecialDirCaches
@ GHOST_kUserSpecialDirDocuments
@ GHOST_kDragnDropTypeUnknown
@ GHOST_kDragnDropTypeFilenames
@ GHOST_kDragnDropTypeBitmap
@ GHOST_kDragnDropTypeString
@ GHOST_kButtonMaskButton4
@ GHOST_kButtonMaskButton7
@ GHOST_kButtonMaskButton6
@ GHOST_kButtonMaskButton5
@ GHOST_kButtonMaskMiddle
GHOST_TConsoleWindowState
@ GHOST_kConsoleWindowStateShow
@ GHOST_kConsoleWindowStateHideForNonConsoleLaunch
@ GHOST_kConsoleWindowStateHide
@ GHOST_kConsoleWindowStateToggle
@ GHOST_kTabletWinPointer
GHOST_TWindowDecorationStyleFlags
@ GHOST_kDecorationColoredTitleBar
Read Guarded memory(de)allocation.
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
unsigned long long int uint64_t
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void count_indices(Span< int > indices, MutableSpan< int > counts)
void(* free_fn)(struct GHOST_CursorGenerator *cursor_generator)
GHOST_TUserDataPtr user_data
GHOST_TDrawingContextType context_type
GHOST_GPUDevice preferred_device
GHOST_TDragnDropTypes dataType
GHOST_TDragnDropDataPtr data
GHOST_TTrackpadEventSubTypes subtype
GHOST_TEventWheelAxis axis
float colored_titlebar_bg_color[3]