]>
git.nega.tv - josh/narcissus/log
Joshua Simmons [Sat, 3 Dec 2022 20:17:03 +0000 (21:17 +0100)]
Tidy embedded spir-v
Joshua Simmons [Sat, 3 Dec 2022 20:05:58 +0000 (21:05 +0100)]
Add compute shader dispatch command
Joshua Simmons [Fri, 2 Dec 2022 21:24:51 +0000 (22:24 +0100)]
Add blending and blitting
Joshua Simmons [Fri, 2 Dec 2022 21:24:27 +0000 (22:24 +0100)]
Add `create_buffer_with_data` helper
Joshua Simmons [Fri, 2 Dec 2022 21:17:42 +0000 (22:17 +0100)]
Add quantization helpers
Joshua Simmons [Fri, 2 Dec 2022 21:16:28 +0000 (22:16 +0100)]
Add include_bytes variant with custom alignment
Joshua Simmons [Fri, 2 Dec 2022 21:15:50 +0000 (22:15 +0100)]
Remove old stb_image dependency from core
Joshua Simmons [Fri, 2 Dec 2022 21:13:34 +0000 (22:13 +0100)]
Expand stb_truetype wrapper
Joshua Simmons [Wed, 23 Nov 2022 21:51:51 +0000 (22:51 +0100)]
Add newlines to the end of C files
Joshua Simmons [Wed, 23 Nov 2022 21:23:28 +0000 (22:23 +0100)]
Add stb_truetype wrapper
Joshua Simmons [Sun, 20 Nov 2022 22:46:13 +0000 (23:46 +0100)]
Rename MemoryLocation enum variants
Try to be more explicit about what you're getting with each option.
Joshua Simmons [Sun, 20 Nov 2022 16:40:49 +0000 (17:40 +0100)]
Remove empty test
Joshua Simmons [Sun, 20 Nov 2022 16:35:01 +0000 (17:35 +0100)]
Move image stuff into its own crate
Joshua Simmons [Sat, 19 Nov 2022 23:32:55 +0000 (00:32 +0100)]
Move frame counter out of vulkan module
Joshua Simmons [Sat, 19 Nov 2022 23:23:18 +0000 (00:23 +0100)]
Rework swapchain handling
Move some more logic into the app, and avoid creating a hard dependency
between narcissus-app and narcissus-gpu.
Joshua Simmons [Sat, 19 Nov 2022 23:21:20 +0000 (00:21 +0100)]
Add trait for passing OS window information around
Joshua Simmons [Sat, 19 Nov 2022 23:20:39 +0000 (00:20 +0100)]
Add `Upcast` trait for casting to super-trait
Joshua Simmons [Sat, 19 Nov 2022 23:18:12 +0000 (00:18 +0100)]
Add `cstr_from_bytes_until_nul`
Joshua Simmons [Sat, 19 Nov 2022 23:17:31 +0000 (00:17 +0100)]
Add Hash impl for flags
Joshua Simmons [Sat, 19 Nov 2022 23:14:49 +0000 (00:14 +0100)]
Add function to retreive sdl header version
Joshua Simmons [Sat, 19 Nov 2022 17:17:58 +0000 (18:17 +0100)]
Add xcb, xlib and wayland surface support
Joshua Simmons [Sat, 19 Nov 2022 17:17:01 +0000 (18:17 +0100)]
Add `SDL_GetWindowWMInfo`
Joshua Simmons [Thu, 17 Nov 2022 18:26:54 +0000 (19:26 +0100)]
Support general layout in image bindings
Joshua Simmons [Thu, 17 Nov 2022 08:05:03 +0000 (09:05 +0100)]
Simplify image barrier usage
Joshua Simmons [Thu, 17 Nov 2022 08:03:32 +0000 (09:03 +0100)]
Improve default for ImageSubresourceRange
Previously it was hard-coding 1 for the `mip_level_count` and
`array_layer_count`, however we can use all bits set as a sentinel for
all remaining mip levels / array layers.
Joshua Simmons [Wed, 16 Nov 2022 23:42:12 +0000 (00:42 +0100)]
Let there be light!
Joshua Simmons [Wed, 16 Nov 2022 23:33:21 +0000 (00:33 +0100)]
Add Default impls for subresource structs
Joshua Simmons [Wed, 16 Nov 2022 23:28:45 +0000 (00:28 +0100)]
Fix missing file from previous commit
Joshua Simmons [Wed, 16 Nov 2022 23:25:19 +0000 (00:25 +0100)]
Rename Texture to Image to match vulkan convention
Joshua Simmons [Wed, 16 Nov 2022 08:07:31 +0000 (09:07 +0100)]
Add basic barriers and dress BLÅHAJ in a texture
Joshua Simmons [Mon, 14 Nov 2022 20:52:28 +0000 (21:52 +0100)]
Simplify `Mat3::mul`
Joshua Simmons [Mon, 14 Nov 2022 20:31:50 +0000 (21:31 +0100)]
Increase the shark factor
Joshua Simmons [Mon, 14 Nov 2022 20:31:16 +0000 (21:31 +0100)]
Sprinkle some inlines and unrolling for debug perf
Joshua Simmons [Sun, 13 Nov 2022 22:51:52 +0000 (23:51 +0100)]
Add shorthand functions for vector and point new
Joshua Simmons [Sun, 13 Nov 2022 22:35:41 +0000 (23:35 +0100)]
Add test for cross product :)
Joshua Simmons [Sun, 13 Nov 2022 22:29:24 +0000 (23:29 +0100)]
Fix matrix handling now cross-product works
Joshua Simmons [Sun, 13 Nov 2022 21:50:35 +0000 (22:50 +0100)]
Simplify use of shader build script
Joshua Simmons [Sun, 13 Nov 2022 21:49:41 +0000 (22:49 +0100)]
Add note about rotation direction
Joshua Simmons [Sun, 13 Nov 2022 21:07:36 +0000 (22:07 +0100)]
Fix typo in cross-product implementation
Joshua Simmons [Sun, 13 Nov 2022 16:20:15 +0000 (17:20 +0100)]
Multiple Shark Zone
Joshua Simmons [Sun, 13 Nov 2022 13:13:56 +0000 (14:13 +0100)]
Rename `FrameToken` -> `Frame`
Joshua Simmons [Sun, 13 Nov 2022 13:03:39 +0000 (14:03 +0100)]
Tidy up the way we handle cmd buffers
Use the arena allocator to bump allocate them from the frame structure,
and return a wrapper struct holding a pointer to the concrete type.
Simplify a few signatures now we have a direct pointer to the cmd
buffer.
Joshua Simmons [Sun, 13 Nov 2022 11:04:52 +0000 (12:04 +0100)]
Add basic input events
Joshua Simmons [Sat, 12 Nov 2022 23:22:56 +0000 (00:22 +0100)]
Add const for magical swapchain destruction delay
Joshua Simmons [Sat, 12 Nov 2022 23:08:09 +0000 (00:08 +0100)]
Bundle all per-thread frame objects
Joshua Simmons [Sat, 12 Nov 2022 22:46:18 +0000 (23:46 +0100)]
Tidy up vulkan stuff
Joshua Simmons [Sat, 12 Nov 2022 20:46:24 +0000 (21:46 +0100)]
blåhaj bring up 🦈🦈🦈
Joshua Simmons [Fri, 11 Nov 2022 23:50:53 +0000 (00:50 +0100)]
Tidy some lints and documentation
Joshua Simmons [Fri, 11 Nov 2022 23:02:58 +0000 (00:02 +0100)]
Fix `Arc` incorrectly initializing itself as `Rc`
Joshua Simmons [Fri, 11 Nov 2022 22:24:48 +0000 (23:24 +0100)]
Fix memory safety issue in `HybridArena`
Calling `reset()` on an initialized, then moved `HybridArena` wouldn't
correctly update the page head pointer, causing reset to be called on
somebody else's bit of stack memory.
Joshua Simmons [Fri, 11 Nov 2022 22:23:36 +0000 (23:23 +0100)]
Remove broken attribute from `static_assert` macro
Joshua Simmons [Fri, 11 Nov 2022 21:53:38 +0000 (22:53 +0100)]
Add fallback for `round_ties_to_even` SSE4.1 path
Joshua Simmons [Fri, 11 Nov 2022 20:20:14 +0000 (21:20 +0100)]
Remove comparison with the empty page
By marking the empty page as a "stack" page, we can avoid needing to
compare with the empty page when allocating from a hybrid array.
Joshua Simmons [Wed, 9 Nov 2022 21:10:26 +0000 (22:10 +0100)]
Add bounded random function to `Pcg64`
Remove `Pcg32` because I don't think we're likely to need that for
anything.
Joshua Simmons [Wed, 9 Nov 2022 21:00:15 +0000 (22:00 +0100)]
Add `mul_full_width_{u8,u16,u32,u64}` functions
Joshua Simmons [Wed, 9 Nov 2022 20:56:28 +0000 (21:56 +0100)]
Fix clippy lints in stb_image build script
Joshua Simmons [Tue, 8 Nov 2022 22:25:55 +0000 (23:25 +0100)]
Add basic random numbers
Josh Simmons [Sun, 6 Nov 2022 10:45:09 +0000 (11:45 +0100)]
[meta] Update rust in github actions
Joshua Simmons [Sun, 6 Nov 2022 10:08:20 +0000 (11:08 +0100)]
Use `HybridArena` instead of heap allocation
Joshua Simmons [Sun, 6 Nov 2022 10:06:32 +0000 (11:06 +0100)]
Use `let..else` when handling slice lengths
Allow `VulkanSlice2` to be created from mutable references.
Joshua Simmons [Sat, 5 Nov 2022 12:53:12 +0000 (13:53 +0100)]
Use Rust's ThreadId instead of gettid
It's a little bit nasty due to needing to wrap it in Option, however it
avoids making the gettid syscall every time we do a lock / unlock
operation. Small performance improvement in debug mode.
Joshua Simmons [Sat, 5 Nov 2022 12:51:29 +0000 (13:51 +0100)]
Keep frame pointers by default
Joshua Simmons [Sat, 5 Nov 2022 10:22:39 +0000 (11:22 +0100)]
Handle each vulkan pool type separately
Joshua Simmons [Sat, 5 Nov 2022 10:00:23 +0000 (11:00 +0100)]
Improve lifetimes command buffer tokens
Not binding to the lifetime of the thread token meant you could create
multiple mut references to the same command buffer with
`command_buffer_mut`.
Relax requirements for mut references on the command buffer tokens in
the API as they're not required.
Josh Simmons [Fri, 4 Nov 2022 20:59:59 +0000 (21:59 +0100)]
Fix reduction using the wrong rounding mode (#1)
Previously we were using `f32::round` in the reduction step, however
that isn't correct. We really need IEEE-754 tiesToEven semantics for the
rounding step, so manually implement that.
Joshua Simmons [Fri, 4 Nov 2022 18:12:12 +0000 (19:12 +0100)]
Allocate uniform buffer in host visible memory
Joshua Simmons [Thu, 3 Nov 2022 21:52:35 +0000 (22:52 +0100)]
Add descriptor APIs and move the triangle
Joshua Simmons [Thu, 3 Nov 2022 21:51:42 +0000 (22:51 +0100)]
Fix clippy lints
Joshua Simmons [Thu, 3 Nov 2022 21:56:47 +0000 (22:56 +0100)]
Fix clippy dead code warning
Joshua Simmons [Thu, 3 Nov 2022 21:18:31 +0000 (22:18 +0100)]
Expand arena functionality
Add `alloc_slice_fill_with`
Add `alloc_slice_fill_copy`
Add `alloc_slice_fill_clone`
Add `alloc_slice_fill_iter`
Joshua Simmons [Thu, 3 Nov 2022 21:17:30 +0000 (22:17 +0100)]
Allow creating vulkan slices from mut slices
Joshua Simmons [Thu, 3 Nov 2022 21:14:54 +0000 (22:14 +0100)]
Target modern CPU by default
Joshua Simmons [Thu, 3 Nov 2022 21:14:17 +0000 (22:14 +0100)]
Fix base `Mat4 * Vec4` function name
Joshua Simmons [Wed, 2 Nov 2022 21:16:50 +0000 (22:16 +0100)]
Add `Arena` and `HybridArena`
Add two variants on a simple bump allocator. Based loosly on the bumpalo
crate.
Provides two types, `Arena` which always allocates from the heap and
`HybridArena` which will first use a stack allocated page, then fall
back to allocating from the heap as well.
Joshua Simmons [Wed, 2 Nov 2022 21:15:47 +0000 (22:15 +0100)]
Add vk descriptor management functions
Joshua Simmons [Sat, 29 Oct 2022 15:47:44 +0000 (17:47 +0200)]
Use fully qualified path to mold binary
Load it into the /usr/ instead of /usr/local on github actions so the
path is the same as when installed as a regular package.
Joshua Simmons [Sat, 29 Oct 2022 15:32:52 +0000 (17:32 +0200)]
Re-add clang as linker
Joshua Simmons [Sat, 29 Oct 2022 15:29:33 +0000 (17:29 +0200)]
Update github actions VM to Ubuntu 22.04
Joshua Simmons [Sat, 29 Oct 2022 15:03:14 +0000 (17:03 +0200)]
Don't need to force clang linker anymore
Joshua Simmons [Sat, 29 Oct 2022 14:14:54 +0000 (16:14 +0200)]
Add `BindGroupLayout`
Joshua Simmons [Sat, 29 Oct 2022 14:12:39 +0000 (16:12 +0200)]
Rename `request_command_buffer` to `create_...`
The distinction between requesting and creating seems a bit tenuious and
probably just confusing. Might re-visit this later once the API is more
complete.
Joshua Simmons [Sat, 29 Oct 2022 14:09:54 +0000 (16:09 +0200)]
Fix comment running past the line width limit
Joshua Simmons [Sat, 29 Oct 2022 14:09:14 +0000 (16:09 +0200)]
Add `is_aligned_to` and `is_aligned` functions
Joshua Simmons [Sat, 29 Oct 2022 14:08:07 +0000 (16:08 +0200)]
Fix incorrect pad values for vulkan slices
Add tests for every vulkan slice used to ensure they're all correct.
Joshua Simmons [Sat, 29 Oct 2022 14:07:34 +0000 (16:07 +0200)]
Add missing default implementations
Joshua Simmons [Sat, 29 Oct 2022 14:02:49 +0000 (16:02 +0200)]
Remove unnecessary comment
Joshua Simmons [Fri, 28 Oct 2022 21:20:09 +0000 (23:20 +0200)]
Fill in affine2, affine3, and quat functions
Josh Simmons [Sun, 23 Oct 2022 09:07:16 +0000 (11:07 +0200)]
Try updating Rust before build
Joshua Simmons [Sat, 22 Oct 2022 14:25:44 +0000 (16:25 +0200)]
Improve error rate on sin_pi
Similarly to our tan implementation, use a 48 bit leading coefficient.
Reduces the percentage of faithfully rounded results from 17.4% to 1.3%.
Joshua Simmons [Fri, 21 Oct 2022 21:05:21 +0000 (23:05 +0200)]
Be more defensive when doing range reduction
f32 as u32 saturates in rust, using to_int_unchecked wasn't currently
saturating on x86, but it's conceivable that it might. Go the long way
around by converting first to i32 and then to u32 in order to avoid the
possibility.
Joshua Simmons [Mon, 17 Oct 2022 06:47:12 +0000 (08:47 +0200)]
Fix clippy lints
Joshua Simmons [Sun, 16 Oct 2022 21:43:29 +0000 (23:43 +0200)]
Re-word some documentation for manual_arc
Joshua Simmons [Sun, 16 Oct 2022 21:42:46 +0000 (23:42 +0200)]
Fix warnings in affine2 and affine3
Joshua Simmons [Sun, 16 Oct 2022 21:41:28 +0000 (23:41 +0200)]
Implement some more maths basics
Joshua Simmons [Sun, 16 Oct 2022 15:34:01 +0000 (17:34 +0200)]
Fix errors in `sin/cos/tan` exhaustive checking
Add fractional ulps error calculation.
Fix where the multiplication by pi happens in checking code.
Replace rug with small hand-rolled mpfr wrapper.
Joshua Simmons [Sat, 15 Oct 2022 21:35:14 +0000 (23:35 +0200)]
Improve `mod_inverse_u32` testing
Joshua Simmons [Sat, 15 Oct 2022 21:34:23 +0000 (23:34 +0200)]
Fix some edge case handling in `sin_cos_pi`
Update tests as well.
Joshua Simmons [Sat, 15 Oct 2022 13:32:22 +0000 (15:32 +0200)]
Add some new maths functions
Add `{sin,cos,tan}_pi_f32` functions.
Add `next_after_f32`.
Add `HalfTurns` unit type.
Switch `Mat4` to use turns and `sin_cos_pi_f32`.
Joshua Simmons [Sat, 8 Oct 2022 11:03:44 +0000 (13:03 +0200)]
Improve pool implementation
Move virtual memory failures into the `virtual_reserve` and
`virtual_commit` signatures so we can give better assert messages on
failure.
Handle growth more accurately, allowing us to use the entire table
capacity before asserting.
Reserve a bit in the generation counter to keep track of whether a slot
is full by incrementing the counter on both allocation and deallocation.
This means exported handles can only ever have an odd generation
counter.
Assert when given a handle that has an invalid generation counter
(where the counter implies it would be pointing to an empty slot).
Both above changes together means it's no longer possible to create a
reference to an uninitialized slot, even when manually messing with the
handle or mixing handles between different pools.
Joshua Simmons [Sat, 8 Oct 2022 11:00:54 +0000 (13:00 +0200)]
Always panic when failing to drop a `ManualArc`
Hopefully the optimiser can nuke the branch most of the time.