mirror of
https://github.com/gfx-rs/wgpu.git
synced 2024-11-25 08:13:27 +00:00
fix: check for device mismatch in create_{render,compute}_pass
This commit is contained in:
parent
2e46a6c9c9
commit
5936fe58f4
@ -63,6 +63,7 @@ Bottom level categories:
|
|||||||
#### General
|
#### General
|
||||||
|
|
||||||
- Ensure that `Features::TIMESTAMP_QUERY` is set when using timestamp writes in render and compute passes. By @ErichDonGubler in [#6497](https://github.com/gfx-rs/wgpu/pull/6497).
|
- Ensure that `Features::TIMESTAMP_QUERY` is set when using timestamp writes in render and compute passes. By @ErichDonGubler in [#6497](https://github.com/gfx-rs/wgpu/pull/6497).
|
||||||
|
- Check for device mismatches when beginning render and compute passes. By @ErichDonGubler in [#6497](https://github.com/gfx-rs/wgpu/pull/6497).
|
||||||
|
|
||||||
## 23.0.0 (2024-10-25)
|
## 23.0.0 (2024-10-25)
|
||||||
|
|
||||||
|
@ -308,6 +308,14 @@ impl Global {
|
|||||||
};
|
};
|
||||||
|
|
||||||
arc_desc.timestamp_writes = if let Some(tw) = desc.timestamp_writes {
|
arc_desc.timestamp_writes = if let Some(tw) = desc.timestamp_writes {
|
||||||
|
let query_set = match hub.query_sets.get(tw.query_set).get() {
|
||||||
|
Ok(query_set) => query_set,
|
||||||
|
Err(e) => return make_err(e.into(), arc_desc),
|
||||||
|
};
|
||||||
|
match query_set.same_device(&cmd_buf.device) {
|
||||||
|
Ok(()) => (),
|
||||||
|
Err(e) => return make_err(e.into(), arc_desc),
|
||||||
|
}
|
||||||
match cmd_buf
|
match cmd_buf
|
||||||
.device
|
.device
|
||||||
.require_features(wgt::Features::TIMESTAMP_QUERY)
|
.require_features(wgt::Features::TIMESTAMP_QUERY)
|
||||||
@ -316,11 +324,6 @@ impl Global {
|
|||||||
Err(e) => return make_err(e.into(), arc_desc),
|
Err(e) => return make_err(e.into(), arc_desc),
|
||||||
}
|
}
|
||||||
|
|
||||||
let query_set = match hub.query_sets.get(tw.query_set).get() {
|
|
||||||
Ok(query_set) => query_set,
|
|
||||||
Err(e) => return make_err(e.into(), arc_desc),
|
|
||||||
};
|
|
||||||
|
|
||||||
Some(ArcPassTimestampWrites {
|
Some(ArcPassTimestampWrites {
|
||||||
query_set,
|
query_set,
|
||||||
beginning_of_pass_write_index: tw.beginning_of_pass_write_index,
|
beginning_of_pass_write_index: tw.beginning_of_pass_write_index,
|
||||||
|
@ -1358,9 +1358,11 @@ impl Global {
|
|||||||
}) = color_attachment
|
}) = color_attachment
|
||||||
{
|
{
|
||||||
let view = texture_views.get(*view_id).get()?;
|
let view = texture_views.get(*view_id).get()?;
|
||||||
|
view.same_device(device)?;
|
||||||
|
|
||||||
let resolve_target = if let Some(resolve_target_id) = resolve_target {
|
let resolve_target = if let Some(resolve_target_id) = resolve_target {
|
||||||
let rt_arc = texture_views.get(*resolve_target_id).get()?;
|
let rt_arc = texture_views.get(*resolve_target_id).get()?;
|
||||||
|
rt_arc.same_device(device)?;
|
||||||
|
|
||||||
Some(rt_arc)
|
Some(rt_arc)
|
||||||
} else {
|
} else {
|
||||||
@ -1382,6 +1384,7 @@ impl Global {
|
|||||||
arc_desc.depth_stencil_attachment =
|
arc_desc.depth_stencil_attachment =
|
||||||
if let Some(depth_stencil_attachment) = desc.depth_stencil_attachment {
|
if let Some(depth_stencil_attachment) = desc.depth_stencil_attachment {
|
||||||
let view = texture_views.get(depth_stencil_attachment.view).get()?;
|
let view = texture_views.get(depth_stencil_attachment.view).get()?;
|
||||||
|
view.same_device(device)?;
|
||||||
|
|
||||||
Some(ArcRenderPassDepthStencilAttachment {
|
Some(ArcRenderPassDepthStencilAttachment {
|
||||||
view,
|
view,
|
||||||
@ -1393,9 +1396,10 @@ impl Global {
|
|||||||
};
|
};
|
||||||
|
|
||||||
arc_desc.timestamp_writes = if let Some(tw) = desc.timestamp_writes {
|
arc_desc.timestamp_writes = if let Some(tw) = desc.timestamp_writes {
|
||||||
device.require_features(wgt::Features::TIMESTAMP_QUERY)?;
|
|
||||||
|
|
||||||
let query_set = query_sets.get(tw.query_set).get()?;
|
let query_set = query_sets.get(tw.query_set).get()?;
|
||||||
|
query_set.same_device(device)?;
|
||||||
|
|
||||||
|
device.require_features(wgt::Features::TIMESTAMP_QUERY)?;
|
||||||
|
|
||||||
Some(ArcPassTimestampWrites {
|
Some(ArcPassTimestampWrites {
|
||||||
query_set,
|
query_set,
|
||||||
@ -1409,6 +1413,7 @@ impl Global {
|
|||||||
arc_desc.occlusion_query_set =
|
arc_desc.occlusion_query_set =
|
||||||
if let Some(occlusion_query_set) = desc.occlusion_query_set {
|
if let Some(occlusion_query_set) = desc.occlusion_query_set {
|
||||||
let query_set = query_sets.get(occlusion_query_set).get()?;
|
let query_set = query_sets.get(occlusion_query_set).get()?;
|
||||||
|
query_set.same_device(device)?;
|
||||||
|
|
||||||
Some(query_set)
|
Some(query_set)
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user