mirror of
https://github.com/gfx-rs/wgpu.git
synced 2025-12-08 21:26:17 +00:00
Fix buffer init in bundle.rs with mem::size_of::<wgt::DrawIndirectArgs>
This commit is contained in:
parent
4f5acba5fb
commit
822424e519
@ -57,7 +57,7 @@ use crate::{
|
|||||||
Label, LabelHelpers, LifeGuard, Stored, MAX_BIND_GROUPS,
|
Label, LabelHelpers, LifeGuard, Stored, MAX_BIND_GROUPS,
|
||||||
};
|
};
|
||||||
use arrayvec::ArrayVec;
|
use arrayvec::ArrayVec;
|
||||||
use std::{borrow::Cow, iter, ops::Range};
|
use std::{borrow::Cow, iter, mem, ops::Range};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
/// Describes a [`RenderBundleEncoder`].
|
/// Describes a [`RenderBundleEncoder`].
|
||||||
@ -393,7 +393,7 @@ impl RenderBundleEncoder {
|
|||||||
}
|
}
|
||||||
RenderCommand::MultiDrawIndirect {
|
RenderCommand::MultiDrawIndirect {
|
||||||
buffer_id,
|
buffer_id,
|
||||||
offset: _,
|
offset,
|
||||||
count: None,
|
count: None,
|
||||||
indexed: false,
|
indexed: false,
|
||||||
} => {
|
} => {
|
||||||
@ -410,11 +410,18 @@ impl RenderBundleEncoder {
|
|||||||
check_buffer_usage(buffer.usage, wgt::BufferUsage::INDIRECT)
|
check_buffer_usage(buffer.usage, wgt::BufferUsage::INDIRECT)
|
||||||
.map_pass_err(scope)?;
|
.map_pass_err(scope)?;
|
||||||
|
|
||||||
buffer_memory_init_actions.push(MemoryInitTrackerAction {
|
buffer_memory_init_actions.extend(
|
||||||
|
buffer
|
||||||
|
.initialization_status
|
||||||
|
.check(
|
||||||
|
offset..(offset + mem::size_of::<wgt::DrawIndirectArgs>() as u64),
|
||||||
|
)
|
||||||
|
.map(|range| MemoryInitTrackerAction {
|
||||||
id: buffer_id,
|
id: buffer_id,
|
||||||
range: 0..buffer.size,
|
range,
|
||||||
kind: MemoryInitKind::NeedsInitializedMemory,
|
kind: MemoryInitKind::NeedsInitializedMemory,
|
||||||
});
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
commands.extend(state.flush_vertices());
|
commands.extend(state.flush_vertices());
|
||||||
commands.extend(state.flush_binds());
|
commands.extend(state.flush_binds());
|
||||||
@ -422,7 +429,7 @@ impl RenderBundleEncoder {
|
|||||||
}
|
}
|
||||||
RenderCommand::MultiDrawIndirect {
|
RenderCommand::MultiDrawIndirect {
|
||||||
buffer_id,
|
buffer_id,
|
||||||
offset: _,
|
offset,
|
||||||
count: None,
|
count: None,
|
||||||
indexed: true,
|
indexed: true,
|
||||||
} => {
|
} => {
|
||||||
@ -440,12 +447,18 @@ impl RenderBundleEncoder {
|
|||||||
check_buffer_usage(buffer.usage, wgt::BufferUsage::INDIRECT)
|
check_buffer_usage(buffer.usage, wgt::BufferUsage::INDIRECT)
|
||||||
.map_pass_err(scope)?;
|
.map_pass_err(scope)?;
|
||||||
|
|
||||||
let stride = 4 * 4; // 4 integers, vertexCount, instanceCount, firstVertex, firstInstance
|
buffer_memory_init_actions.extend(
|
||||||
buffer_memory_init_actions.push(MemoryInitTrackerAction {
|
buffer
|
||||||
|
.initialization_status
|
||||||
|
.check(
|
||||||
|
offset..(offset + mem::size_of::<wgt::DrawIndirectArgs>() as u64),
|
||||||
|
)
|
||||||
|
.map(|range| MemoryInitTrackerAction {
|
||||||
id: buffer_id,
|
id: buffer_id,
|
||||||
range: 0..stride,
|
range,
|
||||||
kind: MemoryInitKind::NeedsInitializedMemory,
|
kind: MemoryInitKind::NeedsInitializedMemory,
|
||||||
});
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
commands.extend(state.index.flush());
|
commands.extend(state.index.flush());
|
||||||
commands.extend(state.flush_vertices());
|
commands.extend(state.flush_vertices());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user