Releases: f1nalspace/final_game_tech
0.9.9-beta
v0.9.9-beta
Overview
- Improved and extended system/platform detection macros
- Improved audio format detection
- Improved stability for input polling
- Reworked API documentations
- Refactored audio system to use dispatch tables
- Support for multiple audio channels with channel layouts and channel mapping
- Removed several obsolete functions
- Renamed several types and functions
- Bugfixes in audio format probing
- Bugfixes for ARM/GCC compilations
- Bugfixes for X86 compilations
- Bugfixes for vulkan backend
Breaking Changes
- struct fplAudioDeviceFormat replaced by fplAudioFormat
- struct fplAudioTargetFormat replaced by fplAudioFormat
- struct fplVersionInfo has no anonymous structs/unions anymore
- function fplCPUID() -> Changed argument order and changed return type from void to bool
- function GetAvailableThreadCount() renamed to fplGetAvailableThreadCount()
- function GetUsedThreadCount() renamed to fplGetUsedThreadCount()
- function fplGetAudioDevices() added stride argument
- type audio channel count is now U16 instead of U32
- type audio period count is now U16 instead of U32
- enum value fplPlatformResultType_FailedMemory renamed to fplPlatformResultType_OutOfMemory
- All argument-less functions -> Added nameless void argument
Details
-
New: Added typedef fplAudioFormatU64 that encodes a audio format (sample rate, channels, type) as 64-bit
-
New: Added enum fplAudioChannelLayout that stores the supported channel layouts
-
New: Added enum fplAudioChannelType that stores the geometry of a audio channel as flags
-
New: Added enum fplAudioMode that stores the exlusive/shared mode and the latency modes
-
New: Added enum fplAudioShareMode that stores the supported sharing modes
-
New: Added enum fplAudioLatencyType that stores the supported latency types
-
New: Added enum fplCPUCapabilitiesType that stores the CPU capabilieis type
-
New: Added enum fplX86InstructionSetLevel that defines the X86 instruction set level, that is detected at compile time.
-
New: Added struct fplAudioChannelMap that stores an array of the audio channel configuration
-
New: Added struct fplAudioDeviceInfoExtended that stores the @ref fplAudioDeviceInfo and the supported formats as U64
-
New: Added struct fplX86CPUCapabilities that stores the features for a X86 based CPU
-
New: Added struct fplARMCPUCapabilities that stores the features for a ARM based CPU
-
New: Added enum value @ref fplAudioDefaultFields_ChannelLayout to fplAudioDefaultFields
-
New: Added several enum values to @ref fplAudioResultType to indicate audio issues better
-
New: Added define FPL_X86_CPU_INSTR_SET_LEVEL
-
New: Added function fplAudioInit() that manually loads the audio system
-
New: Added function fplAudioRelease() that manually unloads/releases the audio system
-
New: Added function fplGetAudioDeviceInfo() that returns a @ref fplAudioDeviceInfoExtended from a device id
-
New: Added function fplGetAudioLatencyType() that returns a @ref fplAudioLatencyType from a @ref fplAudioMode
-
New: Added function fplGetAudioShareMode() that returns a @ref fplAudioShareMode from a @ref fplAudioMode
-
New: Added function fplCreateAudioMode() that returns a @ref fplAudioMode from a @ref fplAudioLatencyType and @ref fplAudioShareMode
-
New: Added function fplGetAudioChannelsFromLayout() that returns the number of channels from a @ref fplAudioChannelLayout
-
New: Added function fplGetDefaultAudioChannelLayoutFromChannels() that returns default @ref fplAudioChannelLayout from the number of audio channels
-
New: Added function fplEncodeAudioFormatU64() that encodes a sample rate, number of channels and type into a 64-bit
-
New: Added function fplDecodeAudioFormatU64() that decodes a 64-bit value into a sample rate, number of channels and type
-
New: Added function fplGetAudioDeviceInfo() that returns a @ref fplAudioDeviceInfoExtended from a @ref fplAudioDeviceID
-
New: Added function fplGetAudioChannelMap() that returns the @ref fplAudioChannelMap for the active audio backend
-
New: Added function fplGetCPUCapabilitiesTypeName() that returns the name of a @ref fplCPUCapabilitiesType
-
New: Added function fplGetTargetAudioFrameCount() that computes the target audio frames for an input/out sample rate from number of input frames
-
New: Added field manualLoad to @ref fplAudioSettings that controls the initialization behavior of the audio system
-
Fixed: fplCreateColorRGBA() was not compiling on GCC due to inlining failing
-
Fixed: fplCreateVideoRectFromLTRB() was not compiling on GCC due to inlining failing
-
Fixed: fpl__VideoBackend_Vulkan_PrepareWindow() was crashing due to invalid free of memory
-
Fixed: [Win32] fpl__Win32Guid was not properly defined when opaque API was enabled
-
Fixed: [Win32] fplSetWindowState() was not implementing fplWindowState_Fullscreen
-
Fixed: Compile errors for vulkan KHR missing cast to void pointer
-
Fixed: Renamed GetAvailableThreadCount() to fplGetAvailableThreadCount()
-
Fixed: Renamed GetUsedThreadCount() to fplGetUsedThreadCount()
-
Changed: Added stride argument to to fplGetAudioDevices()
-
Changed: Renamed field userData to clientUserData in @ref fplAudioSettings
-
Changed: Renamed fplAudioDeviceFormat to fplAudioFormat
-
Changed: Renamed function fplClearErrors to fplErrorsClear
-
Changed: Renamed enum value fplPlatformResultType_FailedMemory to fplPlatformResultType_OutOfMemory
-
Changed: Replaced audio exclusive flag and latency mode with a single enum @ref fplAudioMode in @ref fplAudioFormat
-
Changed: fplCPUCapabilities is now separated by x86 and arm features
-
Changed: All FPL public and internal functions without arguments has now a (void) as argument
-
Changed: fplVersionInfo has no anonymous structs/unions anymore
-
Changed: fplColor32 has no anonymous structs/unions anymore
-
Changed: fplCPUID argument order swapped and return type is now bool instead
-
Changed: All argument-less functions have now a nameless void argument
-
Changed: Audio channel count type is now U16 instead of U32
-
Changed: Audio period count type is now U16 instead of U32
-
Removed: Removed obsolete function fplFileSetTimestamps
-
Removed: Removed obsolete struct fplAudioTargetFormat
-
Removed: Removed obsolete function fplSetDefaultAudioTargetFormat
-
Removed: Removed obsolete function fplConvertAudioTargetFormatToDeviceFormat
-
Removed: Removed backend field from fplAudioFormat former fplAudioDeviceFormat
-
Improved: C/C++ detection improved
-
Improved: Architecture detection extended (Apple, Risc-V, Mips, Sparc)
-
Improved: CPU bits detection improved
-
Improved: x86 instruction set level detection improved
-
Improved: Fixed lots of incorrect struct alignments
-
New[#36]: Support for multiple audio channels + channel layouts + channel mapping
-
Fixed[#156]: Target audio format type and periods was never used
-
Fixed[#157]: Compile error for missing _countof() fplArrayCount in some scenarios
-
Fixed[#164]: Changed default controllerDetectionFrequency from 100 ms to 1000 ms
-
Fixed[#160/#158]: Building with G++ or Clang was not working anymore
-
Fixed[#169]: Only audio initialization may create a window/console, which is incorrect
-
Fixed[#172]: POSIX main thread was never initialized, so get fplGetMainThread() was returning zero values
-
Improved[#161]: Compiler detected improved & extended (MingW, Apple, Borland, TCC, DMC, CSMC, Linaro)
-
Improved[#149]: Refactoring of audio backends to dispatch tables
-
Improved[#163]: Make endianess detection more robust
-
Improved[#167]: Use improved doxygen commands such as at struct, at enum, etc.
###All commits
releases/v0.9.8-beta...0.9.9-beta
0.9.7-beta
- Vulkan Support
- Cleanup & Refactoring