quakeforge/include/QF/Vulkan/buffer.h
Bill Currie f4c0d0ebcf Implement buffer view creation
And rename memory allocation as it's buffer-specific.
2020-02-10 18:17:58 +09:00

58 lines
1.5 KiB
C

#ifndef __QF_Vulkan_buffer_h
#define __QF_Vulkan_buffer_h
typedef struct qfv_buffer_s {
struct qfv_device_s *device;
VkBuffer buffer;
} qfv_buffer_t;
typedef struct qfv_memory_s {
struct qfv_device_s *device;
VkDeviceMemory object;
} qfv_memory_t;
typedef struct qfv_buffertransition_s {
qfv_buffer_t *buffer;
VkAccessFlags srcAccess;
VkAccessFlags dstAccess;
uint32_t srcQueueFamily;
uint32_t dstQueueFamily;
VkDeviceSize offset;
VkDeviceSize size;
} qfv_buffertransition_t;
typedef struct qfv_bufferbarrierset_s {
struct qfv_device_s *device;
uint32_t numBarriers;
VkBufferMemoryBarrier *barriers;
} qfv_bufferbarrierset_t;
typedef struct qfv_bufferview_s {
struct qfv_device_s *device;
VkBufferView view;
qfv_buffer_t *buffer;
VkFormat format;
VkDeviceSize offset;
VkDeviceSize size;
} qfv_bufferview_t;
struct qfv_device_s;
qfv_buffer_t *QFV_CreateBuffer (struct qfv_device_s *device,
VkDeviceSize size,
VkBufferUsageFlags usage);
qfv_memory_t *QFV_AllocBufferMemory (qfv_buffer_t *buffer,
VkMemoryPropertyFlags properties,
VkDeviceSize size, VkDeviceSize offset);
int QFV_BindBufferMemory (qfv_buffer_t *buffer, qfv_memory_t *memory,
VkDeviceSize offset);
qfv_bufferbarrierset_t *
QFV_CreateBufferTransitionSet (qfv_buffertransition_t **transitions,
int numTransitions);
qfv_bufferview_t *QFV_CreateBufferView (qfv_buffer_t *buffer, VkFormat format,
VkDeviceSize offset, VkDeviceSize size);
#endif//__QF_Vulkan_buffer_h