Unravel Engine C++ Reference
Loading...
Searching...
No Matches
vertex_buffer.cpp
Go to the documentation of this file.
1#include "vertex_buffer.h"
2
3namespace gfx
4{
5
7 const vertex_layout& _decl,
8 std::uint16_t _flags /*= BGFX_BUFFER_NONE*/)
9{
10 if(_mem == nullptr)
11 {
12 return;
13 }
15 {
16 handle_ = create_vertex_buffer(_mem, _decl, _flags);
17 return;
18 }
19 eviction::backing_buffer backing = eviction::make_backing(_mem->data, _mem->size);
20 handle_ = create_vertex_buffer(_mem, _decl, _flags);
21 if(is_valid())
22 {
23 make_evictable(backing->size(),
24 [backing, decl = _decl, flags = _flags](vertex_buffer& self) -> bool
25 {
26 const memory_view* mem = eviction::make_backing_ref(backing);
27 self.handle_ = create_vertex_buffer(mem, decl, flags);
28 return self.is_valid();
29 });
30 }
31}
32} // namespace gfx
void make_evictable(std::uint64_t gpu_bytes, std::function< bool(vertex_buffer &)> restore_fn, evict_class cls=evict_class::evictable)
auto is_supported() -> bool
Definition eviction.cpp:650
std::shared_ptr< std::vector< std::uint8_t > > backing_buffer
Definition eviction.h:18
auto make_backing(const void *data, std::uint32_t size) -> backing_buffer
Definition eviction.h:20
bgfx::VertexLayout vertex_layout
Definition vertex_decl.h:8
vertex_buffer_handle create_vertex_buffer(const memory_view *_mem, const vertex_layout &_decl, uint16_t _flags)
Definition graphics.cpp:510
bgfx::Memory memory_view
Definition graphics.h:23
vertex_buffer()=default