Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion blade-graphics/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "blade-graphics"
version = "0.8.2"
version = "0.8.3"
edition = "2024"
description = "Graphics abstraction for Blade"
keywords = ["graphics"]
Expand Down
8 changes: 7 additions & 1 deletion blade-graphics/src/vulkan/descriptor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@ use ash::vk;
//TODO: replace by an abstraction in `gpu-descriptor`
// https://github.com/zakarumych/gpu-descriptor/issues/42
const COUNT_BASE: u32 = 16;
/// Budget for inline uniform block bytes per descriptor set.
/// The hardware max (e.g. 4 MiB on RADV) is far larger than actual
/// usage (typically 32–256 bytes of push constants per set).
/// Using the hardware max as the multiplier causes pool creation to
/// request more memory than the device has (e.g. 4096 sets × 4 MiB = 16 GiB).
const IUB_BYTES_PER_SET: u32 = 4096;

#[derive(Debug)]
pub struct DescriptorPool {
Expand Down Expand Up @@ -34,7 +40,7 @@ impl super::Device {
if self.max_inline_uniform_block_size > 0 {
descriptor_sizes.push(vk::DescriptorPoolSize {
ty: vk::DescriptorType::INLINE_UNIFORM_BLOCK_EXT,
descriptor_count: max_sets * self.max_inline_uniform_block_size,
descriptor_count: max_sets * IUB_BYTES_PER_SET,
});
}
// Always include UBO type: needed as fallback when bindings exceed
Expand Down
6 changes: 5 additions & 1 deletion docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
Changelog for *Blade* project

## blade-graphics-0.8.2 (4 Apr 2026)
## blade-graphics-0.8.3 (17 Apr 2026)

- vk: fix descriptor over-allocation for uniform data

## blade-graphics-0.8.2 (14 Apr 2026)

- add `ComputeCommandEncoder::barrier()` for inline compute-to-compute synchronization within a pass
- enable `naga::valid::Capabilities::SUBGROUP` for shader validation
Expand Down
Loading