13TEST(BlitPassVKTest, MipmapGenerationTransitionsAllLevelsCorrectly) {
15 ASSERT_TRUE(context->IsValid());
17 auto cmd_buffer = context->CreateCommandBuffer();
18 ASSERT_TRUE(cmd_buffer);
19 auto blit_pass = cmd_buffer->CreateBlitPass();
20 ASSERT_TRUE(blit_pass);
22 auto vk_blit_pass =
reinterpret_cast<BlitPassVK*
>(blit_pass.get());
23 auto vk_cmd_buffer =
reinterpret_cast<CommandBufferVK*
>(cmd_buffer.get());
29 auto texture = context->GetResourceAllocator()->CreateTexture(desc);
32 ASSERT_TRUE(vk_blit_pass->OnGenerateMipmapCommand(
texture,
"TestMipmap"));
37 ASSERT_EQ(barriers.size(), 8u);
39 EXPECT_EQ(barriers[0].oldLayout, VK_IMAGE_LAYOUT_UNDEFINED);
40 EXPECT_EQ(barriers[0].newLayout, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
41 EXPECT_EQ(barriers[0].subresourceRange.baseMipLevel, 0u);
42 EXPECT_EQ(barriers[0].subresourceRange.levelCount, 6u);
44 for (uint32_t
i = 1;
i < 7; ++
i) {
45 EXPECT_EQ(barriers[
i].oldLayout, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) <<
i;
46 EXPECT_EQ(barriers[
i].newLayout, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL) <<
i;
47 EXPECT_EQ(barriers[
i].subresourceRange.baseMipLevel,
i - 1) <<
i;
48 EXPECT_EQ(barriers[
i].subresourceRange.levelCount, 1u) <<
i;
51 EXPECT_EQ(barriers[7].oldLayout, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
52 EXPECT_EQ(barriers[7].newLayout, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
53 EXPECT_EQ(barriers[7].subresourceRange.baseMipLevel, 0u);
54 EXPECT_EQ(barriers[7].subresourceRange.levelCount, 6u);
std::shared_ptr< ContextVK > Build()
Create a Vulkan context with Vulkan functions mocked. The caller is given a chance to tinker on the s...
A lightweight object that describes the attributes of a texture that can then used an allocator to cr...