15 const std::shared_ptr<Context>& context,
16 std::shared_ptr<KHRSwapchainImageVK>& swapchain_image,
19 if (!context || !swapchain_image || !swap_callback) {
23 std::shared_ptr<Texture> msaa_tex;
29 msaa_tex_desc.
format = swapchain_image->GetPixelFormat();
30 msaa_tex_desc.
size = swapchain_image->GetSize();
33 if (!swapchain_image->GetMSAATexture()) {
34 msaa_tex = context->GetResourceAllocator()->CreateTexture(msaa_tex_desc);
35 msaa_tex->SetLabel(
"ImpellerOnscreenColorMSAA");
41 msaa_tex = swapchain_image->GetMSAATexture();
47 resolve_tex_desc.
format = swapchain_image->GetPixelFormat();
48 resolve_tex_desc.
size = swapchain_image->GetSize();
53 std::shared_ptr<Texture> resolve_tex =
54 std::make_shared<TextureVK>(context,
62 resolve_tex->SetLabel(
"ImpellerOnscreenResolve");
80 *context->GetResourceAllocator(),
81 swapchain_image->GetSize(),
86 swapchain_image->GetDepthStencilTexture()
90 return std::unique_ptr<KHRSurfaceVK>(
91 new KHRSurfaceVK(render_target_desc, std::move(swap_callback)));
95 SwapCallback swap_callback)
96 :
Surface(target), swap_callback_(
std::move(swap_callback)) {}
100 bool KHRSurfaceVK::Present()
const {
101 return swap_callback_ ? swap_callback_() : false;