Commit graph

118 commits

Author SHA1 Message Date
chyyran
59cc3deb09 rt: fix TAIT usages 2023-07-20 02:40:13 -04:00
chyyran
af6f58981e vk: move internal frame count to common 2023-02-16 21:16:42 -05:00
chyyran
8ed244f6fa rt: clean up sampler sets 2023-02-16 18:19:38 -05:00
chyyran
0adf3505ec rt: mark frame and create APIs unsafe
This doesn't cause an API break in the C API but we don't actually make an attempt to verify that it's safe to access any of the device contexts.
2023-02-16 17:33:47 -05:00
chyyran
f42328280a tests: split tests into their own crates 2023-02-16 00:39:36 -05:00
chyyran
b81f415917 vk: fix lifetime issues with ash
Using `build` everywhere was causing miscompilations because of lifetimes leaking.
2023-02-15 22:57:20 -05:00
chyyran
2ca6aecfe4 cache: clean up cache api 2023-02-15 18:08:47 -05:00
chyyran
e7645a5592 rt: expose cache disable option in filter options 2023-02-15 18:08:47 -05:00
chyyran
604edfb78f cache: implement transparent shader object cache
supported objects:

- SPIR-V artifacts
- Validated DXIL artifacts
- DXBC artifacts
- OpenGL Program Binaries
- Vulkan Pipeline caches
- D3D12 CACHED_PIPELINE_STATE
2023-02-15 18:08:47 -05:00
chyyran
4978e1f24f vk: don't unwrap create_graphics_pipelines 2023-02-14 19:24:42 -05:00
chyyran
07fac4d1e9 rt: load luts with multiple threads 2023-02-14 02:56:06 -05:00
chyyran
0eac766685 capi: expose deferred API and make order consistent.
gotta get all these ABI breaks done before release.
2023-02-11 15:30:20 -05:00
chyyran
fa6cd87c60 vk/11/12: allow gpu-deferred creation of filter chains 2023-02-11 02:44:07 -05:00
chyyran
45314a61c5 vk: make internal frame count wrap 2023-02-11 00:35:13 -05:00
chyyran
3c15a3a523 rt: fix history framebuffer requirements and unify framebuffer initialization logic 2023-02-11 00:20:35 -05:00
chyyran
512a4c0050 rt: make runtimes thread safe and document thread safety guarantees 2023-02-10 03:20:59 -05:00
chyyran
2b250db353 capi: make _opt* structs more forwards compatible
yay another abi break 🙃
hopefully for the last time
2023-02-09 23:44:39 -05:00
chyyran
121209da10 fmt: clean up warnings 2023-02-09 21:06:58 -05:00
chyyran
009e740610 vk: use gpu-allocator for memory allocations 2023-02-09 18:14:55 -05:00
chyyran
5e99ddf73c vk/d3d12: recompile pipelines on incompatible output format.
This also involves changes to the C API, since we're breaking API anyways
might as well unify some type names. No breakages for D3D11.
2023-02-08 21:21:40 -05:00
chyyran
59e0b5da86 rt: unify render target logic 2023-02-07 23:14:39 -05:00
chyyran
06161b5aad rt: make scale framebuffers a lot nicer to use 2023-02-07 22:02:08 -05:00
chyyran
d9a97de131 rt: doc FilterPassMeta 2023-02-07 02:55:15 -05:00
chyyran
6d75dc5100 fmt: general format and clean up 2023-02-07 02:31:08 -05:00
chyyran
c8a1d4d196 rt: abstract framebuffer scaling into common code 2023-02-07 02:12:47 -05:00
chyyran
3eae38f815 fmt: cargo fmt 2023-02-06 21:56:30 -05:00
chyyran
3cdf3aa105 doc(d3d12): clean up docs for d3d12 2023-02-06 01:25:06 -05:00
chyyran
d32ad8e3b2 options: fix frame-direction docs 2023-02-06 00:26:27 -05:00
chyyran
3db89e5351 vk/11/12: bind VBO only once per frame to save on draw calls. 2023-02-06 00:23:37 -05:00
chyyran
fd48d88fdd dx12: use persistently bound buffers 2023-02-05 22:24:58 -05:00
chyyran
f5fe3e37ef rt(d3d11/vk): allow for parallel shader compilation
OpenGL is for obvious reasons incompatible, and for DX12 the graphics pipeline creation has to be on the main thread so there isn't that much gain to be had.
2023-02-05 19:53:45 -05:00
chyyran
b81b2b1d25 fmt: run clippy 2023-02-05 18:34:30 -05:00
chyyran
2d2ed22e9a fmt: run cargo fmt 2023-02-05 16:19:22 -05:00
chyyran
7d8c137083 rt: abstract reusable bindingmeta ops 2023-02-05 16:19:22 -05:00
chyyran
c28e5195c2 d3d12: texture infrastructure 2023-02-01 02:08:50 -05:00
chyyran
599c21e06a vk: fix bad imports 2023-01-31 01:27:37 -05:00
chyyran
82ad516db0 d3d11/vk: render intermediate passes with identity matrix 2023-01-31 00:53:55 -05:00
chyyran
18e1f758cd rt: apply filter settings before drawing frame 2023-01-30 19:30:23 -05:00
chyyran
da2fb7adca vk: make choice of render pass format dependent on the shader 2023-01-30 01:31:14 -05:00
chyyran
92caad292c runtime: scale output framebuffers according to the previous inputs rather than original size. 2023-01-29 21:26:11 -05:00
chyyran
2d6a967c7f d3d11: generate mipmaps for inputs if requested 2023-01-29 19:04:34 -05:00
chyyran
8b6481abc1 fmt: run clippy and rustfmt 2023-01-29 02:30:58 -05:00
chyyran
c3aecd336b vk: remove debug from hello triangle example 2023-01-29 01:25:22 -05:00
chyyran
b0dde6eda2 d3d11/vk: fix default mvp 2023-01-28 13:11:14 -05:00
chyyran
fb827b7c24 vk: reallow usage of render passes for environments where dynamic rendering is not available
This implementation is greatly simplified compared to the older implementation where framebuffers were attached to output targets. Instead, the graphics pipeline object will create new framebuffers on the fly. The suggestion is still to use dynamic rendering for best performance.
2023-01-25 23:45:10 -05:00
chyyran
ef8b72b220 reflect: use a marker trait to remove need for macro when spelling out compilation artifact opaque type 2023-01-19 18:44:08 -05:00
chyyran
261710d639 reflect: move GlslangCompilation up a level and remove intermediate modules in reflect::front 2023-01-19 01:06:17 -05:00
chyyran
b3dd378b5b reflect: simplify shaderpassmeta type declarations with a macro 2023-01-19 00:37:37 -05:00
chyyran
fc54c7f65c reflect: move compile_preset_passes from librashader-runtime into librashader-reflect 2023-01-18 21:58:13 -05:00
chyyran
4e51704e35 reflect: abstract away preset compilation 2023-01-18 20:56:08 -05:00