Skip to content

Commit ace75b8

Browse files
committed
Added new hints on sync
1 parent eb89871 commit ace75b8

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

src/content/docs/wiki/features.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,17 @@ slug: wiki/features
5252
- Very helpful to destroy things like staging or scratch buffers.
5353
- Necessary as it is not legal to destroy objects that are used in commands that are not yet submitted to the GPU.
5454

55+
## Modern Synchronization
56+
57+
- On daxas target hardware (RDNA3+, Turing, Arc+), image layout general is optimal for all access.
58+
- Daxa applies image layout general to all image operations (aside from present) and abstracts layout nearly completely (still exposes explicit undefined->general and general->present_src transitions).
59+
- Image barriers are simplified (no aspect, no subresource, no queue ownership transfer, no prev/post layout, simplified enum for layout transitions).
60+
- Instead of exposing queue ownership transfers via image barriers, images are tagged as either concurrent or exclusive access in creation.
61+
- Pipeline barrier cmd recorder calls automatically batch successive calls
62+
- Barriers match the Sync2 api of vulkan, pairing stage, access and resource for each barrier to allow for better driver hinting
63+
- Buffer sync is much simplified. As no hardware seems to benefit from any explicit buffer sync, buffers are always queue concurrent, have all (except a certain few) vulkan usage flags set and there are no explicit buffer memory barriers.
64+
- Timeline semaphores are first class in daxa, used extensively in the api such as the swapchain.
65+
5566
## Tiny Pipelines
5667

5768
- Pipelines are much simpler in Daxa compared to normal Vulkan, they are created with parameter structs that have sensible defaults set for all parameters.

src/content/docs/wiki/shader_integration.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ This can significantly reduce boilerplate, as for most images, only the default
8787

8888
> Daxa only supports separate images and samplers, so no combined image samplers. This simplifies the API and allows for more consistent HLSL support.
8989
90+
> Daxa uses general image layout for everyhing, the storage and sampled bindless descriptors for each image both assume general layout. This allows for simultaneous access of images as storage and sampled.
91+
9092
### Image Access in Glsl
9193

9294
The shader access works by transforming a `daxa_ImageViewId` with or without a `daxa_SamplerId` into a Glsl `texture`, `image`, or `sampler` locally.

0 commit comments

Comments
 (0)