Commit graph

302 commits

Author SHA1 Message Date
Tatsuyuki Ishi bc7b2106b0
Merge pull request #77 from ishitatsuyuki/blend-scratch
Remove manual blend stack spilling and rely on scratch memory instead
2021-07-13 09:49:34 +09:00
Raph Levien a542833646
Merge pull request #105 from DJMcNab/linguist-highlighting
Linguist highlighting
2021-07-11 18:53:33 -07:00
Daniel McNab 98862ab1c7
Fix name of folder 2021-07-11 18:11:35 +01:00
Daniel McNab 0095a38556
Highlight shaders as glsl 2021-07-11 18:11:12 +01:00
Tatsuyuki Ishi 1e5dcebecd
Merge pull request #104 from ishitatsuyuki/winit-clap 2021-06-26 11:53:40 +09:00
Ishi Tatsuyuki afe72804e1 Add command line parameters to winit
So that I don't need to modify lib.rs every time I want to benchmark...
2021-06-26 11:42:33 +09:00
Ishi Tatsuyuki 7a2dc37d36 Remove manual blend stack spilling and rely on scratch memory instead
v2: Add a panic when the nested blend depth exceeds the limit.
v3: Rebase and partially remove code introduced in 22507de.
2021-06-25 17:13:01 +09:00
Raph Levien 379fb1caaa
Merge pull request #89 from linebender/text
Start text rendering
2021-06-23 07:56:24 -07:00
Tatsuyuki Ishi 090c99e277
Merge pull request #99 from ishitatsuyuki/bd 2021-06-12 15:29:34 +09:00
Ishi Tatsuyuki e610c71f13 Adjust metal workgroup limits 2021-06-12 15:28:30 +09:00
Ishi Tatsuyuki d77dfb8c00 Runtime querying of threadgroup size 2021-06-08 16:29:40 +09:00
Ishi Tatsuyuki c2772ceac7 Boost backdrop parallelism for the prefix sums 2021-06-08 15:09:32 +09:00
Raph Levien 8b65942f65
Merge pull request #103 from linebender/dx12_fixes
Fix some dx12 bugs
2021-06-01 15:24:54 -07:00
Raph Levien 074fafad1e Turn off reuse of command buffers for now
It worked ok on Vulkan but is causing problems on DX12 and Metal. Punt
for now and come back to this later when we do more sophisticated
resource management.
2021-05-31 21:09:15 -07:00
Raph Levien 87a84eb490 Fix some dx12 bugs
Missing a potential barrier, and had src and dst switched on blit.
2021-05-31 20:39:38 -07:00
Raph Levien e2b14ea4be
Merge pull request #102 from linebender/api_reorg
API reorg
2021-05-31 20:37:50 -07:00
Raph Levien 431486a766 Merge branch 'master' into api_reorg 2021-05-31 06:46:18 -07:00
Raph Levien ccbfdeb810
Merge pull request #101 from linebender/metal
[metal] Wire up swapchain presentation
2021-05-31 06:44:16 -07:00
Raph Levien bae185efbd API reorg
Move types into the toplevel and hide implementation details. Remove
deref of hub CmdBuf to mux. Restrict public visibility of internals.

Most items have some docs, though improvements are still possible. In
particular, there should be detailed safety info.
2021-05-29 21:11:02 -07:00
Raph Levien 0c35b74699 Wire up swapchain presentation
This gets a swapchain displayed and fills out a number of the image
related parts of the API: image creation, binding to descriptor sets,
and blitting.
2021-05-28 21:41:04 -07:00
Raph Levien 84a834ee88
Merge pull request #100 from linebender/cleanup
API changes and cleanup
2021-05-28 21:40:47 -07:00
Raph Levien 7d7c86c44b API changes and cleanup
Add workgroup size to dispatch call (needed by metal). Change all fence
references to mutable for consistency.

Move backend traits to a separate file (move them out of the toplevel
namespace in preparation for the hub types going there, to make the
public API nicer).

Add a method and macro for automatically choosing shader code, and
change collatz example to generate all 3 kinds on build.
2021-05-28 16:14:39 -07:00
Raph Levien 641891b01f
Merge pull request #93 from linebender/metal
Metal back-end
2021-05-28 16:07:33 -07:00
Raph Levien af4b568589 Merge branch 'master' into metal 2021-05-28 14:47:05 -07:00
Raph Levien 126bea0486
Merge pull request #98 from linebender/dx12
More work on DX12 backend
2021-05-28 14:04:52 -07:00
Raph Levien 5481621184 First light on running a compute shader
A bunch of loose ends remain, including needing to plumb the size of the
workgroup through. Image and swapchains also need to be added. But it
does run collatz.

Progress towards #95.
2021-05-28 14:03:44 -07:00
Raph Levien c2965254db Merge branch 'dx12' into metal 2021-05-27 16:12:21 -07:00
Raph Levien b4ba6886d8 Tweak wait_and_reset mutable fence signature
A reference to a slice of mutable references is not a thing.
2021-05-27 16:10:14 -07:00
Raph Levien 84dabcf049 Merge branch 'dx12' into metal 2021-05-27 16:02:12 -07:00
Raph Levien b6292c644f Make fences mutable
Change the interface for fences to accept mutable references. This will
actualy help the Metal backend more than dx12 (avoiding interior
mutability) but more accurately captures intent and matches gfx-hal.
2021-05-27 15:53:12 -07:00
Raph Levien 3067733310 Implement more of the API
WIP. Goal is to get collatz running.
2021-05-27 14:55:40 -07:00
Raph Levien ebefd025f7 Fix up merge
Update signatures to match changes to backend trait, and add new types
and stub methods to complete mux abstraction.
2021-05-26 21:30:28 -07:00
Raph Levien 0d5ff515ec Merge branch 'dx12' into metal 2021-05-26 18:16:45 -07:00
Raph Levien 37de07f670 More work on DX12 backend
This gets swapchain presentation wired up, and some more changes.
2021-05-26 16:31:24 -07:00
Raph Levien acb4e5f8af
Merge pull request #97 from linebender/mux
Add multiplexer abstraction
2021-05-26 16:31:08 -07:00
Raph Levien 2ecfc7a414 Wire hub to mux
Make the hub abstraction connect to the mux, rather than directly to the
Vulkan back-end.

As of this commit, both command line and winit examples work (on
Vulkan). In theory it should be possible to get them working on Dx12 as
well by translating the shader code, but there's a lot that can go
wrong.

This commit also contains a bunch of changes to mux to make conditional
compilation of match arms work, and new methods to support swapchain.
2021-05-26 09:30:07 -07:00
Raph Levien d15994fe44 Fix cfg'ed backend imports 2021-05-25 17:09:24 -07:00
Raph Levien f04da3af9d Add multiplexer abstraction
Adds a new "mux" module which can have multiple backends. As of this
commit, it's not wired up at all, but the functionality should be
reasonably complete.

Minor tweaks to the backend trait to accommodate this, mostly changing
Fence and Semaphore to references so they don't need to be Copy.

Part of the work toward #95
2021-05-25 15:12:37 -07:00
Raph Levien 125f6f9d63
Merge pull request #80 from linebender/dx12
Start DX12 backend
2021-05-25 15:11:54 -07:00
Raph Levien 865080d9c6 Merge branch 'master' into dx12 2021-05-25 06:46:15 -07:00
Raph Levien ad95dbbabb
Merge pull request #96 from linebender/staging
Add create_buffer_init method
2021-05-25 06:45:54 -07:00
Raph Levien 6ac46340e6 Fixup merge of staging changes
Update the backend to reflect trait changes.
2021-05-24 15:50:50 -07:00
Raph Levien dfac2148a9 Merge branch 'staging' into dx12 2021-05-24 15:44:53 -07:00
Raph Levien 174c81ec09 Cleanup
Fix bound on blanket RetainResource impl. Clean up run_cmd_buf.
2021-05-24 15:42:25 -07:00
Raph Levien 22935fccc6 Use const generics for IntoRefs
Yay! Now we can use an array of any size, slice, or vector.
2021-05-24 14:25:13 -07:00
Raph Levien 0cc72d9765 Reduce allocations for retaining resources
Use an enum instead of Box<dyn Any> for resources to be retained until
command buffer completion, and allow both references (which will be
cloned) and owned resources (useful for staging buffers).
2021-05-24 14:10:28 -07:00
Raph Levien 47d2e0a756 Add create_buffer_init method
Add a method to create a buffer with initial content, which requires
staging buffers under the hood.

This patch also changes the lower-level (Vulkan) interface to be closer
to the raw Vulkan call.
2021-05-24 13:18:11 -07:00
Raph Levien 48fd003a00 Merge branch 'master' into dx12 2021-05-24 08:27:36 -07:00
Raph Levien 7060cc1ab5
Merge pull request #94 from linebender/usage
Migrate to BufferUsage
2021-05-24 08:26:19 -07:00
Raph Levien 60d54b6e69 Add image support
Adds image data types and operations. At this point, lightly tested.
2021-05-22 15:15:33 -07:00