quakeforge/include/QF/Vulkan/device.h

42 lines
1.1 KiB
C
Raw Normal View History

#ifndef __QF_Vulkan_device_h
#define __QF_Vulkan_device_h
#include "QF/Vulkan/qf_vid.h"
typedef struct qfv_devfuncs_s {
#define DEVICE_LEVEL_VULKAN_FUNCTION(name) PFN_##name name;
#define DEVICE_LEVEL_VULKAN_FUNCTION_FROM_EXTENSION(name,ext) PFN_##name name;
#include "QF/Vulkan/funclist.h"
} qfv_devfuncs_t;
2019-07-23 03:37:47 +00:00
typedef struct qfv_queue_s {
struct qfv_device_s *device;
2019-07-23 03:37:47 +00:00
uint32_t queueFamily;
2019-07-23 03:37:47 +00:00
VkQueue queue;
} qfv_queue_t;
struct qfv_instance_s;
typedef struct qfv_device_s {
VkDevice dev;
2020-02-06 10:04:28 +00:00
struct qfv_physdev_s *physDev;
qfv_devfuncs_t *funcs;
2019-07-23 03:37:47 +00:00
qfv_queue_t queue;
struct strset_s *enabled_extensions;
int (*extension_enabled) (struct qfv_device_s *inst,
const char *ext);
} qfv_device_t;
struct vulkan_ctx_s;
2019-07-12 15:36:21 +00:00
qfv_device_t *QFV_CreateDevice (struct vulkan_ctx_s *ctx,
const char **extensions);
void QFV_DestroyDevice (qfv_device_t *device);
int QFV_DeviceWaitIdle (qfv_device_t *device);
VkFormat QFV_FindSupportedFormat (qfv_device_t *device, VkImageTiling tiling,
VkFormatFeatureFlags features,
int numCandidates,
const VkFormat *candidates);
2019-07-23 03:27:57 +00:00
#endif//__QF_Vulkan_device_h