| 1157 | } |
| 1158 | |
| 1159 | void VkRenderFramework::InitDynamicRenderTarget(VkFormat format) { |
| 1160 | if (format != VK_FORMAT_UNDEFINED) { |
| 1161 | m_render_target_fmt = format; |
| 1162 | } |
| 1163 | |
| 1164 | m_renderPassClearValues.clear(); |
| 1165 | VkClearValue clear = {}; |
| 1166 | clear.color = m_clear_color; |
| 1167 | |
| 1168 | if ((m_device->FormatFeaturesOptimal(m_render_target_fmt) & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) == 0) { |
| 1169 | FAIL() << "Optimal tiling not allowed for render target"; |
| 1170 | } |
| 1171 | |
| 1172 | auto image_ci = vkt::Image::ImageCreateInfo2D( |
| 1173 | m_width, m_height, 1, 1, m_render_target_fmt, |
| 1174 | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT); |
| 1175 | std::unique_ptr<vkt::Image> img(new vkt::Image(*m_device, image_ci, vkt::set_layout)); |
| 1176 | |
| 1177 | m_render_target_views.push_back(img->CreateView()); |
| 1178 | m_framebuffer_attachments.push_back(m_render_target_views.back().handle()); |
| 1179 | m_renderTargets.push_back(std::move(img)); |
| 1180 | } |
| 1181 | |
| 1182 | VkImageView VkRenderFramework::GetDynamicRenderTarget(uint32_t idx) const { |
| 1183 | assert(m_framebuffer_attachments.size() > idx); |
nothing calls this directly
no test coverage detected