]> git.nega.tv - josh/narcissus/log
josh/narcissus
18 months agonarcissus-core: Add FourCC wrapper
Josh Simmons [Mon, 13 May 2024 21:28:29 +0000 (23:28 +0200)]
narcissus-core: Add FourCC wrapper

18 months agonarcissus-core: Use derive for flags impls
Josh Simmons [Mon, 13 May 2024 21:27:20 +0000 (23:27 +0200)]
narcissus-core: Use derive for flags impls

18 months agoshark: Use match for key bindings
Josh Simmons [Mon, 13 May 2024 21:25:55 +0000 (23:25 +0200)]
shark: Use match for key bindings

18 months agonarcissus-gpu: Add ImageFormat::BGRA16_FLOAT
Josh Simmons [Sun, 12 May 2024 11:48:34 +0000 (13:48 +0200)]
narcissus-gpu: Add ImageFormat::BGRA16_FLOAT

18 months agonarcissus-gpu: Add 10-bit packed color formats
Josh Simmons [Sun, 12 May 2024 10:47:41 +0000 (12:47 +0200)]
narcissus-gpu: Add 10-bit packed color formats

18 months agonarcissus-gpu: Add support for mutable swapchain images
Josh Simmons [Sun, 12 May 2024 10:09:28 +0000 (12:09 +0200)]
narcissus-gpu: Add support for mutable swapchain images

18 months agovulkan-sys: Add VkImageFormatListCreateInfo
Josh Simmons [Sun, 12 May 2024 09:57:09 +0000 (11:57 +0200)]
vulkan-sys: Add VkImageFormatListCreateInfo

18 months agonarcissus-gpu: Re-enable validation layers by default
Josh Simmons [Sat, 11 May 2024 18:41:50 +0000 (20:41 +0200)]
narcissus-gpu: Re-enable validation layers by default

18 months agovulkan-sys: Add `vkEnumerateInstanceLayerProperties`
Josh Simmons [Sat, 11 May 2024 18:38:00 +0000 (20:38 +0200)]
vulkan-sys: Add `vkEnumerateInstanceLayerProperties`

18 months agoshark: Rename Text shader to Ui
Josh Simmons [Sat, 11 May 2024 11:13:26 +0000 (13:13 +0200)]
shark: Rename Text shader to Ui

18 months agoshark: Re-arrange main loop
Josh Simmons [Sat, 11 May 2024 10:21:05 +0000 (12:21 +0200)]
shark: Re-arrange main loop

18 months agoshark: Disable Wayland when RenderDoc is detected
Josh Simmons [Sat, 11 May 2024 10:15:17 +0000 (12:15 +0200)]
shark: Disable Wayland when RenderDoc is detected

18 months agonarcissus-gpu: Assert when emitting barrier in render pass
Josh Simmons [Sat, 11 May 2024 10:06:54 +0000 (12:06 +0200)]
narcissus-gpu: Assert when emitting barrier in render pass

Any use of `vkCmdPipelineBarrier` between `vkBeginRendering` and
`vkEndRendering` will be ignored, so assert for that case.

Avoid stuttering by using `cmd_encoder` to refer to the narcissus side
implementation of command buffers.

18 months agonarcissus-gpu: Add `Default` impl for `BufferImageCopy`
Josh Simmons [Sat, 11 May 2024 10:05:51 +0000 (12:05 +0200)]
narcissus-gpu: Add `Default` impl for `BufferImageCopy`

18 months agonarcissus-gpu: Expose `is_null` for `Handle` newtypes
Josh Simmons [Sat, 11 May 2024 10:03:46 +0000 (12:03 +0200)]
narcissus-gpu: Expose `is_null` for `Handle` newtypes

18 months agoshark: Move spring helper into own module
Josh Simmons [Sat, 11 May 2024 10:00:47 +0000 (12:00 +0200)]
shark: Move spring helper into own module

18 months agoshark: Add HIDPI support
Josh Simmons [Thu, 9 May 2024 09:00:12 +0000 (11:00 +0200)]
shark: Add HIDPI support

18 months agonarcissus-app: Add HIDPI support
Josh Simmons [Thu, 9 May 2024 08:59:13 +0000 (10:59 +0200)]
narcissus-app: Add HIDPI support

18 months agosdl2-sys: Add HIDPI related APIs
Josh Simmons [Thu, 9 May 2024 08:50:01 +0000 (10:50 +0200)]
sdl2-sys: Add HIDPI related APIs

18 months agomisc: Bump gmp-mpfs-sys dependency
Josh Simmons [Wed, 8 May 2024 19:26:55 +0000 (21:26 +0200)]
misc: Bump gmp-mpfs-sys dependency

18 months agoshark: Change chunk layout
Joshua Simmons [Tue, 7 May 2024 19:57:57 +0000 (21:57 +0200)]
shark: Change chunk layout

18 months agonarcissus-core: Add extra integer widths to `BitIter`
Joshua Simmons [Tue, 7 May 2024 07:12:55 +0000 (09:12 +0200)]
narcissus-core: Add extra integer widths to `BitIter`

18 months agomisc: Remove accidentally added profiler output
Joshua Simmons [Mon, 6 May 2024 16:42:39 +0000 (18:42 +0200)]
misc: Remove accidentally added profiler output

18 months agonarcissus-maths: Sprinkle force inline
Joshua Simmons [Mon, 6 May 2024 16:40:04 +0000 (18:40 +0200)]
narcissus-maths: Sprinkle force inline

Help to salvage debug mode performance. Add `#[must_use]` too.

19 months agoshark: Shoot fast and break things
Joshua Simmons [Sun, 5 May 2024 20:45:37 +0000 (22:45 +0200)]
shark: Shoot fast and break things

19 months agonarcissus-maths: Add error count assert for `exp_f32` test
Joshua Simmons [Sun, 5 May 2024 16:14:00 +0000 (18:14 +0200)]
narcissus-maths: Add error count assert for `exp_f32` test

19 months agomisc: Fix clippy lints
Joshua Simmons [Sun, 5 May 2024 14:47:44 +0000 (16:47 +0200)]
misc: Fix clippy lints

19 months agonarcissus-core: Add Default impl for fixed_vec
Joshua Simmons [Sun, 5 May 2024 14:43:52 +0000 (16:43 +0200)]
narcissus-core: Add Default impl for fixed_vec

19 months agoshark: Add guns which shoot projectile sharks
Joshua Simmons [Sun, 5 May 2024 14:21:22 +0000 (16:21 +0200)]
shark: Add guns which shoot projectile sharks

19 months agonarcissus-core: Add user-defined type to `flags_def` macro
Joshua Simmons [Sun, 5 May 2024 14:20:25 +0000 (16:20 +0200)]
narcissus-core: Add user-defined type to `flags_def` macro

19 months agonarcissus-maths: Add `exp_f32` implementation
Joshua Simmons [Sun, 5 May 2024 14:16:18 +0000 (16:16 +0200)]
narcissus-maths: Add `exp_f32` implementation

Based on Norbert Juffa's implemention for CUDA from
https://forums.developer.nvidia.com/t/a-more-accurate-performance-competitive-implementation-of-expf/47528

19 months agonarcissus-maths: Use `f32_to_i32` for `sin_cos_pi` and `tan_pi`
Joshua Simmons [Sun, 5 May 2024 14:14:11 +0000 (16:14 +0200)]
narcissus-maths: Use `f32_to_i32` for `sin_cos_pi` and `tan_pi`

19 months agonarcissus-maths: Add safe f32 to i32 conversions
Joshua Simmons [Sun, 5 May 2024 14:10:45 +0000 (16:10 +0200)]
narcissus-maths: Add safe f32 to i32 conversions

Rather than relying on `to_int_unsafe` which isn't valid for values that
overflow `i32`, implement an intrinsics based solution which merely
returns an implementation defined value for those cases.

19 months agonarcissus-maths: Add additional rng functions
Joshua Simmons [Sun, 5 May 2024 14:07:04 +0000 (16:07 +0200)]
narcissus-maths: Add additional rng functions

Add `next_[f32,f64]_s`, returning uniformly distibuted floats in the
range `-1.0..1.0`.
Add `next_uniform_unit_disc_f32`, generating a uniformly distributed
point on the unit disc.
Add `next_uniform_unit_circle_f32`, generating a uniformly distributed
point on the unit circle.

19 months agoshark: Adjust camera shake
Joshua Simmons [Fri, 3 May 2024 19:28:04 +0000 (21:28 +0200)]
shark: Adjust camera shake

19 months agonarcissus-maths: Remove custom `round_ties_even`
Joshua Simmons [Fri, 3 May 2024 06:37:54 +0000 (08:37 +0200)]
narcissus-maths: Remove custom `round_ties_even`

Stable from Rust 1.77.0

19 months agonarcissus-maths: Small cleanup of perlin noise
Joshua Simmons [Fri, 3 May 2024 06:35:18 +0000 (08:35 +0200)]
narcissus-maths: Small cleanup of perlin noise

19 months agonarcissus-core: Fix out-of-bounds slice access
Joshua Simmons [Thu, 2 May 2024 20:58:22 +0000 (22:58 +0200)]
narcissus-core: Fix out-of-bounds slice access

19 months agoshark: Add basic camera shake
Joshua Simmons [Thu, 2 May 2024 20:33:57 +0000 (22:33 +0200)]
shark: Add basic camera shake

19 months agonarcissus-maths: Add perlin noise functions
Joshua Simmons [Thu, 2 May 2024 20:32:43 +0000 (22:32 +0200)]
narcissus-maths: Add perlin noise functions

Taken from `stb_perlin.h` by Sean Barrett et al

19 months agoshark: Only write two lines of text
Joshua Simmons [Wed, 1 May 2024 18:54:54 +0000 (20:54 +0200)]
shark: Only write two lines of text

19 months agonarcissus-gpu: Remove accidentally added sleep
Joshua Simmons [Wed, 1 May 2024 18:48:29 +0000 (20:48 +0200)]
narcissus-gpu: Remove accidentally added sleep

When debugging goes too far!

19 months agoshark: Dampen camera movement
Joshua Simmons [Wed, 1 May 2024 16:17:57 +0000 (18:17 +0200)]
shark: Dampen camera movement

19 months agoshark: Fix parameterization of top-down camera
Joshua Simmons [Wed, 1 May 2024 14:55:53 +0000 (16:55 +0200)]
shark: Fix parameterization of top-down camera

Using the camera height and camera angle to define a camera is
unfortunate as those to variables are tightly coupled; Adjusting the
camera height requires a camera angle adjustment to maintain the same
distance from the camera, and visa-versa.

Instead, calculate the height from the desired camera distance so these
variables can be changed independently.

19 months agonarcissus-maths: Add `lerp` for scalars and vectors
Joshua Simmons [Wed, 1 May 2024 14:55:10 +0000 (16:55 +0200)]
narcissus-maths: Add `lerp` for scalars and vectors

19 months agonarcissus-maths: Add `sin_pi_f32` and `cos_pi_f32`
Joshua Simmons [Wed, 1 May 2024 14:53:00 +0000 (16:53 +0200)]
narcissus-maths: Add `sin_pi_f32` and `cos_pi_f32`

Trivial implementation for now.

19 months agoshark: Add drivable shark
Joshua Simmons [Wed, 1 May 2024 08:26:59 +0000 (10:26 +0200)]
shark: Add drivable shark

19 months agosdl2-sys: Add repeat flag to key events
Joshua Simmons [Wed, 1 May 2024 07:29:44 +0000 (09:29 +0200)]
sdl2-sys: Add repeat flag to key events

19 months agoshark: Remove unused import
Joshua Simmons [Mon, 29 Apr 2024 18:13:29 +0000 (20:13 +0200)]
shark: Remove unused import

19 months agoshark-shaders: Remove unnecessary lifetime annotation
Joshua Simmons [Mon, 29 Apr 2024 18:12:52 +0000 (20:12 +0200)]
shark-shaders: Remove unnecessary lifetime annotation

19 months agoshark: Remove buffer test code
Joshua Simmons [Sun, 28 Apr 2024 16:30:41 +0000 (18:30 +0200)]
shark: Remove buffer test code

19 months agoshark-shaders: Use old name for glslang
Joshua Simmons [Sun, 28 Apr 2024 15:24:48 +0000 (17:24 +0200)]
shark-shaders: Use old name for glslang

Ubuntu image used by CI is old and doesn't have the command under the
new name. So just use `glslangValidator` instead.

19 months agogithub: Fix name for glslang package in ubuntu
Joshua Simmons [Sun, 28 Apr 2024 15:18:56 +0000 (17:18 +0200)]
github: Fix name for glslang package in ubuntu

19 months agogithub: Add glslang to github actions image
Joshua Simmons [Sun, 28 Apr 2024 15:16:07 +0000 (17:16 +0200)]
github: Add glslang to github actions image

19 months agoshark: Move shaders into their own crate
Joshua Simmons [Sun, 28 Apr 2024 15:08:27 +0000 (17:08 +0200)]
shark: Move shaders into their own crate

We can build them with cargo and a build script.

19 months agonarcissus: Remove cstr macro
Joshua Simmons [Sun, 28 Apr 2024 06:30:37 +0000 (08:30 +0200)]
narcissus: Remove cstr macro

We've got builtin functionality now!

19 months agonarcissus-gpu: Fix minor sync issues
Joshua Simmons [Sat, 27 Apr 2024 16:55:22 +0000 (18:55 +0200)]
narcissus-gpu: Fix minor sync issues

Resolve incorrect arguments to various presentation related barriers.

19 months agoshark: Remove duplicate image copy
Joshua Simmons [Sat, 27 Apr 2024 14:55:22 +0000 (16:55 +0200)]
shark: Remove duplicate image copy

19 months agonarcissus-gpu: Use VK_EXT_swapchain_maintenance1
Joshua Simmons [Sat, 6 Apr 2024 07:44:59 +0000 (09:44 +0200)]
narcissus-gpu: Use VK_EXT_swapchain_maintenance1

Fixes the broken way we were handling presentation semaphore recycling
as well as swapchain destruction. When VK_EXT_swapchain_maintenance1 is
unavailable, fallback to a fixed frame delay.

Remove the unused delay queue structure.

19 months agovulkan-sys: Add `VK_EXT_[swapchain,surface]_maintenance1`
Joshua Simmons [Fri, 5 Apr 2024 22:42:18 +0000 (00:42 +0200)]
vulkan-sys: Add `VK_EXT_[swapchain,surface]_maintenance1`

19 months agovulkan-sys: Add `VK_KHR_get_surface_capabilities2`
Joshua Simmons [Fri, 5 Apr 2024 22:40:21 +0000 (00:40 +0200)]
vulkan-sys: Add `VK_KHR_get_surface_capabilities2`

19 months agovulkan-sys: Add wrapper for `get_fence_status`
Joshua Simmons [Fri, 5 Apr 2024 22:21:41 +0000 (00:21 +0200)]
vulkan-sys: Add wrapper for `get_fence_status`

19 months agovulkan-sys: Use &CStr directly in wrapper function
Joshua Simmons [Fri, 5 Apr 2024 22:20:21 +0000 (00:20 +0200)]
vulkan-sys: Use &CStr directly in wrapper function

19 months agoshark: Enable RUST_BACKTRACE by default
Joshua Simmons [Fri, 5 Apr 2024 22:18:05 +0000 (00:18 +0200)]
shark: Enable RUST_BACKTRACE by default

In debug builds we always want to enable backtraces if they're not
explicitly disabled by the environment variable.

20 months agonarcissus-core: Improve float random generation
Joshua Simmons [Sun, 31 Mar 2024 03:22:24 +0000 (05:22 +0200)]
narcissus-core: Improve float random generation

Change `next_f32` to output in the range `[0.0,1.0)`.
Add `next_f64`.
Add very basic smoke test.

20 months agonarcissus-core: Fix clippy lint
Joshua Simmons [Sun, 31 Mar 2024 02:56:39 +0000 (04:56 +0200)]
narcissus-core: Fix clippy lint

20 months agonarcissus-gpu: Fix clippy lint
Joshua Simmons [Sun, 31 Mar 2024 02:55:15 +0000 (04:55 +0200)]
narcissus-gpu: Fix clippy lint

2 years agometa: Rename ext to external
Joshua Simmons [Mon, 20 Nov 2023 20:21:05 +0000 (21:21 +0100)]
meta: Rename ext to external

2 years agonarcissus-sqlite: Fix clippy lint
Joshua Simmons [Sun, 5 Nov 2023 19:39:17 +0000 (20:39 +0100)]
narcissus-sqlite: Fix clippy lint

2 years agonarcissus-core: Fix clippy lint
Joshua Simmons [Sun, 5 Nov 2023 19:38:54 +0000 (20:38 +0100)]
narcissus-core: Fix clippy lint

2 years agonarcissus-app: Fix clippy lint
Joshua Simmons [Sun, 5 Nov 2023 19:38:25 +0000 (20:38 +0100)]
narcissus-app: Fix clippy lint

2 years agoblake3-smol: Add minimal blake3 dependency
Joshua Simmons [Sun, 5 Nov 2023 18:39:01 +0000 (19:39 +0100)]
blake3-smol: Add minimal blake3 dependency

2 years agosqlite-sys: Add sqlite dependency
Joshua Simmons [Sun, 5 Nov 2023 16:43:12 +0000 (17:43 +0100)]
sqlite-sys: Add sqlite dependency

2 years agometa: Re-organize crates
Joshua Simmons [Sun, 5 Nov 2023 11:56:13 +0000 (12:56 +0100)]
meta: Re-organize crates

2 years agonarcissus-core: Fix clippy lints
Joshua Simmons [Sun, 5 Nov 2023 11:35:37 +0000 (12:35 +0100)]
narcissus-core: Fix clippy lints

2 years agovulkan-sys: Use macro to generate flags impls
Joshua Simmons [Sun, 5 Nov 2023 11:33:43 +0000 (12:33 +0100)]
vulkan-sys: Use macro to generate flags impls

Replace find-and-replace "we've got macros at home" with actual macros,
and additionally fix a minor clippy lint about the structure of the
clone impl.

2 years agonarcissus-core: Remove `cstr_from_bytes_until_nul`
Joshua Simmons [Sun, 20 Aug 2023 16:01:02 +0000 (18:01 +0200)]
narcissus-core: Remove `cstr_from_bytes_until_nul`

The standard verison is stablilized as of Rust 1.69.

2 years agonarcissus-gpu: Use std from_bytes_until_nul
Joshua Simmons [Sun, 20 Aug 2023 16:00:27 +0000 (18:00 +0200)]
narcissus-gpu: Use std from_bytes_until_nul

2 years agonarcissus-gpu: Fix link in barrier documentation
Joshua Simmons [Sun, 20 Aug 2023 15:53:27 +0000 (17:53 +0200)]
narcissus-gpu: Fix link in barrier documentation

2 years agonarcissus-core: Add helpers to fetch important directories
Joshua Simmons [Sun, 20 Aug 2023 15:46:50 +0000 (17:46 +0200)]
narcissus-core: Add helpers to fetch important directories

2 years agostb_image: Suppress camel case warning
Joshua Simmons [Mon, 7 Aug 2023 21:53:17 +0000 (23:53 +0200)]
stb_image: Suppress camel case warning

2 years agonarcissus-gpu: Renaming and lifetime cleanups
Joshua Simmons [Mon, 7 Aug 2023 19:09:32 +0000 (21:09 +0200)]
narcissus-gpu: Renaming and lifetime cleanups

Rename CmdBuffer to CmdEncoder.
Rename MappedBuffer to PersistentBuffer.

2 years agonarcissus-gpu: Add new API for mapped buffers
Joshua Simmons [Sun, 6 Aug 2023 13:05:16 +0000 (15:05 +0200)]
narcissus-gpu: Add new API for mapped buffers

Add new functionality for persistent and transient buffers that allows
easy copying from Rust data types.

Replace code in narcissus with the new APIs.

Fix some GPU read - CPU write synchronisation issues by switching some
persistent buffers into automatically managed transient buffers.

2 years agonarcissus: Avoid using draw indexed for glyphs
Joshua Simmons [Sat, 5 Aug 2023 09:00:20 +0000 (11:00 +0200)]
narcissus: Avoid using draw indexed for glyphs

In preparation for being able to draw different types of primitive from
the same system, stop using indexed drawing for glyphs. Instead pack
information into the index buffer.

2 years agonarcissus-gpu: Remove unnecessary mut
Joshua Simmons [Sat, 29 Jul 2023 16:43:35 +0000 (18:43 +0200)]
narcissus-gpu: Remove unnecessary mut

2 years agocargo: Enable resolver 2 for workspace
Joshua Simmons [Sat, 29 Jul 2023 16:42:48 +0000 (18:42 +0200)]
cargo: Enable resolver 2 for workspace

2 years agovulkan-sys: Use a simpler alignment check for SPV
Joshua Simmons [Sat, 29 Jul 2023 13:12:41 +0000 (15:12 +0200)]
vulkan-sys: Use a simpler alignment check for SPV

2 years agonarcissus-gpu: Add basic randomised test for Tlsf
Joshua Simmons [Sat, 29 Jul 2023 13:12:05 +0000 (15:12 +0200)]
narcissus-gpu: Add basic randomised test for Tlsf

2 years agonarcissus-core: Add `array_select` to Pcg64
Joshua Simmons [Sat, 29 Jul 2023 08:27:39 +0000 (10:27 +0200)]
narcissus-core: Add `array_select` to Pcg64

2 years agonarcissus-gpu: Simplify allocator stats tracking
Joshua Simmons [Thu, 27 Jul 2023 09:36:06 +0000 (11:36 +0200)]
narcissus-gpu: Simplify allocator stats tracking

2 years agonarcissus-gpu: Fix old naming
Joshua Simmons [Wed, 26 Jul 2023 18:00:32 +0000 (20:00 +0200)]
narcissus-gpu: Fix old naming

2 years agonarcissus-gpu: Always call them super-blocks
Joshua Simmons [Tue, 25 Jul 2023 13:35:47 +0000 (15:35 +0200)]
narcissus-gpu: Always call them super-blocks

2 years agonarcissus-gpu: Add emergency deallocation to allocator
Joshua Simmons [Tue, 25 Jul 2023 13:32:26 +0000 (15:32 +0200)]
narcissus-gpu: Add emergency deallocation to allocator

2 years agonarcissus-gpu: Free unused TLSF super blocks
Joshua Simmons [Tue, 25 Jul 2023 12:20:26 +0000 (14:20 +0200)]
narcissus-gpu: Free unused TLSF super blocks

2 years agonarcissus-gpu: Add Default bound to Tlsf super blocks
Joshua Simmons [Tue, 25 Jul 2023 07:43:18 +0000 (09:43 +0200)]
narcissus-gpu: Add Default bound to Tlsf super blocks

2 years agonarcissus-gpu: Fix bufferImageGranularity support
Joshua Simmons [Thu, 20 Jul 2023 11:09:59 +0000 (13:09 +0200)]
narcissus-gpu: Fix bufferImageGranularity support

bufferImageGranularity applies to linear resources and non-linear
resources - not to images and buffers generally.

2 years agonarcissus-gpu: Support large bufferImageGranularity
Joshua Simmons [Wed, 19 Jul 2023 20:27:00 +0000 (22:27 +0200)]
narcissus-gpu: Support large bufferImageGranularity

Add support for bufferImageGranularity that's larger than the TLSF
minimum alignment by segregating image and buffer allocators in that
case.

2 years agonarcissus-gpu: Fix typo in tlsf docs
Joshua Simmons [Wed, 19 Jul 2023 20:25:51 +0000 (22:25 +0200)]
narcissus-gpu: Fix typo in tlsf docs

2 years agonarcissus-gpu: Track allocation metrics per-heap
Joshua Simmons [Wed, 19 Jul 2023 18:55:21 +0000 (20:55 +0200)]
narcissus-gpu: Track allocation metrics per-heap

Add tracking for per-heap memory usage.
Calculate per-heap TLSF super block size based on heap size.

2 years agonarcissus-gpu: Improve allocator behavior
Joshua Simmons [Wed, 19 Jul 2023 08:34:01 +0000 (10:34 +0200)]
narcissus-gpu: Improve allocator behavior

Add support for falling back to other memory types after allocation
failure.

Add support for falling back to dedicated allocations after TLSF
super-block allocation failure.