| 1019 | } |
| 1020 | |
| 1021 | void VulkanDebugManager::CreateCustomShaderTex(uint32_t width, uint32_t height, uint32_t mip) |
| 1022 | { |
| 1023 | WrappedVulkan *driver = m_pDriver; |
| 1024 | |
| 1025 | VkDevice dev = m_Device; |
| 1026 | |
| 1027 | VkResult vkr = VK_SUCCESS; |
| 1028 | |
| 1029 | if(m_Custom.TexImg != VK_NULL_HANDLE) |
| 1030 | { |
| 1031 | if(width == m_Custom.TexWidth && height == m_Custom.TexHeight) |
| 1032 | { |
| 1033 | // recreate framebuffer for this mip |
| 1034 | m_pDriver->vkDestroyFramebuffer(dev, m_Custom.TexFB, NULL); |
| 1035 | |
| 1036 | // Create framebuffer rendering just to overlay image, no depth |
| 1037 | VkFramebufferCreateInfo fbinfo = { |
| 1038 | VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, |
| 1039 | NULL, |
| 1040 | 0, |
| 1041 | m_Custom.TexRP, |
| 1042 | 1, |
| 1043 | &m_Custom.TexImgView[mip], |
| 1044 | RDCMAX(1U, width >> mip), |
| 1045 | RDCMAX(1U, height >> mip), |
| 1046 | 1, |
| 1047 | }; |
| 1048 | |
| 1049 | vkr = m_pDriver->vkCreateFramebuffer(m_Device, &fbinfo, NULL, &m_Custom.TexFB); |
| 1050 | CHECK_VKR(m_pDriver, vkr); |
| 1051 | return; |
| 1052 | } |
| 1053 | |
| 1054 | m_pDriver->vkDestroyRenderPass(dev, m_Custom.TexRP, NULL); |
| 1055 | m_pDriver->vkDestroyFramebuffer(dev, m_Custom.TexFB, NULL); |
| 1056 | for(size_t i = 0; i < ARRAY_COUNT(m_Custom.TexImgView); i++) |
| 1057 | m_pDriver->vkDestroyImageView(dev, m_Custom.TexImgView[i], NULL); |
| 1058 | RDCEraseEl(m_Custom.TexImgView); |
| 1059 | m_pDriver->vkDestroyImage(dev, m_Custom.TexImg, NULL); |
| 1060 | } |
| 1061 | |
| 1062 | m_Custom.TexWidth = width; |
| 1063 | m_Custom.TexHeight = height; |
| 1064 | |
| 1065 | VkImageCreateInfo imInfo = { |
| 1066 | VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, |
| 1067 | NULL, |
| 1068 | 0, |
| 1069 | VK_IMAGE_TYPE_2D, |
| 1070 | VK_FORMAT_R16G16B16A16_SFLOAT, |
| 1071 | {width, height, 1}, |
| 1072 | CalcNumMips((int)width, (int)height, 1), |
| 1073 | 1, |
| 1074 | VK_SAMPLE_COUNT_1_BIT, |
| 1075 | VK_IMAGE_TILING_OPTIMAL, |
| 1076 | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT | |
| 1077 | VK_IMAGE_USAGE_TRANSFER_SRC_BIT, |
| 1078 | VK_SHARING_MODE_EXCLUSIVE, |
no test coverage detected