mirror of
https://github.com/bevyengine/bevy
synced 2024-11-23 13:13:49 +00:00
remove gcd impl from bevy_render (#16419)
# Objective - bevy_render (poorly) implements gcd (which should be in bevy_math but theres not enough justification to have it there either anyways cus its just one usage) ## Solution - hardcoded LUT replacement for the one usage ## Testing - verified the alternative implementation of 4/gcd(4,x) agreed with original for 0..200
This commit is contained in:
parent
59863d3e8c
commit
1cb5604a17
1 changed files with 7 additions and 13 deletions
|
@ -955,12 +955,18 @@ impl ElementLayout {
|
|||
/// Creates an [`ElementLayout`] for mesh data of the given class (vertex or
|
||||
/// index) with the given byte size.
|
||||
fn new(class: ElementClass, size: u64) -> ElementLayout {
|
||||
const {
|
||||
assert!(4 == COPY_BUFFER_ALIGNMENT);
|
||||
}
|
||||
// this is equivalent to `4 / gcd(4,size)` but lets us not implement gcd.
|
||||
// ping @atlv if above assert ever fails (likely never)
|
||||
let elements_per_slot = [1, 4, 2, 4][size as usize & 3];
|
||||
ElementLayout {
|
||||
class,
|
||||
size,
|
||||
// Make sure that slot boundaries begin and end on
|
||||
// `COPY_BUFFER_ALIGNMENT`-byte (4-byte) boundaries.
|
||||
elements_per_slot: (COPY_BUFFER_ALIGNMENT / gcd(size, COPY_BUFFER_ALIGNMENT)) as u32,
|
||||
elements_per_slot,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1000,18 +1006,6 @@ impl GeneralSlab {
|
|||
}
|
||||
}
|
||||
|
||||
/// Returns the greatest common divisor of the two numbers.
|
||||
///
|
||||
/// <https://en.wikipedia.org/wiki/Euclidean_algorithm#Implementations>
|
||||
fn gcd(mut a: u64, mut b: u64) -> u64 {
|
||||
while b != 0 {
|
||||
let t = b;
|
||||
b = a % b;
|
||||
a = t;
|
||||
}
|
||||
a
|
||||
}
|
||||
|
||||
/// Returns a string describing the given buffer usages.
|
||||
fn buffer_usages_to_str(buffer_usages: BufferUsages) -> &'static str {
|
||||
if buffer_usages.contains(BufferUsages::VERTEX) {
|
||||
|
|
Loading…
Reference in a new issue