14 const std::shared_ptr<SwapchainTransientsVK>& transients,
15 const std::shared_ptr<TextureSourceVK>& swapchain_image,
17 if (!transients || !swapchain_image || !swap_callback) {
21 auto context = transients->GetContext().lock();
26 const auto enable_msaa = transients->IsMSAAEnabled();
28 const auto swapchain_tex_desc = swapchain_image->GetTextureDescriptor();
32 resolve_tex_desc.
format = swapchain_tex_desc.format;
33 resolve_tex_desc.
size = swapchain_tex_desc.size;
38 std::shared_ptr<Texture> resolve_tex =
39 std::make_shared<TextureVK>(context,
46 resolve_tex->SetLabel(
"ImpellerOnscreenResolve");
52 color0.
texture = transients->GetMSAATexture();
64 *context->GetResourceAllocator(),
65 swapchain_tex_desc.size,
70 transients->GetDepthStencilTexture()
74 return std::unique_ptr<SurfaceVK>(
75 new SurfaceVK(render_target_desc, std::move(swap_callback)));
78 SurfaceVK::SurfaceVK(
const RenderTarget& target, SwapCallback swap_callback)
79 :
Surface(target), swap_callback_(
std::move(swap_callback)) {}
83 bool SurfaceVK::Present()
const {
84 return swap_callback_ ? swap_callback_() : false;