shader: track buffer liveness and offsets by resource count

Co-authored-by: fxpw <fxpw@outlook.com>
This commit is contained in:
nmzik
2026-10-14 21:11:14 +02:00
parent 2f6ee0e91d
commit b24ce3440d
7 changed files with 28 additions and 21 deletions
@@ -212,9 +212,8 @@ void DefineDescriptors(EmitterState& state) {
auto& bindings = state.program.bindings;
auto& counts = bindings.descriptor_counts;
auto& buffer_count = counts[static_cast<size_t>(Kind::Buffers)];
for (uint32_t index = 0; index < info.buffers.size(); ++index) {
info.buffers[index].descriptor_index = (info.live_buffers & (uint64_t{1} << index)) != 0
? buffer_count++ : UINT32_MAX;
for (auto& buffer: info.buffers) {
buffer.descriptor_index = buffer.live ? buffer_count++ : UINT32_MAX;
}
std::array<const IR::ImageResource*, IR::ImageBindingCount> image_types {};
for (auto& image: info.images) {