MCPcopy Create free account
hub / github.com/defold/defold / CreateTexture

Function CreateTexture

engine/graphics/src/vulkan/graphics_vulkan_device.cpp:816–945  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

814 }
815
816 VkResult CreateTexture(
817 VkPhysicalDevice vk_physical_device,
818 VkDevice vk_device,
819 uint32_t imageWidth,
820 uint32_t imageHeight,
821 uint32_t imageDepth,
822 uint32_t imageLayers,
823 uint16_t imageMips,
824 VkSampleCountFlagBits vk_sample_count,
825 VkFormat vk_format,
826 VkImageTiling vk_tiling,
827 VkImageUsageFlags vk_usage,
828 VkMemoryPropertyFlags vk_memory_flags,
829 VkImageAspectFlags vk_aspect,
830 VulkanTexture* textureOut)
831 {
832 DeviceBuffer& device_buffer = textureOut->m_DeviceBuffer;
833 TextureType tex_type = textureOut->m_Base.m_Type;
834
835 VkImageViewType vk_view_type = VK_IMAGE_VIEW_TYPE_2D;
836
837 VkImageCreateInfo vk_image_create_info = {};
838 vk_image_create_info.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
839 vk_image_create_info.imageType = VK_IMAGE_TYPE_2D;
840 vk_image_create_info.extent.width = imageWidth;
841 vk_image_create_info.extent.height = imageHeight;
842 vk_image_create_info.extent.depth = imageDepth;
843 vk_image_create_info.mipLevels = imageMips;
844 vk_image_create_info.arrayLayers = imageLayers;
845 vk_image_create_info.format = vk_format;
846 vk_image_create_info.tiling = vk_tiling;
847 vk_image_create_info.initialLayout = textureOut->m_ImageLayout[0];
848 vk_image_create_info.usage = vk_usage;
849 vk_image_create_info.samples = vk_sample_count;
850 vk_image_create_info.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
851 vk_image_create_info.flags = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT;
852
853 if (tex_type == TEXTURE_TYPE_CUBE_MAP)
854 {
855 assert(imageLayers == 6);
856 vk_image_create_info.flags |= VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT;
857 vk_view_type = VK_IMAGE_VIEW_TYPE_CUBE;
858 }
859 else if (tex_type == TEXTURE_TYPE_2D_ARRAY)
860 {
861 assert(imageLayers > 0);
862 vk_view_type = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
863 }
864 else if (tex_type == TEXTURE_TYPE_3D || tex_type == TEXTURE_TYPE_IMAGE_3D || tex_type == TEXTURE_TYPE_TEXTURE_3D)
865 {
866 vk_image_create_info.imageType = VK_IMAGE_TYPE_3D;
867 vk_view_type = VK_IMAGE_VIEW_TYPE_3D;
868 }
869
870 VkResult res = vkCreateImage(vk_device, &vk_image_create_info, 0, &textureOut->m_Handle.m_Image);
871 if (res != VK_SUCCESS)
872 {
873 return res;

Callers 6

UpdateSwapChainFunction · 0.70
VulkanNewRenderTargetFunction · 0.70
VulkanSetTextureInternalFunction · 0.70

Calls 3

GetMemoryTypeIndexFunction · 0.85
DestroyTextureFunction · 0.70
assertFunction · 0.50

Tested by

no test coverage detected