[vulkan] Allow images to be created initialized

Needed for loaded textures.
This commit is contained in:
Bill Currie 2021-01-10 15:26:09 +09:00
parent e7106cce9e
commit ef817a5cbf
3 changed files with 9 additions and 6 deletions

View File

@ -37,7 +37,8 @@ VkImage QFV_CreateImage (struct qfv_device_s *device, int cubemap,
uint32_t num_mipmaps,
uint32_t num_layers,
VkSampleCountFlagBits samples,
VkImageUsageFlags usage_scenarios);
VkImageUsageFlags usage_scenarios,
int initialized);
VkDeviceMemory QFV_AllocImageMemory (struct qfv_device_s *device,
VkImage image,

View File

@ -69,7 +69,8 @@ QFV_CreateImage (qfv_device_t *device, int cubemap,
uint32_t num_mipmaps,
uint32_t num_layers,
VkSampleCountFlagBits samples,
VkImageUsageFlags usage_scenarios)
VkImageUsageFlags usage_scenarios,
int initialized)
{
VkDevice dev = device->dev;
qfv_devfuncs_t *dfunc = device->funcs;
@ -79,11 +80,12 @@ QFV_CreateImage (qfv_device_t *device, int cubemap,
type, format, size, num_mipmaps,
cubemap ? 6 * num_layers : num_layers,
samples,
VK_IMAGE_TILING_OPTIMAL,
initialized ? VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL,
usage_scenarios,
VK_SHARING_MODE_EXCLUSIVE,
0, 0,
VK_IMAGE_LAYOUT_UNDEFINED,
initialized ? VK_IMAGE_LAYOUT_PREINITIALIZED
: VK_IMAGE_LAYOUT_UNDEFINED,
};
VkImage image;
dfunc->vkCreateImage (dev, &createInfo, 0, &image);

View File

@ -319,7 +319,7 @@ Vulkan_CreateRenderPass (vulkan_ctx_t *ctx)
= QFV_CreateImage (device, 0, VK_IMAGE_TYPE_2D,
sc->format, extent, 1, 1, ctx->msaaSamples,
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
| VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
| VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, 0);
colorImage->object
= QFV_AllocImageMemory (device, colorImage->image,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, 0, 0);
@ -336,7 +336,7 @@ Vulkan_CreateRenderPass (vulkan_ctx_t *ctx)
depthImage->image
= QFV_CreateImage (device, 0, VK_IMAGE_TYPE_2D,
depthFormat, extent, 1, 1, ctx->msaaSamples,
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT);
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, 0);
depthImage->object
= QFV_AllocImageMemory (device, depthImage->image,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, 0, 0);