135 lines
No EOL
5.5 KiB
Text
135 lines
No EOL
5.5 KiB
Text
## v0.00.004 - Custom logging, more concurrency & bugfixing
|
|
|
|
Concurrency:
|
|
- Refactored spinlock out of OS api (deprecated old procs)
|
|
- Concurrency utilites:
|
|
void spinlock_init(Spinlock *l);
|
|
void spinlock_acquire_or_wait(Spinlock* l);
|
|
bool spinlock_acquire_or_wait_timeout(Spinlock* l, f64 timeout_seconds);
|
|
void spinlock_release(Spinlock* l);
|
|
void mutex_init(Mutex *m);
|
|
void mutex_destroy(Mutex *m);
|
|
void mutex_acquire_or_wait(Mutex *m);
|
|
void mutex_release(Mutex *m);
|
|
void binary_semaphore_init(Binary_Semaphore *sem, bool initial_state);
|
|
void binary_semaphore_destroy(Binary_Semaphore *sem);
|
|
void binary_semaphore_wait(Binary_Semaphore *sem);
|
|
void binary_semaphore_signal(Binary_Semaphore *sem);
|
|
Macro MEMORY_BARRIER
|
|
- Concurrency tests
|
|
|
|
Docs:
|
|
- custom_logger.c example to show how one can make a custom logger and have logs displayed in-game
|
|
|
|
Utility:
|
|
- draw_text_and_measure() which is just an overload of draw_text but it also does a measure and returns it
|
|
|
|
Misc:
|
|
- Added u64 thread_id to global context. This is set in main() for main thread and in thread startup when you dispatch a Thread
|
|
- Fixed a bug where plain rects would be drawn with the incorrect color
|
|
- Fixed a bug where quads from earlier frames would be drawn
|
|
|
|
## v0.00.003 - Fixes
|
|
|
|
Random:
|
|
- get_random_float64()
|
|
- get_random_float32_in_range()
|
|
- get_random_float64_in_range()
|
|
- get_random_int_in_range()
|
|
|
|
Third party:
|
|
- Added 3 minimal libraries for audio decoding
|
|
- dr_mp3.h: MP3 decoding
|
|
- dr_wav.h: WAV decoding
|
|
- stb_vorbis.c: OGG decoding
|
|
- Made a global thread_local "third_party_allocator" which is set when third party libraries are used so all memory still goes through our *program_memory
|
|
- Stripped all third party libraries of external dependencies (C headers) & noise
|
|
|
|
Memory:
|
|
- Improved assert messages to be more clear about what might be happening if they fail
|
|
- Added more checks in debug to detect heap corruption and what not
|
|
- Fixed a bug where the program would crash because a heap block was perfectly full
|
|
|
|
Misc:
|
|
- Fixed typos in examples/text_rendering.c
|
|
- Fixed Y placement of window when changing the window rect
|
|
- Fixed window sizing when setting scaled_width or scaled_height
|
|
- Updated readme
|
|
- Portable DEPRECATED macro
|
|
- Deprecate os_compare_and_swap and replace with more portable compare_and_swap
|
|
- Fixed a bug where the wrong image would be drawn
|
|
|
|
|
|
|
|
## v0.00.003 - Fixes
|
|
|
|
Random:
|
|
- get_random_float64()
|
|
- get_random_float32_in_range()
|
|
- get_random_float64_in_range()
|
|
- get_random_int_in_range()
|
|
|
|
Third party:
|
|
- Added 3 minimal libraries for audio decoding
|
|
- dr_mp3.h: MP3 decoding
|
|
- dr_wav.h: WAV decoding
|
|
- stb_vorbis.c: OGG decoding
|
|
- Made a global thread_local "third_party_allocator" which is set when third party libraries are used so all memory still goes through our *program_memory
|
|
- Stripped all third party libraries of external dependencies (C headers) & noise
|
|
|
|
Memory:
|
|
- Improved assert messages to be more clear about what might be happening if they fail
|
|
- Added more checks in debug to detect heap corruption and what not
|
|
- Fixed a bug where the program would crash because a heap block was perfectly full
|
|
|
|
Misc:
|
|
- Fixed typos in examples/text_rendering.c
|
|
- Fixed Y placement of window when changing the window rect
|
|
- Fixed window sizing when setting scaled_width or scaled_height
|
|
- Updated readme
|
|
- Portable DEPRECATED macro
|
|
- Deprecate os_compare_and_swap and replace with more portable compare_and_swap
|
|
- Fixed a bug where the wrong image would be drawn
|
|
|
|
|
|
|
|
## v0.00.002 - Text rendering, image manipulation, hash tables
|
|
|
|
Renderer:
|
|
- Pass 8-bit integers "type" and "sampler_index" to shader
|
|
- Sample texture differently depending on "type" (text or regular quad)
|
|
- Sample with nearest/linear min/mag depending on sampler_index
|
|
- Set min/mag filtering in Draw_Quad
|
|
- Images are now created and deleted directly with gfx calls rather than deferring it for gfx_update.
|
|
- We can now set image sub data with gfx_set_image_data()
|
|
- Images are no longer hard coded to 4 channels
|
|
|
|
Text/Fonts:
|
|
- Added font loading with lazy initialization/rasterization when it's needed
|
|
- Load & rasterize any fonts with load_font_from_disk()
|
|
- Fonts automatically rasterize glyphs into atlases and generate metrics on the fly
|
|
- Measure text for very_useful metrics with measure_text()
|
|
- Walk over glyphs and their metrics with walk_glyphs()
|
|
- Implemented simple but powerful text rendering
|
|
- Draw text with draw_text() or draw_text_xform()
|
|
- See oogabooga/examples/text_rendering.c for more
|
|
|
|
Other:
|
|
- Added 3 simple hash functions:
|
|
- 64-bit xx_hash(): Very fast hash for 64-bit values
|
|
- 64-bit city_hash(): Very fast hash for short strings
|
|
- 64-bit djb2_hash(): Fast hash for strings longer than 32 bytes
|
|
- Made a generic get_hash() macro to detect the type you are trying to hash and call the approriate procedure
|
|
- Introduced a simple (kinda slow) hash table with following procedures:
|
|
- hash_table_add
|
|
- hash_table_find
|
|
- hash_table_contains
|
|
- hash_table_set
|
|
See hash_table.c for more information.
|
|
- Utf8 utility:
|
|
- utf8_to_utf32(): convert utf8 bytes to a single u32 codepoint
|
|
- next_utf8(): Convert first utf8 character in a string to a u32 codepoint and advance the passed string to the next unicode
|
|
- Renamed m4_multiply -> m4_mul for consistency
|
|
- Refactored os window to be DPI aware
|
|
- Window now has scaled_width, scaled_height which is the DPI-scaled size. Previous window.width & window.height are now aliased as window.pixel_height and window.pixel_width for clarity
|
|
- in minimal example, renamed hammer_xform -> rect_xform |