mirror of
https://github.com/vulkano-rs/vulkano.git
synced 2025-02-22 03:52:32 +00:00
Fix panic for non-contiguous push constants ranges (#2654)
* Add failing test case for push_constant_ranges_disjoint * Fix failing test case for push_constant_ranges_disjoint
This commit is contained in:
parent
f498b746cb
commit
96c991ab7b
@ -196,16 +196,19 @@ impl PipelineLayout {
|
||||
stages |= range.stages;
|
||||
}
|
||||
}
|
||||
// finished all stages
|
||||
if stages.is_empty() {
|
||||
|
||||
if !stages.is_empty() {
|
||||
push_constant_ranges_disjoint.push(PushConstantRange {
|
||||
stages,
|
||||
offset: min_offset,
|
||||
size: max_offset - min_offset,
|
||||
});
|
||||
}
|
||||
|
||||
if max_offset == u32::MAX {
|
||||
break;
|
||||
}
|
||||
|
||||
push_constant_ranges_disjoint.push(PushConstantRange {
|
||||
stages,
|
||||
offset: min_offset,
|
||||
size: max_offset - min_offset,
|
||||
});
|
||||
// prepare for next range
|
||||
min_offset = max_offset;
|
||||
}
|
||||
@ -1403,6 +1406,39 @@ mod tests {
|
||||
},
|
||||
][..],
|
||||
),
|
||||
// input:
|
||||
// - `0..8`, stage=vertex
|
||||
// - `16..32`, stage=fragment
|
||||
//
|
||||
// output:
|
||||
// - `0..8`, stage=vertex
|
||||
// - `16..32`, stage=fragment
|
||||
(
|
||||
&[
|
||||
PushConstantRange {
|
||||
stages: ShaderStages::VERTEX,
|
||||
offset: 0,
|
||||
size: 8,
|
||||
},
|
||||
PushConstantRange {
|
||||
stages: ShaderStages::FRAGMENT,
|
||||
offset: 16,
|
||||
size: 16,
|
||||
},
|
||||
][..],
|
||||
&[
|
||||
PushConstantRange {
|
||||
stages: ShaderStages::VERTEX,
|
||||
offset: 0,
|
||||
size: 8,
|
||||
},
|
||||
PushConstantRange {
|
||||
stages: ShaderStages::FRAGMENT,
|
||||
offset: 16,
|
||||
size: 16,
|
||||
},
|
||||
][..],
|
||||
),
|
||||
];
|
||||
|
||||
let (device, _) = gfx_dev_and_queue!();
|
||||
|
Loading…
Reference in New Issue
Block a user