From 352958f031106f15f5e3b4d8b83084792ffcaf63 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Tue, 21 Apr 2026 21:07:27 -0500 Subject: [PATCH] implement support for loading textures from uncompressed TGA files --- Makefile | 3 +- .../eidelwind/0_EidelWindTextureTest.dds | Bin 1398276 -> 0 bytes include/dds/validate.h | 14 + include/tga/tga.h | 43 +++ include/vulkan_helper.h | 11 + src/collada/scene/vulkan.cpp | 39 ++- src/tga/tga.cpp | 25 ++ src/vulkan_helper.cpp | 286 ++++++++++++------ 8 files changed, 323 insertions(+), 98 deletions(-) delete mode 100644 data/scenes/eidelwind/0_EidelWindTextureTest.dds create mode 100644 include/tga/tga.h create mode 100644 src/tga/tga.cpp diff --git a/Makefile b/Makefile index e622c54..f9bd3c9 100644 --- a/Makefile +++ b/Makefile @@ -25,7 +25,7 @@ CFLAGS += -I./data CFLAGS += -I../SDL3-dist/include CFLAGS += -fpic -#FLAGS += -fstack-protector -fstack-protector-all -fno-omit-frame-pointer -fsanitize=address +FLAGS += -fstack-protector -fstack-protector-all -fno-omit-frame-pointer -fsanitize=address LDFLAGS += -lm ifeq ($(UNAME),Linux) @@ -42,6 +42,7 @@ OBJS = \ src/file.o \ src/pack.o \ src/dds/validate.o \ + src/tga/tga.o \ src/vulkan_helper.o \ src/collada/scene/vulkan.o \ src/collada/scene.o \ diff --git a/data/scenes/eidelwind/0_EidelWindTextureTest.dds b/data/scenes/eidelwind/0_EidelWindTextureTest.dds deleted file mode 100644 index 7113f8bda155a9487a73813be2b0c018eba61319..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1398276 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�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 + +#define PACKED __attribute__((packed)) + +namespace tga { + struct PACKED header { + uint8_t idLength; + uint8_t colorMapType; + uint8_t imageTypeCode; + struct PACKED { + uint16_t origin; + uint16_t length; + uint8_t depth; + } colorMap; + struct PACKED { + uint16_t xOrigin; + uint16_t yOrigin; + uint16_t width; + uint16_t height; + uint8_t bitsPerPixel; + } image; + uint8_t descriptor; + }; + static_assert((sizeof (header)) == 18); + + header const * validate(void const * data, uint32_t size, void ** outData, uint32_t * outSize); + + static inline bool isTGAExtension(const char * filename, size_t length) + { + char a = filename[length - 4]; + char b = filename[length - 3]; + char c = filename[length - 2]; + char d = filename[length - 1]; + + return + (a == '.') && + (b == 't' || b == 'T') && + (c == 'g' || c == 'G') && + (d == 'a' || d == 'A'); + } +} + +#undef PACKED diff --git a/include/vulkan_helper.h b/include/vulkan_helper.h index e3fac96..9b3be79 100644 --- a/include/vulkan_helper.h +++ b/include/vulkan_helper.h @@ -62,3 +62,14 @@ void createImageFromFilenameDDS(VkDevice device, VkImage * outImage, VkDeviceMemory * outMemory, VkImageView * outImageView); + +void createImageFromFilenameTGA(VkDevice device, + VkQueue queue, + VkCommandBuffer commandBuffer, + VkFence fence, + VkDeviceSize nonCoherentAtomSize, + VkPhysicalDeviceMemoryProperties const & physicalDeviceMemoryProperties, + char const * const filename, + VkImage * outImage, + VkDeviceMemory * outMemory, + VkImageView * outImageView); diff --git a/src/collada/scene/vulkan.cpp b/src/collada/scene/vulkan.cpp index 9338882..7f14243 100644 --- a/src/collada/scene/vulkan.cpp +++ b/src/collada/scene/vulkan.cpp @@ -13,6 +13,7 @@ #include "vulkan_helper.h" #include "dds/validate.h" #include "dds/vulkan.h" +#include "tga/tga.h" #include "check.h" #include "new.h" @@ -670,16 +671,34 @@ namespace collada::scene { images = NewM(descriptor->images_count); for (int i = 0; i < descriptor->images_count; i++) { - createImageFromFilenameDDS(device, - queue, - commandBuffer, - fence, - physicalDeviceProperties.limits.nonCoherentAtomSize, - physicalDeviceMemoryProperties, - descriptor->images[i]->uri, - &images[i].image, - &images[i].memory, - &images[i].imageView); + char const * filename = descriptor->images[i]->uri; + size_t length = strlen(filename); + if (dds::isDDSExtension(filename, length)) { + createImageFromFilenameDDS(device, + queue, + commandBuffer, + fence, + physicalDeviceProperties.limits.nonCoherentAtomSize, + physicalDeviceMemoryProperties, + filename, + &images[i].image, + &images[i].memory, + &images[i].imageView); + } else if (tga::isTGAExtension(filename, length)) { + createImageFromFilenameTGA(device, + queue, + commandBuffer, + fence, + physicalDeviceProperties.limits.nonCoherentAtomSize, + physicalDeviceMemoryProperties, + filename, + &images[i].image, + &images[i].memory, + &images[i].imageView); + } else { + fprintf(stderr, "filename: %s\n", filename); + ASSERT(false, "invalid image filename extension"); + } } // cleanup diff --git a/src/tga/tga.cpp b/src/tga/tga.cpp new file mode 100644 index 0000000..ac58e7b --- /dev/null +++ b/src/tga/tga.cpp @@ -0,0 +1,25 @@ +#include +#include + +#include "tga/tga.h" + +namespace tga { + header const * validate(void const * data, uint32_t size, void ** outData, uint32_t * outSize) + { + header const * const tga = (tga::header const *)data; + + assert(tga->colorMapType == 0); + assert(tga->imageTypeCode == 2); + assert(tga->image.xOrigin == 0); + assert(tga->image.yOrigin == 0); + assert(tga->image.bitsPerPixel == 32); + + + uint32_t bytesPerPixel = tga->image.bitsPerPixel / 8; + size_t imageOffset = (sizeof (header)) + tga->idLength; + *outData = (void *)(((size_t)data) + imageOffset); + *outSize = tga->image.width * tga->image.width * bytesPerPixel; + + return tga; + } +} diff --git a/src/vulkan_helper.cpp b/src/vulkan_helper.cpp index fc1dba0..2ae9f45 100644 --- a/src/vulkan_helper.cpp +++ b/src/vulkan_helper.cpp @@ -13,6 +13,7 @@ #include "dds/validate.h" #include "dds/vulkan.h" +#include "tga/tga.h" #include "vulkan_helper.h" @@ -115,85 +116,25 @@ VkDeviceSize allocateFromMemoryRequirements2(VkDevice device, return memoryAllocateInfo.allocationSize; } -void createImageFromFilenameDDS(VkDevice device, - VkQueue queue, - VkCommandBuffer commandBuffer, - VkFence fence, - VkDeviceSize nonCoherentAtomSize, - VkPhysicalDeviceMemoryProperties const & physicalDeviceMemoryProperties, - char const * const filename, - VkImage * outImage, - VkDeviceMemory * outMemory, - VkImageView * outImageView) +// ddsFile->header.dwWidth +// ddsFile->header.dwHeight +// ddsFile->header.dwMipMapCount +// uint32_t * mipOffsets; + +void textureTransfer(VkDevice device, + VkQueue queue, + VkCommandBuffer commandBuffer, + VkFence fence, + VkDeviceSize nonCoherentAtomSize, + VkPhysicalDeviceMemoryProperties const & physicalDeviceMemoryProperties, + uint32_t imageDataSize, + void * imageData, + VkImage image, + uint32_t width, + uint32_t height, + uint32_t levelCount, + uint32_t * levelOffsets) { - uint32_t imageSize; - void const * imageStart = file::open(filename, &imageSize); - void * imageData; - uint32_t * mipOffsets; - uint32_t imageDataSize; - DDS_FILE const * ddsFile = dds::validate(imageStart, imageSize, &mipOffsets, &imageData, &imageDataSize); - - VkFormat format = dds::dxgi_to_vulkan(ddsFile->header10.dxgiFormat); - - // image - - VkImage image; - VkImageCreateInfo imageCreateInfo{ - .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, - .imageType = VK_IMAGE_TYPE_2D, - .format = format, - .extent = { - .width = ddsFile->header.dwWidth, - .height = ddsFile->header.dwHeight, - .depth = 1 - }, - .mipLevels = ddsFile->header.dwMipMapCount, - .arrayLayers = 1, - .samples = VK_SAMPLE_COUNT_1_BIT, - .tiling = VK_IMAGE_TILING_OPTIMAL, - .usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, - .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED - }; - VK_CHECK(vkCreateImage(device, &imageCreateInfo, nullptr, &image)); - *outImage = image; - - // image view - - VkDeviceMemory imageMemory; - VkMemoryRequirements imageMemoryRequirements; - vkGetImageMemoryRequirements(device, image, &imageMemoryRequirements); - VkMemoryPropertyFlags imageMemoryPropertyFlags{ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT }; - VkMemoryAllocateFlags imageMemoryAllocateFlags{ }; - VkDeviceSize stride; - allocateFromMemoryRequirements(device, - nonCoherentAtomSize, - physicalDeviceMemoryProperties, - imageMemoryRequirements, - imageMemoryPropertyFlags, - imageMemoryAllocateFlags, - 1, - &imageMemory, - &stride); - *outMemory = imageMemory; - VK_CHECK(vkBindImageMemory(device, image, imageMemory, 0)); - - VkImageView imageView; - VkImageViewCreateInfo textureViewCreateInfo{ - .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, - .image = image, - .viewType = VK_IMAGE_VIEW_TYPE_2D, - .format = format, - .subresourceRange{ - .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, - .levelCount = ddsFile->header.dwMipMapCount, - .layerCount = 1 - } - }; - VK_CHECK(vkCreateImageView(device, &textureViewCreateInfo, nullptr, &imageView)); - *outImageView = imageView; - - // texture transfer: source buffer - VkBuffer sourceBuffer{}; VkBufferCreateInfo sourceBufferCreateInfo{ .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, @@ -243,7 +184,7 @@ void createImageFromFilenameDDS(VkDevice device, .image = image, .subresourceRange = { .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, - .levelCount = ddsFile->header.dwMipMapCount, + .levelCount = levelCount, .layerCount = 1 } }; @@ -253,24 +194,23 @@ void createImageFromFilenameDDS(VkDevice device, .pImageMemoryBarriers = &imageBarrier }; vkCmdPipelineBarrier2(commandBuffer, &imageDependencyInfo); - VkBufferImageCopy * copyRegions = NewM(ddsFile->header.dwMipMapCount); - for (uint32_t level = 0; level < ddsFile->header.dwMipMapCount; level++) { + VkBufferImageCopy * copyRegions = NewM(levelCount); + for (uint32_t level = 0; level < levelCount; level++) { copyRegions[level] = { - .bufferOffset = mipOffsets[level], + .bufferOffset = levelOffsets[level], .imageSubresource{ .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, .mipLevel = level, .layerCount = 1 }, .imageExtent{ - .width = max(1u, ddsFile->header.dwWidth >> level), - .height = max(1u, ddsFile->header.dwHeight >> level), + .width = max(1u, width >> level), + .height = max(1u, height >> level), .depth = 1 }, }; } - vkCmdCopyBufferToImage(commandBuffer, sourceBuffer, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, ddsFile->header.dwMipMapCount, copyRegions); - free(mipOffsets); + vkCmdCopyBufferToImage(commandBuffer, sourceBuffer, image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, levelCount, copyRegions); free(copyRegions); VkImageMemoryBarrier2 readBarrier{ @@ -282,7 +222,7 @@ void createImageFromFilenameDDS(VkDevice device, .oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, .newLayout = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL, .image = image, - .subresourceRange = { .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, .levelCount = ddsFile->header.dwMipMapCount, .layerCount = 1 } + .subresourceRange = { .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, .levelCount = levelCount, .layerCount = 1 } }; VkDependencyInfo readDependencyInfo{ .sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO, @@ -305,3 +245,175 @@ void createImageFromFilenameDDS(VkDevice device, vkDestroyBuffer(device, sourceBuffer, nullptr); vkFreeMemory(device, sourceBufferMemory, nullptr); } + +void createImage(VkDevice device, + VkDeviceSize nonCoherentAtomSize, + VkPhysicalDeviceMemoryProperties const & physicalDeviceMemoryProperties, + VkFormat format, + uint32_t width, + uint32_t height, + uint32_t levelCount, + VkImage * outImage, + VkDeviceMemory * outMemory, + VkImageView * outImageView) +{ + // image + + VkImage image; + VkImageCreateInfo imageCreateInfo{ + .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, + .imageType = VK_IMAGE_TYPE_2D, + .format = format, + .extent = { + .width = width, + .height = height, + .depth = 1 + }, + .mipLevels = levelCount, + .arrayLayers = 1, + .samples = VK_SAMPLE_COUNT_1_BIT, + .tiling = VK_IMAGE_TILING_OPTIMAL, + .usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, + .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED + }; + VK_CHECK(vkCreateImage(device, &imageCreateInfo, nullptr, &image)); + *outImage = image; + + // image view + + VkDeviceMemory imageMemory; + VkMemoryRequirements imageMemoryRequirements; + vkGetImageMemoryRequirements(device, image, &imageMemoryRequirements); + VkMemoryPropertyFlags imageMemoryPropertyFlags{ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT }; + VkMemoryAllocateFlags imageMemoryAllocateFlags{ }; + VkDeviceSize stride; + allocateFromMemoryRequirements(device, + nonCoherentAtomSize, + physicalDeviceMemoryProperties, + imageMemoryRequirements, + imageMemoryPropertyFlags, + imageMemoryAllocateFlags, + 1, + &imageMemory, + &stride); + *outMemory = imageMemory; + VK_CHECK(vkBindImageMemory(device, image, imageMemory, 0)); + + VkImageView imageView; + VkImageViewCreateInfo textureViewCreateInfo{ + .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + .image = image, + .viewType = VK_IMAGE_VIEW_TYPE_2D, + .format = format, + .subresourceRange{ + .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, + .levelCount = levelCount, + .layerCount = 1 + } + }; + VK_CHECK(vkCreateImageView(device, &textureViewCreateInfo, nullptr, &imageView)); + *outImageView = imageView; +} + +void createImageFromFilenameDDS(VkDevice device, + VkQueue queue, + VkCommandBuffer commandBuffer, + VkFence fence, + VkDeviceSize nonCoherentAtomSize, + VkPhysicalDeviceMemoryProperties const & physicalDeviceMemoryProperties, + char const * const filename, + VkImage * outImage, + VkDeviceMemory * outMemory, + VkImageView * outImageView) +{ + uint32_t imageSize; + void const * imageStart = file::open(filename, &imageSize); + void * imageData; + uint32_t * levelOffsets; + uint32_t imageDataSize; + DDS_FILE const * ddsFile = dds::validate(imageStart, imageSize, &levelOffsets, &imageData, &imageDataSize); + + VkFormat format = dds::dxgi_to_vulkan(ddsFile->header10.dxgiFormat); + uint32_t width = ddsFile->header.dwWidth; + uint32_t height = ddsFile->header.dwHeight; + uint32_t levelCount = ddsFile->header.dwMipMapCount; + + createImage(device, + nonCoherentAtomSize, + physicalDeviceMemoryProperties, + format, + width, + height, + levelCount, + outImage, + outMemory, + outImageView); + + textureTransfer(device, + queue, + commandBuffer, + fence, + nonCoherentAtomSize, + physicalDeviceMemoryProperties, + imageDataSize, + imageData, + *outImage, + width, + height, + levelCount, + levelOffsets); + + free(levelOffsets); + // imageData is not malloc'ed, it is a pointer to file:: data, which is also not malloc'ed +} + +void createImageFromFilenameTGA(VkDevice device, + VkQueue queue, + VkCommandBuffer commandBuffer, + VkFence fence, + VkDeviceSize nonCoherentAtomSize, + VkPhysicalDeviceMemoryProperties const & physicalDeviceMemoryProperties, + char const * const filename, + VkImage * outImage, + VkDeviceMemory * outMemory, + VkImageView * outImageView) +{ + uint32_t imageSize; + void const * imageStart = file::open(filename, &imageSize); + void * imageData; + uint32_t imageDataSize; + tga::header const * tga = tga::validate(imageStart, imageSize, &imageData, &imageDataSize); + + VkFormat format = VK_FORMAT_B8G8R8A8_UNORM; + uint32_t width = tga->image.width; + uint32_t height = tga->image.height; + uint32_t levelCount = 1; + uint32_t levelOffset = 0; + + createImage(device, + nonCoherentAtomSize, + physicalDeviceMemoryProperties, + format, + width, + height, + levelCount, + outImage, + outMemory, + outImageView); + + textureTransfer(device, + queue, + commandBuffer, + fence, + nonCoherentAtomSize, + physicalDeviceMemoryProperties, + imageDataSize, + imageData, + *outImage, + width, + height, + levelCount, + &levelOffset); + + // imageData is not malloc'ed, it is a pointer to file:: data, which is also not malloc'ed +}