ludus::platform¶
Ludus Wiki · API overview · Browse API
Namespace
Declared in modules/platform/include/ludus/platform/base/window.h
Related declarations¶
- ludus::platform::FramePacer
- ludus::platform::HostedAdapterIdentity
- ludus::platform::HostedImageHandle
- ludus::platform::HostedImageRelease
- ludus::platform::HostedSurfaceChannel
- ludus::platform::HostedSurfaceEvent
- ludus::platform::HostedSurfaceImages
- ludus::platform::HostedWindowEndpoint
- ludus::platform::KeyboardSink
- ludus::platform::NativeWindowInfo
- ludus::platform::PaceResult
- ludus::platform::PacingClock
- ludus::platform::PacingPolicy
- ludus::platform::WindowBase
- ludus::platform::WindowManager
- ludus::platform::browser
- ludus::platform::headless
- ludus::platform::wayland
Enumerations¶
WindowVisibility¶
enum class WindowVisibility : ludus::foundation::uint8
Related types: ludus::foundation::uint8
Visible¶
Visible
Occluded¶
Occluded
Minimized¶
Minimized
Declared in modules/platform/include/ludus/platform/base/window.h
PacingWaitStatus¶
enum class PacingWaitStatus : foundation::uint8
Related types: foundation::uint8
Completed¶
Completed
Interrupted¶
Interrupted
Unsupported¶
Unsupported
Failed¶
Failed
Declared in modules/platform/include/ludus/platform/frame_pacing.h
PacingStatus¶
enum class PacingStatus : foundation::uint8
Related types: foundation::uint8
Ok¶
Ok
InvalidConfiguration¶
InvalidConfiguration
Declared in modules/platform/include/ludus/platform/frame_pacing.h
PaceOutcome¶
enum class PaceOutcome : foundation::uint8
Related types: foundation::uint8
Disabled¶
Disabled
InvalidClock¶
InvalidClock
Baseline¶
Baseline
Waited¶
Waited
Late¶
Late
Rescheduled¶
Rescheduled
WaitFailed¶
WaitFailed
WaitLimit¶
WaitLimit
ClockRegression¶
ClockRegression
Overflow¶
Overflow
Declared in modules/platform/include/ludus/platform/frame_pacing.h
HostedImageFormat¶
enum class HostedImageFormat : foundation::uint8
Related types: foundation::uint8
Unknown¶
Unknown = 0
Rgba8Unorm¶
Rgba8Unorm = 1
Declared in modules/platform/include/ludus/platform/hosted_surface.h
HostedHandleKind¶
enum class HostedHandleKind : foundation::uint8
Related types: foundation::uint8
None¶
None = 0
MachPort¶
MachPort = 1
IOSurfaceCreateMachPort. OpaqueFileDescriptor¶
OpaqueFileDescriptor = 2
vkGetMemoryFdKHR (VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT). Declared in modules/platform/include/ludus/platform/hosted_surface.h
HostedSurfaceEventKind¶
enum class HostedSurfaceEventKind : foundation::uint8
Related types: foundation::uint8
Images¶
Images
Present¶
Present
Declared in modules/platform/include/ludus/platform/hosted_surface.h
HostedSurfaceStatus¶
enum class HostedSurfaceStatus : foundation::uint8
Related types: foundation::uint8
Ok¶
Ok
Busy¶
Busy
Disconnected¶
Disconnected
InvalidArgument¶
InvalidArgument
Unavailable¶
Unavailable
Declared in modules/platform/include/ludus/platform/hosted_surface.h
HostedRefusal¶
enum class HostedRefusal : foundation::uint8
Related types: foundation::uint8
None¶
None
WrongUser¶
WrongUser
BadToken¶
BadToken
IncompatibleVersion¶
IncompatibleVersion
MalformedHello¶
MalformedHello
HandshakeTimeout¶
HandshakeTimeout
Declared in modules/platform/include/ludus/platform/hosted_window.h
HostedConnectionState¶
enum class HostedConnectionState : foundation::uint8
Related types: foundation::uint8
Stopped¶
Stopped
Listening¶
Listening
Connected¶
Connected
Disconnected¶
Disconnected
Declared in modules/platform/include/ludus/platform/hosted_window.h
HostedEndpointStatus¶
enum class HostedEndpointStatus : foundation::uint8
Related types: foundation::uint8
Ok¶
Ok
NotConnected¶
NotConnected
Overflow¶
Overflow
InvalidArgument¶
InvalidArgument
InvalidState¶
InvalidState
Unavailable¶
Unavailable
OutOfMemory¶
OutOfMemory
Declared in modules/platform/include/ludus/platform/hosted_window.h
WindowSystem¶
enum class WindowSystem : ludus::foundation::uint8
Related types: ludus::foundation::uint8
Headless¶
Headless
Wayland¶
Wayland
WebCanvas¶
WebCanvas
Cocoa¶
Cocoa
Hosted¶
Hosted
Win32¶
Win32
Declared in modules/platform/include/ludus/platform/native_window.h
Aliases¶
Window¶
using ludus::platform::Window = WindowBase
Related types: WindowBase
Declared in modules/platform/include/ludus/platform/base/window.h
Constants and variables¶
MAXIMUM_PACING_INTERVAL_NANOSECONDS¶
constexpr foundation::uint64 ludus::platform::MAXIMUM_PACING_INTERVAL_NANOSECONDS = foundation::time::NANOSECONDS_PER_SECOND
Related types: foundation::uint64
Declared in modules/platform/include/ludus/platform/frame_pacing.h
MAXIMUM_PACING_WAIT_ATTEMPTS¶
constexpr foundation::uint32 ludus::platform::MAXIMUM_PACING_WAIT_ATTEMPTS = 8
Related types: foundation::uint32
Declared in modules/platform/include/ludus/platform/frame_pacing.h
HOSTED_SURFACE_IMAGE_COUNT¶
constexpr foundation::usize ludus::platform::HOSTED_SURFACE_IMAGE_COUNT = 3
Related types: foundation::usize
Declared in modules/platform/include/ludus/platform/hosted_surface.h
HOSTED_ADAPTER_UUID_BYTES¶
constexpr foundation::usize ludus::platform::HOSTED_ADAPTER_UUID_BYTES = 16
deviceUUID or driverUUID (VK_UUID_SIZE). Related types: foundation::usize
Declared in modules/platform/include/ludus/platform/hosted_surface.h
HOSTED_WINDOW_ENVIRONMENT_VARIABLE¶
constexpr char ludus::platform::HOSTED_WINDOW_ENVIRONMENT_VARIABLE[][] = "LUDUS_HOSTED_WINDOW"
std::string_view and C environment APIs. Declared in modules/platform/include/ludus/platform/hosted_window.h
LOG_PLATFORM¶
constexpr ludus::foundation::logging::LogCategory ludus::platform::LOG_PLATFORM {"Platform"}
Related types: ludus::foundation::logging::LogCategory
Declared in modules/platform/include/ludus/platform/log_categories.h
Functions¶
TryFillSystemEntropy¶
bool ludus::platform::TryFillSystemEntropy(foundation::uint8 *outBytes, foundation::usize size) noexcept
getentropy(3) in requests of at most 256 bytes, its per-call limit. Windows uses the system-preferred CNG generator with the same request bound. Browser builds call Web Crypto crypto.getRandomValues (the global Web Crypto object under Node) in requests of the same size; a missing or throwing Web Crypto object reports failure instead of raising a JavaScript exception. Other targets have no adapter yet and fail every nonempty request. There is never a fallback to wall time, addresses, rand or a pseudo-random generator.| Parameter | Description |
|---|---|
outBytes |
Destination for
size bytes; must be nonnull (null reports failure). |
size |
Number of bytes to write; zero succeeds without an operating-system call.
|
Returns
size bytes were written; false when entropy is unavailable. On failure the destination contents are unspecified and must not be used. Related types: foundation::uint8 · foundation::usize
Declared in modules/platform/include/ludus/platform/entropy.h
GetSystemEntropySource¶
foundation::identity::EntropySource ludus::platform::GetSystemEntropySource() noexcept
UuidStatus::EntropyUnavailable with its output unchanged. Returns
FillBytesOrNull is never null. Related types: foundation::identity::EntropySource
Declared in modules/platform/include/ludus/platform/entropy.h
GetSystemPacingClock¶
PacingClock ludus::platform::GetSystemPacingClock() noexcept
kevent64(2) timer marked NOTE_CRITICAL, which opts out of the kernel's timer-coalescing leeway (up to 1 ms for a windowed application and several milliseconds for a background process on the measured host); if the thread's queue cannot be created it falls back to nanosleep(2). Linux sleeps with nanosleep(2). Windows uses a one-shot relative waitable timer, preferring high resolution and falling back to regular resolution. A wake can still be late by scheduler latency, and on Linux by timer slack. A signal returns Interrupted. Browser builds return a clock whose wait always reports Unsupported: browsers pace with presentation callbacks and must never block or busy-wait. Other targets have no adapter and also report Unsupported.Note
Returns
Related types: PacingClock
Declared in modules/platform/include/ludus/platform/frame_pacing.h
MapCocoaKeyCode¶
input::Key ludus::platform::MapCocoaKeyCode(foundation::uint32 keyCode) noexcept
NSEvent.keyCode, the kVK_* constants of HIToolbox/Events.h), not characters, and are layout-independent. Qt reports this code as QKeyEvent::nativeVirtualKey() on macOS.| Parameter | Description |
|---|---|
keyCode |
Native virtual key code.
|
Returns
Related types: foundation::uint32 · input::Key
Declared in modules/platform/include/ludus/platform/native_keymap.h
MapEvdevKeyCode¶
input::Key ludus::platform::MapEvdevKeyCode(foundation::uint32 code) noexcept
wl_keyboard.key and wl_keyboard.enter normalization. The code uses <linux/input-event-codes.h> numbering. An XKB keycode is the evdev code plus 8: Qt's QKeyEvent::nativeScanCode() on xcb and Wayland is an XKB keycode, so subtract 8 before calling. No keysym or layout lookup is performed.| Parameter | Description |
|---|---|
code |
Native evdev key code.
|
Returns
Related types: foundation::uint32 · input::Key
Declared in modules/platform/include/ludus/platform/native_keymap.h