RELEASE NOTES

Version 1.0.0
=============
- This initial version of the Android Game SDK features the Android Frame Pacing library.
- Features
 - Display buffer synchronization.
 - Auto refresh rate mode and pipelining support.
 - Collection of frame rendering statistics.
 - Graceful selection of behavior at runtime, depending on the presence of the Android, OpenGL,
   and Vulkan features needed by Swappy.
 - Static and dynamic linking of the library.
 - Support for devices with multiple refresh rates.

For more information, see https://developer.android.com/games/sdk/.

Version 1.0.1
=============
- This is primarily a bug fix release.
- Bugs fixed
 - Clean up resources at exit in Swappy Vulkan on the SwappyFallback code path.
 - SwappyVk_destroySwapchain now doesn't destroy device resources if there is more than one
   swapchain.
 - The Swappy version is now printed in logcat.
 - Fixes to crashing and deadlocking in Swappy_destroy for API<=24
- New features
 - Support for custom thread managers (Swappy_setThreadFunctions)
 - Support for hooking of Vulkan functions (SwappyVk_setFunctionProvider)

Version 1.0.2
=============
This release includes bug fixes and changes in the behaviour of auto-mode.
- Bug fixes for swappy destruction and re-initialization.
- Pipelining is now *on* by default. If auto-pipelining is on, Swappy can still decide to switch
  it off when the workload is very low.
- When auto-mode is enabled, Swappy will decide to switch swap interval only after 15% of frames
  within a 2 second window are either faster or slower than expected.
  Note that Swappy will never swap slower than the user-specified swap interval.

Version 1.1.0
=============
- This version features the Android Performance Tuner (AKA Tuning Fork)  metric reporting and
  quality tuning library.
- Features of Android Performance Tuner
 - Integration with the Android Frame Pacing Library to automatically record frame times and other
   rendering metrics.
 - Frame timing information is recorded in histograms and uploaded periodically.
 - Annotation of timing data with the current game state.
 - Device characteristics, annotations and quality settings are uploaded with the timing data to
   allow cross-sectional analysis.
 - Special treatment of annotations that signify level-loading time. Frame tick data is not recorded
   during loading, but the duration of each loading period is.
 - Ability to record custom timing information (startTrace/endTrace).
 - In expert mode, quality settings are remotely setable using the Play console.
- A Unity plugin incorporating the Tuning Fork library is available separately.
- Known Issues:
 - Incorrect frame pacing on Android 11 w/ multiple refresh rates. Fixed in version 1.2.0


Version 1.2.0
=============
This release includes several bug fixes for Swappy and new features for APT.
- Android Frame Pacing (Swappy) v 1.7
 - Auto-mode refresh rate switching support.
   **Note that for support of multiple refresh rates in Android 11, whether using auto-mode or not,
   SwappyGL_setWindow or SwappyVk_setWindow should be called.**
 - Auto-mode bug fixes.
 - Vulkan bug fixes.
-Android Performance Tuner (Tuning Fork) v 1.1
 - Loading time 
   - New functions: TuningFork_recordLoadingTime, TuningFork_startRecordingLoadingTime,
     TuningFork_stopRecordingLoadingTime should be called to record annotated loading time events.
     Time from app startup to TuningFork_init and the first tick recorded by TuningFork are
     automatically recorded.
   - The previous method of setting a loading time annotation will no longer work.
 - Memory metrics. More memory metrics are now recorded when TuningFork_enableMemoryRecording(true)
   is called.
 - Lifecycle events. TuningFork_reportLifecycleEvent should be called upon the appropriate Java
   onCreate, etc. being called. This enables detailed crash reporting from within Tuning Fork.
 - Memory model change: the maximum number of metrics of each type is now specified at start-up,
   rather than allocating space for all possible annotation combinations.
   See TuningFork_MetricLimits in tuningfork.h.

For more information, see https://developer.android.com/games/sdk/.
