Image view creation code cleanup.
This commit is contained in:
parent
a8fc2da718
commit
d66d7c4363
|
|
@ -323,30 +323,6 @@ static VkRenderPass create_render_pass(VkDevice device, VkFormat color_format, V
|
|||
return render_pass;
|
||||
}
|
||||
|
||||
static VkImageView create_image_view(VkImage image, VkFormat format, VkImageAspectFlags aspect_flags) {
|
||||
VkImageViewCreateInfo desc;
|
||||
desc.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
|
||||
desc.pNext = nullptr;
|
||||
desc.flags = 0;
|
||||
desc.image = image;
|
||||
desc.viewType = VK_IMAGE_VIEW_TYPE_2D;
|
||||
desc.format = format;
|
||||
desc.components.r = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.components.g = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.components.b = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.components.a = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.subresourceRange.aspectMask = aspect_flags;
|
||||
desc.subresourceRange.baseMipLevel = 0;
|
||||
desc.subresourceRange.levelCount = VK_REMAINING_MIP_LEVELS;
|
||||
desc.subresourceRange.baseArrayLayer = 0;
|
||||
desc.subresourceRange.layerCount = 1;
|
||||
|
||||
VkImageView image_view;
|
||||
VK_CHECK(vkCreateImageView(vk.device, &desc, nullptr, &image_view));
|
||||
return image_view;
|
||||
}
|
||||
|
||||
|
||||
static void record_and_run_commands(VkCommandPool command_pool, VkQueue queue, std::function<void(VkCommandBuffer)> recorder) {
|
||||
|
||||
VkCommandBufferAllocateInfo alloc_info;
|
||||
|
|
@ -602,6 +578,8 @@ void vk_create_instance(HWND hwnd) {
|
|||
{
|
||||
VkFormat depth_format = find_depth_format(vk.physical_device);
|
||||
|
||||
// create depth image
|
||||
{
|
||||
VkImageCreateInfo desc;
|
||||
desc.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
|
||||
desc.pNext = nullptr;
|
||||
|
|
@ -620,9 +598,11 @@ void vk_create_instance(HWND hwnd) {
|
|||
desc.queueFamilyIndexCount = 0;
|
||||
desc.pQueueFamilyIndices = nullptr;
|
||||
desc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
|
||||
VK_CHECK(vkCreateImage(vk.device, &desc, nullptr, &vk.depth_image));
|
||||
}
|
||||
|
||||
// allocate depth image memory
|
||||
{
|
||||
VkMemoryRequirements memory_requirements;
|
||||
vkGetImageMemoryRequirements(vk.device, vk.depth_image, &memory_requirements);
|
||||
|
||||
|
|
@ -634,7 +614,28 @@ void vk_create_instance(HWND hwnd) {
|
|||
|
||||
VK_CHECK(vkAllocateMemory(vk.device, &alloc_info, nullptr, &vk.depth_image_memory));
|
||||
VK_CHECK(vkBindImageMemory(vk.device, vk.depth_image, vk.depth_image_memory, 0));
|
||||
vk.depth_image_view = create_image_view(vk.depth_image, depth_format, VK_IMAGE_ASPECT_DEPTH_BIT);
|
||||
}
|
||||
|
||||
// create depth image view
|
||||
{
|
||||
VkImageViewCreateInfo desc;
|
||||
desc.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
|
||||
desc.pNext = nullptr;
|
||||
desc.flags = 0;
|
||||
desc.image = vk.depth_image;
|
||||
desc.viewType = VK_IMAGE_VIEW_TYPE_2D;
|
||||
desc.format = depth_format;
|
||||
desc.components.r = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.components.g = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.components.b = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.components.a = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.subresourceRange.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT;
|
||||
desc.subresourceRange.baseMipLevel = 0;
|
||||
desc.subresourceRange.levelCount = 1;
|
||||
desc.subresourceRange.baseArrayLayer = 0;
|
||||
desc.subresourceRange.layerCount = 1;
|
||||
VK_CHECK(vkCreateImageView(vk.device, &desc, nullptr, &vk.depth_image_view));
|
||||
}
|
||||
|
||||
record_and_run_commands(vk.command_pool, vk.queue, [&depth_format](VkCommandBuffer command_buffer) {
|
||||
record_image_layout_transition(command_buffer, vk.depth_image, depth_format, 0, VK_IMAGE_LAYOUT_UNDEFINED,
|
||||
|
|
@ -642,10 +643,17 @@ void vk_create_instance(HWND hwnd) {
|
|||
});
|
||||
}
|
||||
|
||||
//
|
||||
// Renderpass.
|
||||
//
|
||||
{
|
||||
VkFormat depth_format = find_depth_format(vk.physical_device);
|
||||
|
||||
vk.render_pass = create_render_pass(vk.device, vk.surface_format.format, depth_format);
|
||||
}
|
||||
|
||||
//
|
||||
// Framebuffers for each swapchain image.
|
||||
//
|
||||
{
|
||||
VkImageView attachments[2] = {VK_NULL_HANDLE, vk.depth_image_view};
|
||||
|
||||
|
|
@ -1008,7 +1016,26 @@ Vk_Image vk_create_image(int width, int height, int mip_levels) {
|
|||
allocate_and_bind_image_memory(image.handle);
|
||||
}
|
||||
|
||||
image.view = create_image_view(image.handle, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_ASPECT_COLOR_BIT);
|
||||
// create image view
|
||||
{
|
||||
VkImageViewCreateInfo desc;
|
||||
desc.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
|
||||
desc.pNext = nullptr;
|
||||
desc.flags = 0;
|
||||
desc.image = image.handle;
|
||||
desc.viewType = VK_IMAGE_VIEW_TYPE_2D;
|
||||
desc.format = VK_FORMAT_R8G8B8A8_UNORM;
|
||||
desc.components.r = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.components.g = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.components.b = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.components.a = VK_COMPONENT_SWIZZLE_IDENTITY;
|
||||
desc.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
desc.subresourceRange.baseMipLevel = 0;
|
||||
desc.subresourceRange.levelCount = VK_REMAINING_MIP_LEVELS;
|
||||
desc.subresourceRange.baseArrayLayer = 0;
|
||||
desc.subresourceRange.layerCount = 1;
|
||||
VK_CHECK(vkCreateImageView(vk.device, &desc, nullptr, &image.view));
|
||||
}
|
||||
|
||||
// create associated descriptor set
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user