working on getting vulkan_minimal_compute to run
[kazan.git] / vulkan-driver / src / buffer.rs
1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 // Copyright 2018 Jacob Lifshay
3 use api;
4 use handle::SharedHandle;
5
6 #[derive(Debug)]
7 pub struct BufferMemory {
8 pub device_memory: SharedHandle<api::VkDeviceMemory>,
9 pub offset: usize,
10 }
11
12 #[derive(Debug)]
13 pub struct Buffer {
14 pub size: usize,
15 pub memory: Option<BufferMemory>,
16 }
17
18 #[derive(Debug)]
19 pub struct BufferSlice {
20 pub buffer: SharedHandle<api::VkBuffer>,
21 pub offset: usize,
22 pub size: usize,
23 }
24
25 impl BufferSlice {
26 pub unsafe fn from(v: &api::VkDescriptorBufferInfo) -> Self {
27 let buffer = SharedHandle::from(v.buffer).unwrap();
28 assert!(v.offset < buffer.size as u64);
29 let offset = v.offset as usize;
30 let size = if v.range == api::VK_WHOLE_SIZE as u64 {
31 buffer.size - offset
32 } else {
33 assert!(v.range != 0);
34 assert!(v.range.checked_add(v.offset).unwrap() <= buffer.size as u64);
35 v.range as usize
36 };
37 Self {
38 buffer,
39 offset,
40 size,
41 }
42 }
43 }
44
45 #[derive(Debug)]
46 pub struct BufferView {}