diff options
Diffstat (limited to 'media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch')
-rw-r--r-- | media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch b/media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch deleted file mode 100644 index 1392510a23a7..000000000000 --- a/media-gfx/blender/files/blender-2.83.6-libmv_eigen_alignment.patch +++ /dev/null @@ -1,219 +0,0 @@ -diff --git a/intern/libmv/libmv/base/vector.h b/intern/libmv/libmv/base/vector.h -index bdc4392155c..300291c5679 100644 ---- a/intern/libmv/libmv/base/vector.h -+++ b/intern/libmv/libmv/base/vector.h -@@ -25,151 +25,18 @@ - #ifndef LIBMV_BASE_VECTOR_H - #define LIBMV_BASE_VECTOR_H - --#include <cstring> --#include <new> -+#include <vector> - - #include <Eigen/Core> - - namespace libmv { - --// A simple container class, which guarantees 16 byte alignment needed for most --// vectorization. Don't use this container for classes that cannot be copied --// via memcpy. --// FIXME: this class has some issues: --// - doesn't support iterators. --// - impede compatibility with code using STL. --// - the STL already provide support for custom allocators --// it could be replaced with a simple --// template <T> class vector : std::vector<T, aligned_allocator> {} declaration --// provided it doesn't break code relying on libmv::vector specific behavior --template <typename T, -- typename Allocator = Eigen::aligned_allocator<T> > --class vector { -- public: -- ~vector() { clear(); } -+// A simple container class, which guarantees the correct memory alignment -+// needed for most eigen vectorization. Don't use this container for classes -+// that cannot be copied via memcpy. - -- vector() { init(); } -- vector(int size) { init(); resize(size); } -- vector(int size, const T & val) { -- init(); -- resize(size); -- std::fill(data_, data_+size_, val); } -- -- // Copy constructor and assignment. -- vector(const vector<T, Allocator> &rhs) { -- init(); -- copy(rhs); -- } -- vector<T, Allocator> &operator=(const vector<T, Allocator> &rhs) { -- if (&rhs != this) { -- copy(rhs); -- } -- return *this; -- } -- -- /// Swaps the contents of two vectors in constant time. -- void swap(vector<T, Allocator> &other) { -- std::swap(allocator_, other.allocator_); -- std::swap(size_, other.size_); -- std::swap(capacity_, other.capacity_); -- std::swap(data_, other.data_); -- } -- -- T *data() const { return data_; } -- int size() const { return size_; } -- int capacity() const { return capacity_; } -- const T& back() const { return data_[size_ - 1]; } -- T& back() { return data_[size_ - 1]; } -- const T& front() const { return data_[0]; } -- T& front() { return data_[0]; } -- const T& operator[](int n) const { return data_[n]; } -- T& operator[](int n) { return data_[n]; } -- const T& at(int n) const { return data_[n]; } -- T& at(int n) { return data_[n]; } -- const T * begin() const { return data_; } -- const T * end() const { return data_+size_; } -- T * begin() { return data_; } -- T * end() { return data_+size_; } -- -- void resize(size_t size) { -- reserve(size); -- if (size > size_) { -- construct(size_, size); -- } else if (size < size_) { -- destruct(size, size_); -- } -- size_ = size; -- } -- -- void push_back(const T &value) { -- if (size_ == capacity_) { -- reserve(size_ ? 2 * size_ : 1); -- } -- new (&data_[size_++]) T(value); -- } -- -- void pop_back() { -- resize(size_ - 1); -- } -- -- void clear() { -- destruct(0, size_); -- deallocate(); -- init(); -- } -- -- void reserve(unsigned int size) { -- if (size > size_) { -- T *data = static_cast<T *>(allocate(size)); -- memcpy(static_cast<void *>(data), data_, sizeof(*data)*size_); -- allocator_.deallocate(data_, capacity_); -- data_ = data; -- capacity_ = size; -- } -- } -- -- bool empty() { -- return size_ == 0; -- } -- -- private: -- void construct(int start, int end) { -- for (int i = start; i < end; ++i) { -- new (&data_[i]) T; -- } -- } -- void destruct(int start, int end) { -- for (int i = start; i < end; ++i) { -- data_[i].~T(); -- } -- } -- void init() { -- size_ = 0; -- data_ = 0; -- capacity_ = 0; -- } -- -- void *allocate(int size) { -- return size ? allocator_.allocate(size) : 0; -- } -- -- void deallocate() { -- allocator_.deallocate(data_, size_); -- data_ = 0; -- } -- -- void copy(const vector<T, Allocator> &rhs) { -- resize(rhs.size()); -- for (int i = 0; i < rhs.size(); ++i) { -- (*this)[i] = rhs[i]; -- } -- } -- -- Allocator allocator_; -- size_t size_; -- size_t capacity_; -- T *data_; --}; -+template <class ElementType> -+using vector = std::vector<ElementType, Eigen::aligned_allocator<ElementType>>; - - } // namespace libmv - -diff --git a/intern/libmv/libmv/base/vector_test.cc b/intern/libmv/libmv/base/vector_test.cc -index f17718c3926..44b9a152148 100644 ---- a/intern/libmv/libmv/base/vector_test.cc -+++ b/intern/libmv/libmv/base/vector_test.cc -@@ -115,31 +115,24 @@ TEST_F(VectorTest, ResizeConstructsAndDestructsAsExpected) { - // Create one object. - v.resize(1); - EXPECT_EQ(1, v.size()); -- EXPECT_EQ(1, v.capacity()); - EXPECT_EQ(1, foo_construct_calls); -- EXPECT_EQ(0, foo_destruct_calls); - EXPECT_EQ(5, v[0].value); - - // Create two more. - v.resize(3); - EXPECT_EQ(3, v.size()); -- EXPECT_EQ(3, v.capacity()); - EXPECT_EQ(3, foo_construct_calls); -- EXPECT_EQ(0, foo_destruct_calls); - - // Delete the last one. - v.resize(2); - EXPECT_EQ(2, v.size()); - EXPECT_EQ(3, v.capacity()); - EXPECT_EQ(3, foo_construct_calls); -- EXPECT_EQ(1, foo_destruct_calls); - - // Delete the remaining two. - v.resize(0); - EXPECT_EQ(0, v.size()); -- EXPECT_EQ(3, v.capacity()); - EXPECT_EQ(3, foo_construct_calls); -- EXPECT_EQ(3, foo_destruct_calls); - } - - TEST_F(VectorTest, PushPopBack) { -@@ -192,15 +185,15 @@ TEST_F(VectorTest, STLFind) { - a.push_back(5); - a.push_back(3); - -- // Find return an int * -+ // Find returns an int * - EXPECT_EQ(std::find(&a[0], &a[2], 1) == &a[0], true); - EXPECT_EQ(std::find(&a[0], &a[2], 5) == &a[1], true); - EXPECT_EQ(std::find(&a[0], &a[2], 3) == &a[2], true); - -- // Find return a const int * -- EXPECT_EQ(std::find(a.begin(), a.end(), 1) == &a[0], true); -- EXPECT_EQ(std::find(a.begin(), a.end(), 5) == &a[1], true); -- EXPECT_EQ(std::find(a.begin(), a.end(), 3) == &a[2], true); -+ // Find returns an interator -+ EXPECT_EQ(std::find(a.begin(), a.end(), 1) == std::next(a.begin(), 0), true); -+ EXPECT_EQ(std::find(a.begin(), a.end(), 5) == std::next(a.begin(), 1), true); -+ EXPECT_EQ(std::find(a.begin(), a.end(), 3) == std::next(a.begin(), 2), true); - - // Search value that are not in the vector - EXPECT_EQ(std::find(a.begin(), a.end(), 0) == a.end(), true); |