You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-04 17:04:49 +00:00
Avoid manual memory management of certain arrays in Vulkan RD
This commit is contained in:
@@ -38,7 +38,9 @@
|
||||
|
||||
#include <initializer_list>
|
||||
|
||||
template <class T, class U = uint32_t, bool force_trivial = false>
|
||||
// If tight, it grows strictly as much as needed.
|
||||
// Otherwise, it grows exponentially (the default and what you want in most cases).
|
||||
template <class T, class U = uint32_t, bool force_trivial = false, bool tight = false>
|
||||
class LocalVector {
|
||||
private:
|
||||
U count = 0;
|
||||
@@ -121,7 +123,7 @@ public:
|
||||
_FORCE_INLINE_ bool is_empty() const { return count == 0; }
|
||||
_FORCE_INLINE_ U get_capacity() const { return capacity; }
|
||||
_FORCE_INLINE_ void reserve(U p_size) {
|
||||
p_size = nearest_power_of_2_templated(p_size);
|
||||
p_size = tight ? p_size : nearest_power_of_2_templated(p_size);
|
||||
if (p_size > capacity) {
|
||||
capacity = p_size;
|
||||
data = (T *)memrealloc(data, capacity * sizeof(T));
|
||||
@@ -262,4 +264,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
template <class T, class U = uint32_t, bool force_trivial = false>
|
||||
using TightLocalVector = LocalVector<T, U, force_trivial, true>;
|
||||
|
||||
#endif // LOCAL_VECTOR_H
|
||||
|
||||
Reference in New Issue
Block a user