17 if (!context || !swapchain_image || !swap_callback) {
21 TextureDescriptor msaa_tex_desc;
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();
42 TextureDescriptor resolve_tex_desc;
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");
62 ColorAttachment color0;
63 color0.texture = msaa_tex;
67 color0.resolve_texture = resolve_tex;
69 RenderTarget render_target_desc;
70 render_target_desc.SetColorAttachment(color0, 0u);
73 return std::unique_ptr<SurfaceVK>(
74 new SurfaceVK(render_target_desc, std::move(swap_callback)));