diff options
Diffstat (limited to 'video.cpp')
-rw-r--r-- | video.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -3900,3 +3900,41 @@ Vram_Allocator::Allocation Vram_Allocator::alloc( void Vram_Allocator::free(Allocation& alloc) { alloc.chunk->free = true; } + +void Staged_Buffer::init( + Device* dev, + const char* name, + int s, + int flags +) { + size = s; + stage = dev->create_buffer( + name, + size, + Buffer_Flags::copy_src | + Buffer_Flags::cpu_readwrite + ); + gpuonly = dev->create_buffer( + name, + size, + Buffer_Flags::copy_dst | + flags + ); +} + +void Staged_Buffer::destroy(Device* dev) { + dev->destroy_buffer(stage); + dev->destroy_buffer(gpuonly); +} + +void* Staged_Buffer::map(Device* dev) { + return dev->map_buffer(stage, 0, size); +} + +void Staged_Buffer::unmap(Device* dev) { + dev->unmap_buffer(stage); +} + +void Staged_Buffer::update(Context& ctx) { + ctx.copy(gpuonly, stage); +} |