]> git.nega.tv - josh/narcissus/log
josh/narcissus
7 months agoshark-shaders: Improve scatter robustness and perf
Josh Simmons [Mon, 11 Nov 2024 18:50:30 +0000 (19:50 +0100)]
shark-shaders: Improve scatter robustness and perf

7 months agonarcissus-font: Fix clippy warning
Josh Simmons [Mon, 11 Nov 2024 18:43:57 +0000 (19:43 +0100)]
narcissus-font: Fix clippy warning

7 months agoshark-shaders: Remove one dispatchfrom radix sort
Josh Simmons [Sun, 10 Nov 2024 15:00:02 +0000 (16:00 +0100)]
shark-shaders: Remove one dispatchfrom radix sort

Calculate the prefix sum for the spine with the last workgroup in the
upsweep dispatch.

7 months agoshark-shaders: Shrink glyph draw command slightly
Josh Simmons [Sun, 10 Nov 2024 13:15:51 +0000 (14:15 +0100)]
shark-shaders: Shrink glyph draw command slightly

7 months agoshark: Simplify glyph index and advance caching
Josh Simmons [Sun, 10 Nov 2024 11:46:52 +0000 (12:46 +0100)]
shark: Simplify glyph index and advance caching

7 months agoshark: Update test scene
Josh Simmons [Sun, 10 Nov 2024 10:17:47 +0000 (11:17 +0100)]
shark: Update test scene

7 months agonarcissus-font: Cache some things
Josh Simmons [Sun, 10 Nov 2024 09:43:36 +0000 (10:43 +0100)]
narcissus-font: Cache some things

Pre-load glyph indices for the ascii range rather than looking them up
on demand.

Cache glyph advance values for glyph pairs.

7 months agoshark-shaders: Improve scatter performance more
Josh Simmons [Sat, 9 Nov 2024 21:08:20 +0000 (22:08 +0100)]
shark-shaders: Improve scatter performance more

7 months agoshark-shaders: Improve scatter performance
Joshua Simmons [Sat, 9 Nov 2024 16:20:06 +0000 (17:20 +0100)]
shark-shaders: Improve scatter performance

Use a bitmap in LDS to represent sparse scattered tiles. We can write
arbitrary geometry into the bitmap (e.g. lines) and then count and emit
to vram.

This improves performance from ~600us to ~300us on my 6800, and allows
us to handle line geometry in the future without a large performance
hit.

7 months agometa: Update github actions
Joshua Simmons [Sat, 9 Nov 2024 13:24:31 +0000 (14:24 +0100)]
meta: Update github actions

7 months agoshark-shaders: Remove unused glsl extension
Joshua Simmons [Sat, 9 Nov 2024 13:19:22 +0000 (14:19 +0100)]
shark-shaders: Remove unused glsl extension

Fixes CI.

7 months agoshark: Restore 2d drawing with new binning
Josh Simmons [Sat, 9 Nov 2024 12:38:33 +0000 (13:38 +0100)]
shark: Restore 2d drawing with new binning

7 months agoshark-shaders: Small improvements to radix sort
Josh Simmons [Tue, 5 Nov 2024 22:15:02 +0000 (23:15 +0100)]
shark-shaders: Small improvements to radix sort

7 months agoshark: Remove test work amplification
Josh Simmons [Mon, 4 Nov 2024 21:26:25 +0000 (22:26 +0100)]
shark: Remove test work amplification

7 months agoshark: Add basic tests for gpu radix sorting
Josh Simmons [Mon, 4 Nov 2024 20:23:11 +0000 (21:23 +0100)]
shark: Add basic tests for gpu radix sorting

7 months agoshark-shaders: Move count ref into radix_sort.h
Josh Simmons [Mon, 4 Nov 2024 20:21:42 +0000 (21:21 +0100)]
shark-shaders: Move count ref into radix_sort.h

7 months agonarcissus-gpu: Add `copy_to_slice` to persistent buffer
Josh Simmons [Mon, 4 Nov 2024 20:18:13 +0000 (21:18 +0100)]
narcissus-gpu: Add `copy_to_slice` to persistent buffer

7 months agonarcissus-core: Remove unnecessary trait bound
Josh Simmons [Mon, 4 Nov 2024 20:15:13 +0000 (21:15 +0100)]
narcissus-core: Remove unnecessary trait bound

7 months agonarcissus-gpu: Add `wait_idle` function
Josh Simmons [Mon, 4 Nov 2024 20:13:17 +0000 (21:13 +0100)]
narcissus-gpu: Add `wait_idle` function

7 months agoshark: Re-work UI
Josh Simmons [Mon, 4 Nov 2024 07:33:52 +0000 (08:33 +0100)]
shark: Re-work UI

Add radix sort pipelines.
Add buffer address abstraction.
Add spec constants.
Add subgroup size control.
Add `cmd_dispatch_indirect`.

Change bind group API to separate allocation and binding.

Surely I won't regret the mega-commit...

7 months agonarcissus-gpu: Add support for indirect buffers
Josh Simmons [Mon, 4 Nov 2024 07:31:58 +0000 (08:31 +0100)]
narcissus-gpu: Add support for indirect buffers

Additionally, always enable shader device address flags on buffers.

7 months agoshark-shaders: Add message when shader compilation fails
Josh Simmons [Mon, 4 Nov 2024 07:27:28 +0000 (08:27 +0100)]
shark-shaders: Add message when shader compilation fails

7 months agovulkan-sys: Tidy subgroup size control definitions
Josh Simmons [Mon, 4 Nov 2024 07:25:22 +0000 (08:25 +0100)]
vulkan-sys: Tidy subgroup size control definitions

7 months agonarcissus-gpu: Fix ComputeWrite being marked read only
Josh Simmons [Mon, 4 Nov 2024 07:20:58 +0000 (08:20 +0100)]
narcissus-gpu: Fix ComputeWrite being marked read only

Resolves issue where ComputeWrite -> ComputeOtherRead barriers weren't
flushing caches.

7 months agoexternal: Fix clippy lints
Josh Simmons [Mon, 4 Nov 2024 07:17:51 +0000 (08:17 +0100)]
external: Fix clippy lints

10 months agoshark: Add support for ui rects
Josh Simmons [Thu, 22 Aug 2024 17:40:47 +0000 (19:40 +0200)]
shark: Add support for ui rects

10 months agonarcissus-font: Add `as_u32` to `TouchedGlyphInstance`
Josh Simmons [Thu, 22 Aug 2024 17:21:06 +0000 (19:21 +0200)]
narcissus-font: Add `as_u32` to `TouchedGlyphInstance`

11 months agonarcissus-core: Remove unused code
Josh Simmons [Sun, 28 Jul 2024 08:54:06 +0000 (10:54 +0200)]
narcissus-core: Remove unused code

11 months agoshark: Shader cleanup
Josh Simmons [Sun, 21 Jul 2024 07:03:17 +0000 (09:03 +0200)]
shark: Shader cleanup

11 months agoshark: Improve shader performance
Josh Simmons [Thu, 18 Jul 2024 21:19:39 +0000 (23:19 +0200)]
shark: Improve shader performance

Scalarize all the things!
Remove extra passes over the input primitives buffer.
Use AABB of entire subgroup to determine which tiles to write.

12 months agomisc: Fix clippy lints
Josh Simmons [Sat, 22 Jun 2024 08:28:25 +0000 (10:28 +0200)]
misc: Fix clippy lints

12 months agonarcissus: Fix clippy lints
Josh Simmons [Tue, 18 Jun 2024 20:50:00 +0000 (22:50 +0200)]
narcissus: Fix clippy lints

12 months agovulkan-sys: Ignore explicit transmute warnings
Josh Simmons [Tue, 18 Jun 2024 20:48:51 +0000 (22:48 +0200)]
vulkan-sys: Ignore explicit transmute warnings

We do this deliberately because it's ridiculous to enter each function
type manually.

12 months agoshark: Use compute barriers for UI images
Josh Simmons [Tue, 18 Jun 2024 20:47:21 +0000 (22:47 +0200)]
shark: Use compute barriers for UI images

We access these exclusively from compute stages now, rather than via a
graphics pass, so we should use the compute only access types.

12 months agoshark: Fix UI tile debug view
Josh Simmons [Tue, 18 Jun 2024 20:44:37 +0000 (22:44 +0200)]
shark: Fix UI tile debug view

12 months agoshark: Fix out-of-bounds writes in bin clear
Josh Simmons [Mon, 10 Jun 2024 06:38:29 +0000 (08:38 +0200)]
shark: Fix out-of-bounds writes in bin clear

12 months agoshark: Use BDA instead of compute bindings
Josh Simmons [Sun, 9 Jun 2024 21:05:13 +0000 (23:05 +0200)]
shark: Use BDA instead of compute bindings

12 months agonarcissus-gpu: Expose buffer device addresses
Josh Simmons [Sun, 9 Jun 2024 21:04:17 +0000 (23:04 +0200)]
narcissus-gpu: Expose buffer device addresses

12 months agoshark: Use immutable samplers
Josh Simmons [Sat, 8 Jun 2024 19:32:45 +0000 (21:32 +0200)]
shark: Use immutable samplers

12 months agonarcissus-gpu: Add support for immutable samplers
Josh Simmons [Sat, 8 Jun 2024 19:27:11 +0000 (21:27 +0200)]
narcissus-gpu: Add support for immutable samplers

12 months agoshark: Add debug names for buffers and images
Josh Simmons [Wed, 5 Jun 2024 20:12:55 +0000 (22:12 +0200)]
shark: Add debug names for buffers and images

12 months agonarcissus-gpu: Add debug names for buffers and images
Josh Simmons [Wed, 5 Jun 2024 20:12:19 +0000 (22:12 +0200)]
narcissus-gpu: Add debug names for buffers and images

12 months agoshark: Fix case of microshades literals
Josh Simmons [Wed, 5 Jun 2024 20:03:25 +0000 (22:03 +0200)]
shark: Fix case of microshades literals

12 months agoshark: Use command buffer debug markers
Josh Simmons [Tue, 4 Jun 2024 20:43:15 +0000 (22:43 +0200)]
shark: Use command buffer debug markers

12 months agonarcissus-gpu: Add command buffer debug markers
Josh Simmons [Tue, 4 Jun 2024 20:42:52 +0000 (22:42 +0200)]
narcissus-gpu: Add command buffer debug markers

12 months agonarcissus-core: Add arena helper for CStr creation
Josh Simmons [Tue, 4 Jun 2024 20:41:59 +0000 (22:41 +0200)]
narcissus-core: Add arena helper for CStr creation

12 months agovulkan-sys: Add VK_EXT_debug_utils
Josh Simmons [Tue, 4 Jun 2024 20:41:17 +0000 (22:41 +0200)]
vulkan-sys: Add VK_EXT_debug_utils

12 months agonarcissus-gpu: Hook up buffer device address
Josh Simmons [Mon, 3 Jun 2024 20:40:42 +0000 (22:40 +0200)]
narcissus-gpu: Hook up buffer device address

12 months agovulkan-sys: Add buffer device address support
Josh Simmons [Mon, 3 Jun 2024 19:08:27 +0000 (21:08 +0200)]
vulkan-sys: Add buffer device address support

13 months agoshark: Track range of non-zero L1 buckets
Josh Simmons [Sun, 2 Jun 2024 12:52:54 +0000 (14:52 +0200)]
shark: Track range of non-zero L1 buckets

13 months agonarcissus-gpu: Add compute-only resource barrier
Josh Simmons [Sun, 2 Jun 2024 12:14:55 +0000 (14:14 +0200)]
narcissus-gpu: Add compute-only resource barrier

13 months agoshark: Use consts instead of defines in shaders
Josh Simmons [Sun, 2 Jun 2024 10:14:59 +0000 (12:14 +0200)]
shark: Use consts instead of defines in shaders

13 months agoshark: Remove hack to bypass cache for prim instances
Joshua Simmons [Sat, 1 Jun 2024 19:10:55 +0000 (21:10 +0200)]
shark: Remove hack to bypass cache for prim instances

13 months agoshark: Improve performance of binning shader
Josh Simmons [Sat, 1 Jun 2024 14:36:49 +0000 (16:36 +0200)]
shark: Improve performance of binning shader

13 months agoshark: Switch to single-pass binning for primitive-2d
Josh Simmons [Fri, 31 May 2024 04:41:11 +0000 (06:41 +0200)]
shark: Switch to single-pass binning for primitive-2d

13 months agoshark: Draw more text
Joshua Simmons [Mon, 27 May 2024 17:54:15 +0000 (19:54 +0200)]
shark: Draw more text

13 months agoblake3-smol: Add features to make cargo happy
Joshua Simmons [Mon, 27 May 2024 17:53:46 +0000 (19:53 +0200)]
blake3-smol: Add features to make cargo happy

13 months agoshark: Try single pass for coarse culling
Josh Simmons [Mon, 27 May 2024 06:43:34 +0000 (08:43 +0200)]
shark: Try single pass for coarse culling

13 months agoshark: Tweak primitive shaders
Josh Simmons [Mon, 27 May 2024 05:25:33 +0000 (07:25 +0200)]
shark: Tweak primitive shaders

13 months agoshark: Multipass primitives
Josh Simmons [Sun, 26 May 2024 16:40:50 +0000 (18:40 +0200)]
shark: Multipass primitives

13 months agoshark: Simplify primitive shaders
Josh Simmons [Sun, 26 May 2024 13:34:33 +0000 (15:34 +0200)]
shark: Simplify primitive shaders

13 months agoshark: Track dirty tiles
Josh Simmons [Sun, 26 May 2024 09:55:14 +0000 (11:55 +0200)]
shark: Track dirty tiles

13 months agoshark: Use push constants for primitive uniforms
Josh Simmons [Sat, 25 May 2024 18:34:35 +0000 (20:34 +0200)]
shark: Use push constants for primitive uniforms

13 months agoshark: Add more text!
Josh Simmons [Sat, 25 May 2024 13:42:10 +0000 (15:42 +0200)]
shark: Add more text!

13 months agonarcissus-gpu: Add push constants to pipeline layout
Josh Simmons [Sat, 25 May 2024 13:41:30 +0000 (15:41 +0200)]
narcissus-gpu: Add push constants to pipeline layout

13 months agovulkan-sys: Fix PipelineLayoutCreateInfo definition
Josh Simmons [Sat, 25 May 2024 13:33:50 +0000 (15:33 +0200)]
vulkan-sys: Fix PipelineLayoutCreateInfo definition

13 months agonarcissus-gpu: Cache pipeline layouts
Josh Simmons [Sat, 25 May 2024 13:26:21 +0000 (15:26 +0200)]
narcissus-gpu: Cache pipeline layouts

13 months agonarcissus-gpu: Add push constants function
Josh Simmons [Sat, 25 May 2024 08:44:30 +0000 (10:44 +0200)]
narcissus-gpu: Add push constants function

13 months agoshark: Try to unify shaders so they're more readable
Josh Simmons [Fri, 24 May 2024 19:31:46 +0000 (21:31 +0200)]
shark: Try to unify shaders so they're more readable

13 months agoshark: Two level binning for big performance
Josh Simmons [Fri, 24 May 2024 15:28:59 +0000 (17:28 +0200)]
shark: Two level binning for big performance

13 months agonarcissus-gpu: Fix embarrasingly broken `is_[un]linked`
Josh Simmons [Thu, 23 May 2024 19:46:41 +0000 (21:46 +0200)]
narcissus-gpu: Fix embarrasingly broken `is_[un]linked`

So it turns out if you have two nodes pointing to each other, that still
counts as being in a list! Who knew...

13 months agoshark: Turn up the difficulty
Josh Simmons [Mon, 20 May 2024 21:41:57 +0000 (23:41 +0200)]
shark: Turn up the difficulty

13 months agoshark: Bin primitives into tiles
Josh Simmons [Mon, 20 May 2024 21:09:04 +0000 (23:09 +0200)]
shark: Bin primitives into tiles

13 months agoshark: Split UI from display transform
Josh Simmons [Sat, 18 May 2024 17:08:02 +0000 (19:08 +0200)]
shark: Split UI from display transform

13 months agometa: Add vscode workspace settings
Josh Simmons [Sat, 18 May 2024 08:49:09 +0000 (10:49 +0200)]
meta: Add vscode workspace settings

13 months agoshark: Add support for shader includes
Josh Simmons [Sat, 18 May 2024 08:39:21 +0000 (10:39 +0200)]
shark: Add support for shader includes

13 months agonarcissus-gpu: Simplify bind group layout setup
Josh Simmons [Fri, 17 May 2024 19:17:09 +0000 (21:17 +0200)]
narcissus-gpu: Simplify bind group layout setup

13 months agoshark: Render UI with compute
Josh Simmons [Thu, 16 May 2024 18:29:37 +0000 (20:29 +0200)]
shark: Render UI with compute

13 months agoshark: Use indexable structs for gpu resources
Josh Simmons [Wed, 15 May 2024 06:37:49 +0000 (08:37 +0200)]
shark: Use indexable structs for gpu resources

13 months agonarcissus-gpu: Configure swapchain with available modes
Josh Simmons [Tue, 14 May 2024 19:49:53 +0000 (21:49 +0200)]
narcissus-gpu: Configure swapchain with available modes

13 months agoshark: Apply display transform in compute shader
Josh Simmons [Tue, 14 May 2024 16:54:31 +0000 (18:54 +0200)]
shark: Apply display transform in compute shader

13 months agonarcissus-gpu: Add `E5B9G9R9_UFLOAT_PACK32` format
Josh Simmons [Tue, 14 May 2024 12:10:23 +0000 (14:10 +0200)]
narcissus-gpu: Add `E5B9G9R9_UFLOAT_PACK32` format

13 months agonarcissus-core: Add basic dds loader
Josh Simmons [Tue, 14 May 2024 07:28:49 +0000 (09:28 +0200)]
narcissus-core: Add basic dds loader

13 months agonarcissus-core: Add FourCC wrapper
Josh Simmons [Mon, 13 May 2024 21:28:29 +0000 (23:28 +0200)]
narcissus-core: Add FourCC wrapper

13 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

13 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

13 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

13 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

13 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

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

13 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

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

13 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

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

13 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

13 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.

13 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`

13 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

13 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

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