14 const std::shared_ptr<Context>& context,
15 std::shared_ptr<SwapchainImageVK>& swapchain_image,
17 if (!context || !swapchain_image || !swap_callback) {
25 msaa_tex_desc.
format = swapchain_image->GetPixelFormat();
26 msaa_tex_desc.
size = swapchain_image->GetSize();
29 std::shared_ptr<Texture> msaa_tex;
30 if (!swapchain_image->HasMSAATexture()) {
31 msaa_tex = context->GetResourceAllocator()->CreateTexture(msaa_tex_desc);
32 msaa_tex->SetLabel(
"ImpellerOnscreenColorMSAA");
37 swapchain_image->SetMSAATexture(msaa_tex);
39 msaa_tex = swapchain_image->GetMSAATexture();
44 resolve_tex_desc.
format = swapchain_image->GetPixelFormat();
45 resolve_tex_desc.
size = swapchain_image->GetSize();
46 resolve_tex_desc.
usage =
51 std::shared_ptr<Texture> resolve_tex =
52 std::make_shared<TextureVK>(context,
60 resolve_tex->SetLabel(
"ImpellerOnscreenResolve");
73 return std::unique_ptr<SurfaceVK>(
74 new SurfaceVK(render_target_desc, std::move(swap_callback)));
77 SurfaceVK::SurfaceVK(
const RenderTarget& target, SwapCallback swap_callback)
78 :
Surface(target), swap_callback_(
std::move(swap_callback)) {}
82 bool SurfaceVK::Present()
const {
83 return swap_callback_ ? swap_callback_() : false;