From b86e97f67a07368877bd18501aebcbe80cf93118 Mon Sep 17 00:00:00 2001 From: tcmal Date: Sun, 25 Aug 2024 17:44:24 +0100 Subject: feat(skeleton): add memory pools added stock memory pools behind a feature gate refactored buffers to use them and to have better APIs. moved some util code out of builders::pipeline updated stockton-render for the changes deactivation is a WIP breaks UI drawing, fix WIP --- stockton-skeleton/src/texture/block.rs | 45 +++++++--------------------------- 1 file changed, 9 insertions(+), 36 deletions(-) (limited to 'stockton-skeleton/src/texture/block.rs') diff --git a/stockton-skeleton/src/texture/block.rs b/stockton-skeleton/src/texture/block.rs index 5ac3a94..1b195c2 100644 --- a/stockton-skeleton/src/texture/block.rs +++ b/stockton-skeleton/src/texture/block.rs @@ -1,21 +1,22 @@ use super::{loader::BlockRef, repo::BLOCK_SIZE}; -use crate::types::*; +use crate::{buffers::image::SampledImage, mem::MemoryPool, types::*}; use arrayvec::ArrayVec; -use rendy_memory::{Allocator, Block}; use std::{iter::once, mem::ManuallyDrop}; -pub struct TexturesBlock> { +/// A block of loaded textures +pub struct TexturesBlock { pub id: BlockRef, pub descriptor_set: ManuallyDrop, - pub imgs: ArrayVec<[LoadedImage; BLOCK_SIZE]>, + pub imgs: ArrayVec<[SampledImage; BLOCK_SIZE]>, } -impl> TexturesBlock { - pub fn deactivate>( +impl TexturesBlock { + /// Destroy all Vulkan objects. Must be called before dropping. + pub fn deactivate( mut self, device: &mut DeviceT, - tex_alloc: &mut T, + tex_alloc: &mut TP, desc_alloc: &mut DescriptorAllocator, ) { unsafe { @@ -27,36 +28,8 @@ impl> TexturesBlock { // Images self.imgs .drain(..) - .map(|x| x.deactivate(device, tex_alloc)) + .map(|x| x.deactivate_with_device_pool(device, tex_alloc)) .for_each(|_| {}); } } } - -pub struct LoadedImage> { - pub mem: ManuallyDrop, - pub img: ManuallyDrop, - pub img_view: ManuallyDrop, - pub sampler: ManuallyDrop, - pub row_size: usize, - pub height: u32, - pub width: u32, -} - -impl> LoadedImage { - pub fn deactivate>( - self, - device: &mut DeviceT, - alloc: &mut T, - ) { - unsafe { - use std::ptr::read; - - device.destroy_image_view(read(&*self.img_view)); - device.destroy_image(read(&*self.img)); - device.destroy_sampler(read(&*self.sampler)); - - alloc.free(device, read(&*self.mem)); - } - } -} -- cgit v1.2.3