]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/bufferable.cpp
Add a flag to obtain an aligned size requirement from Bufferable
[libs/gl.git] / source / core / bufferable.cpp
index fcedc5becd666efb16ef780a73c4bc8fa24fe5c5..502c270c8f6bad09861841847e1dc71d70d006c7 100644 (file)
@@ -70,11 +70,20 @@ void Bufferable::change_buffer(Buffer *buf)
        }
 }
 
-size_t Bufferable::get_required_buffer_size() const
+size_t Bufferable::get_required_buffer_size(bool align) const
 {
        const Bufferable *last = this;
        for(; last->next_in_buffer; last=last->next_in_buffer) ;
-       return last->offset+last->get_data_size();
+       size_t size = last->offset+last->get_data_size();
+       if(align)
+       {
+               const Bufferable *first = this;
+               for(; first->prev_in_buffer; first=first->prev_in_buffer) ;
+               size_t alignment = first->get_alignment();
+               size += alignment-1;
+               size -= size%alignment;
+       }
+       return size;
 }
 
 void Bufferable::unlink_from_buffer()