feat(vk): Create image views for texture2d resources
This commit is contained in:
parent
033eac90bb
commit
823b9ef9af
@ -272,16 +272,44 @@ rt_result rtVkPhysicalResourceManagerCreateTexture2D(void *o, rt_render_resource
|
||||
rtLog("VK", "Failed to create image.");
|
||||
return RT_UNKNOWN_ERROR;
|
||||
}
|
||||
|
||||
VkImageViewCreateInfo view_info ={
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
|
||||
.format = format,
|
||||
.viewType = VK_IMAGE_VIEW_TYPE_2D,
|
||||
.subresourceRange = {
|
||||
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
|
||||
.levelCount = 1,
|
||||
.baseMipLevel = 0,
|
||||
.layerCount = 1,
|
||||
.baseArrayLayer = 0
|
||||
},
|
||||
.components = {
|
||||
.r = VK_COMPONENT_SWIZZLE_IDENTITY,
|
||||
.g = VK_COMPONENT_SWIZZLE_IDENTITY,
|
||||
.b = VK_COMPONENT_SWIZZLE_IDENTITY,
|
||||
.a = VK_COMPONENT_SWIZZLE_IDENTITY
|
||||
},
|
||||
};
|
||||
VkImageView view;
|
||||
if (vkCreateImageView(phys_res_mgr->dev->device, &view_info, phys_res_mgr->dev->alloc_cb, &view) != VK_SUCCESS) {
|
||||
vmaDestroyImage(phys_res_mgr->allocator, image, allocation);
|
||||
rtLog("VK","Failed to create image view.");
|
||||
return RT_UNKNOWN_ERROR;
|
||||
}
|
||||
|
||||
/* Store */
|
||||
rt_result res = RT_SUCCESS;
|
||||
rtLockWrite(&phys_res_mgr->lock);
|
||||
uint32_t slot = AllocStorageSlot(phys_res_mgr, h);
|
||||
if (slot != UINT32_MAX) {
|
||||
phys_res_mgr->resources[slot].type = RT_RENDER_RESOURCE_TYPE_BUFFER;
|
||||
phys_res_mgr->resources[slot].image = image;
|
||||
phys_res_mgr->resources[slot].texture2d.image = image;
|
||||
phys_res_mgr->resources[slot].texture2d.view = view;
|
||||
phys_res_mgr->resources[slot].allocation = allocation;
|
||||
} else {
|
||||
res = RT_OUT_OF_MEMORY;
|
||||
vkDestroyImageView(phys_res_mgr->dev->device, view, phys_res_mgr->dev->alloc_cb);
|
||||
vmaDestroyImage(phys_res_mgr->allocator, image, allocation);
|
||||
rtLog("VK","Could not create image because no storage space is available.");
|
||||
}
|
||||
|
@ -21,7 +21,10 @@ typedef struct {
|
||||
|
||||
union {
|
||||
VkBuffer buffer;
|
||||
VkImage image;
|
||||
struct {
|
||||
VkImage image;
|
||||
VkImageView view;
|
||||
} texture2d;
|
||||
};
|
||||
} rt_vk_physical_resource;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user