26 class rv_InstanceData;
31 class RV_VKCommandPool;
33 class RV_VKCommandBufferAllocator;
35 class RV_VKMemAllocator;
50 static bool hasInstance();
52 static void destroyInstance();
55 static void exitCallback(
void*);
58 static void addPostCreateCB(
bool (*cb)(
RV_Instance*));
59 static bool hasPostCreateCBs();
64 static void addPreDestroyCB(
bool (*cb)(
RV_Instance*));
65 static bool hasPreDestroyCBs();
89 static void addExtraDeviceExtension(
92 exint struct_size_bytes = 0);
97 static bool hasExtraDeviceExtension(
100 exint feature_struct_size_bytes = 0);
104 static void addExtraInstanceExtension(
const char* ext_name);
122 bool initializeDevice();
125 VkDevice getDevice();
127 VkPhysicalDevice getPhysicalDevice();
129 VkInstance getVkInst();
141 void getDeviceUUID(
uint8 (&uuid)[16])
const;
153 static uint32_t getInstanceVersion();
156 uint32_t getDeviceVersion();
163 static bool usingDebugValidation();
166 static bool usingVulkanMultithreading();
169 int getMaxColorSamples()
const;
172 int getMaxDepthSamples()
const;
175 int getMaxTextureSize2D()
const;
178 int getMaxTextureSize3D()
const;
181 float getLineWidthGranularity()
const;
187 float getPointSizeGranularity()
const;
196 bool extEnabled(
const char* vk_ext_name )
const;
202 bool getFeatureStruct(
204 exint feature_struct_size_bytes)
const;
207 bool useLinearTilingForGLInterop()
const;
210 bool supportsSampleLocations(
int aa)
const;
213 void waitDeviceIdle();
231 bool validateImage(
RV_ResourceID id,
bool allow_pending_delete =
false)
const;
236 bool validateBuffer(
RV_ResourceID id,
bool allow_pending_delete =
false)
const;
241 bool validateAccelStruct(
RV_ResourceID id,
bool allow_pending_delete =
false)
const;
246 bool validateSet(
RV_ResourceID id,
bool allow_pending_delete =
false)
const;
250 void printIDs()
const;
GLenum GLuint GLenum GLsizei const GLchar * buf
RV_VKMemAllocator & getMemAllocator()
Our Vulkan memory allocator implementation.
RV_VKQueue & getGraphicsQueue()
Main Queue supporting graphics, compute and transfer.
RV_DescriptorAllocator & getDescAllocator()
Our Vulkan descriptor set allocator.
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
constexpr auto set(type rhs) -> int
const UT_StringHolder & deviceName() const
std::function< T > UT_Function
Handle to the main interface of Vulkan.
UT_Function< void(RV_Instance *)> RenderCallback
RV_VKExt * getExt()
Object containing function pointers to Vulkan extensions.