83 lines
2.6 KiB
C
83 lines
2.6 KiB
C
#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";
|
|
}
|
|
} |