From 8658c7646f82f3121a377a86331de26237d8407d Mon Sep 17 00:00:00 2001 From: Gregory Wells Date: Mon, 18 Aug 2025 20:11:41 -0400 Subject: [PATCH] add support for more formats in vulkan --- projects/apis/vulkan/src/textures/vulkan_texture.c | 11 +++++++++-- .../apis/vulkan/src/vulkan_surface/vulkan_surface.c | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/projects/apis/vulkan/src/textures/vulkan_texture.c b/projects/apis/vulkan/src/textures/vulkan_texture.c index 8820b28..a31a8f4 100644 --- a/projects/apis/vulkan/src/textures/vulkan_texture.c +++ b/projects/apis/vulkan/src/textures/vulkan_texture.c @@ -144,8 +144,15 @@ void VkCopyBufferToImage(VkGryphnBuffer buffer, VkGryphnImage image, gnExtent3D gnReturnCode createTexture(gnTexture texture, gnDevice device, const gnTextureInfo info) { texture->texture = malloc(sizeof(struct gnPlatformTexture_t)); size_t imageSize = info.extent.width * info.extent.height; - if (info.format == GN_FORMAT_BGRA8_SRGB) { imageSize *= 4; } - if (info.format == GN_FORMAT_RGBA8_SRGB) { imageSize *= 4; } + switch (info.format) { + case GN_FORMAT_NONE: imageSize *= 0; break; + case GN_FORMAT_BGRA8_SRGB: imageSize *= 4; break; + case GN_FORMAT_BGRA8: imageSize *= 4; break; + case GN_FORMAT_RGBA8: imageSize *= 4; break; + case GN_FORMAT_RGBA8_SRGB: imageSize *= 4; break; + case GN_FORMAT_D32S8_UINT: imageSize *= 5; break; + case GN_FORMAT_D24S8_UINT: imageSize *= 4; break; + }; texture->texture->size = imageSize; VkImageCreateInfo imageInfo = { .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, diff --git a/projects/apis/vulkan/src/vulkan_surface/vulkan_surface.c b/projects/apis/vulkan/src/vulkan_surface/vulkan_surface.c index 784b950..0a67d40 100644 --- a/projects/apis/vulkan/src/vulkan_surface/vulkan_surface.c +++ b/projects/apis/vulkan/src/vulkan_surface/vulkan_surface.c @@ -109,6 +109,7 @@ VkFormat vkGryphnFormatToVulkanFormat(gnImageFormat format) { case GN_FORMAT_NONE: return VK_FORMAT_UNDEFINED; case GN_FORMAT_BGRA8_SRGB: return VK_FORMAT_B8G8R8A8_SRGB; case GN_FORMAT_BGRA8: return VK_FORMAT_B8G8R8A8_UNORM; + case GN_FORMAT_RGBA8: return VK_FORMAT_R8G8B8A8_UNORM; case GN_FORMAT_RGBA8_SRGB: return VK_FORMAT_R8G8B8A8_SRGB; case GN_FORMAT_D32S8_UINT: return VK_FORMAT_D32_SFLOAT_S8_UINT; case GN_FORMAT_D24S8_UINT: return VK_FORMAT_D24_UNORM_S8_UINT;