58TEST(SwapchainTest, CachesRenderPassOnSwapchainImage) {
70 std::vector<std::shared_ptr<Texture>> msaa_textures;
71 std::vector<std::shared_ptr<Texture>> depth_stencil_textures;
72 for (
auto i = 0u; i < 3u; i++) {
73 auto drawable =
swapchain->AcquireNextDrawable();
74 RenderTarget render_target = drawable->GetTargetRenderPassDescriptor();
78 EXPECT_EQ(texture_vk.GetCachedFramebuffer(),
nullptr);
79 EXPECT_EQ(texture_vk.GetCachedRenderPass(),
nullptr);
81 auto command_buffer = context->CreateCommandBuffer();
82 auto render_pass = command_buffer->CreateRenderPass(render_target);
83 render_pass->EncodeCommands();
86 depth_stencil_textures.push_back(depth.has_value() ? depth->texture
88 msaa_textures.push_back(
92 for (
auto i = 1; i < 3; i++) {
93 EXPECT_EQ(msaa_textures[i - 1], msaa_textures[i]);
94 EXPECT_EQ(depth_stencil_textures[i - 1], depth_stencil_textures[i]);
100 std::vector<SharedHandleVK<vk::Framebuffer>> framebuffers;
101 std::vector<SharedHandleVK<vk::RenderPass>> render_passes;
102 for (
auto i = 0u; i < 3u; i++) {
103 auto drawable =
swapchain->AcquireNextDrawable();
104 RenderTarget render_target = drawable->GetTargetRenderPassDescriptor();
109 EXPECT_NE(texture_vk.GetCachedFramebuffer(),
nullptr);
110 EXPECT_NE(texture_vk.GetCachedRenderPass(),
nullptr);
111 framebuffers.push_back(texture_vk.GetCachedFramebuffer());
112 render_passes.push_back(texture_vk.GetCachedRenderPass());
117 for (
auto i = 0u; i < 3u; i++) {
118 auto drawable =
swapchain->AcquireNextDrawable();
119 RenderTarget render_target = drawable->GetTargetRenderPassDescriptor();
124 EXPECT_EQ(texture_vk.GetCachedFramebuffer(), framebuffers[i]);
125 EXPECT_EQ(texture_vk.GetCachedRenderPass(), render_passes[i]);
vk::Instance GetInstance() const
std::shared_ptr< ContextVK > Build()
Create a Vulkan context with Vulkan functions mocked. The caller is given a chance to tinker on the s...