#include "gpu.h" VkFormat rtPixelFormatToVkFormat(rt_pixel_format format) { switch (format) { case RT_PIXEL_FORMAT_R8G8B8A8_UNORM: return VK_FORMAT_R8G8B8A8_UNORM; case RT_PIXEL_FORMAT_B8G8R8A8_UNORM: return VK_FORMAT_B8G8R8A8_UNORM; case RT_PIXEL_FORMAT_R8G8B8A8_SRGB: return VK_FORMAT_R8G8B8A8_SRGB; case RT_PIXEL_FORMAT_B8G8R8A8_SRGB: return VK_FORMAT_B8G8R8A8_SRGB; case RT_PIXEL_FORMAT_R8G8B8_UNORM: return VK_FORMAT_R8G8B8_UNORM; case RT_PIXEL_FORMAT_B8G8R8_UNORM: return VK_FORMAT_B8G8R8_UNORM; case RT_PIXEL_FORMAT_R8G8B8_SRGB: return VK_FORMAT_R8G8B8_SRGB; case RT_PIXEL_FORMAT_B8G8R8_SRGB: return VK_FORMAT_B8G8R8_SRGB; case RT_PIXEL_FORMAT_DEPTH24_STENCIL8: return VK_FORMAT_D24_UNORM_S8_UINT; case RT_PIXEL_FORMAT_DEPTH32: return VK_FORMAT_D32_SFLOAT; default: return VK_FORMAT_UNDEFINED; } } VkSampleCountFlagBits rtSampleCountToFlags(unsigned int count) { /* Limit to what the gpu supports */ VkSampleCountFlags counts = g_gpu.phys_device_props.limits.framebufferColorSampleCounts & g_gpu.phys_device_props.limits.framebufferDepthSampleCounts & g_gpu.phys_device_props.limits.sampledImageColorSampleCounts & g_gpu.phys_device_props.limits.sampledImageDepthSampleCounts; while (count > 1) { if ((counts & count) == 0) count >>= 1; else break; } return (VkSampleCountFlagBits)count; } VkQueue rtGetQueue(rt_gpu_queue queue) { switch (queue) { case RT_GRAPHICS_QUEUE: return g_gpu.graphics_queue; case RT_COMPUTE_QUEUE: return g_gpu.compute_queue; case RT_TRANSFER_QUEUE: return g_gpu.transfer_queue; default: return VK_NULL_HANDLE; } } const char *rtVkFormatToString(VkFormat format) { switch (format) { case VK_FORMAT_R8G8B8A8_UNORM: return "R8G8B8A8_UNORM"; case VK_FORMAT_B8G8R8A8_UNORM: return "B8G8R8A8_UNORM"; case VK_FORMAT_R8G8B8A8_SRGB: return "R8G8B8A8_SRGB"; case VK_FORMAT_B8G8R8A8_SRGB: return "B8G8R8A8_SRGB"; case VK_FORMAT_R8G8B8_UNORM: return "R8G8B8_UNORM"; case VK_FORMAT_B8G8R8_UNORM: return "B8G8R8_UNORM"; case VK_FORMAT_R8G8B8_SRGB: return "R8G8B8_SRGB"; case VK_FORMAT_B8G8R8_SRGB: return "B8G8R8_SRGB"; case VK_FORMAT_D24_UNORM_S8_UINT: return "D24_UNORM_S8_UINT"; case VK_FORMAT_D32_SFLOAT: return "D32_SFLOAT"; default: return "UNDEFINED"; } }