| Flutter Impeller |

blit_command_vk_unittests.cc
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "flutter/testing/testing.h" // IWYU pragma: keep
6 #include "impeller/renderer/backend/vulkan/blit_command_vk.h"
7 #include "impeller/renderer/backend/vulkan/command_encoder_vk.h"
8 #include "impeller/renderer/backend/vulkan/test/mock_vulkan.h"
9
10 namespace impeller {
11 namespace testing {
12
13 TEST(BlitCommandVkTest, BlitCopyTextureToTextureCommandVK) {
14 auto context = MockVulkanContextBuilder().Build();
15 auto pool = context->GetCommandPoolRecycler()->Get();
16 auto encoder = std::make_unique<CommandEncoderFactoryVK>(context)->Create();
17 BlitCopyTextureToTextureCommandVK cmd;
18 cmd.source = context->GetResourceAllocator()->CreateTexture({
19 .format = PixelFormat::kR8G8B8A8UNormInt,
20 .size = ISize(100, 100),
21 });
22 cmd.destination = context->GetResourceAllocator()->CreateTexture({
23 .format = PixelFormat::kR8G8B8A8UNormInt,
24 .size = ISize(100, 100),
25 });
26 bool result = cmd.Encode(*encoder.get());
27 EXPECT_TRUE(result);
28 EXPECT_TRUE(encoder->IsTracking(cmd.source));
29 EXPECT_TRUE(encoder->IsTracking(cmd.destination));
30 }
31
32 TEST(BlitCommandVkTest, BlitCopyTextureToBufferCommandVK) {
33 auto context = MockVulkanContextBuilder().Build();
34 auto encoder = std::make_unique<CommandEncoderFactoryVK>(context)->Create();
35 BlitCopyTextureToBufferCommandVK cmd;
36 cmd.source = context->GetResourceAllocator()->CreateTexture({
37 .format = PixelFormat::kR8G8B8A8UNormInt,
38 .size = ISize(100, 100),
39 });
40 cmd.destination = context->GetResourceAllocator()->CreateBuffer({
41 .size = 1,
42 });
43 bool result = cmd.Encode(*encoder.get());
44 EXPECT_TRUE(result);
45 EXPECT_TRUE(encoder->IsTracking(cmd.source));
46 EXPECT_TRUE(encoder->IsTracking(cmd.destination));
47 }
48
49 TEST(BlitCommandVkTest, BlitCopyBufferToTextureCommandVK) {
50 auto context = MockVulkanContextBuilder().Build();
51 auto encoder = std::make_unique<CommandEncoderFactoryVK>(context)->Create();
52 BlitCopyBufferToTextureCommandVK cmd;
53 cmd.destination = context->GetResourceAllocator()->CreateTexture({
54 .format = PixelFormat::kR8G8B8A8UNormInt,
55 .size = ISize(100, 100),
56 });
57 cmd.source =
58 DeviceBuffer::AsBufferView(context->GetResourceAllocator()->CreateBuffer({
59 .size = 1,
60 }));
61 bool result = cmd.Encode(*encoder.get());
62 EXPECT_TRUE(result);
63 EXPECT_TRUE(encoder->IsTracking(cmd.source.buffer));
64 EXPECT_TRUE(encoder->IsTracking(cmd.destination));
65 }
66
67 TEST(BlitCommandVkTest, BlitGenerateMipmapCommandVK) {
68 auto context = MockVulkanContextBuilder().Build();
69 auto encoder = std::make_unique<CommandEncoderFactoryVK>(context)->Create();
70 BlitGenerateMipmapCommandVK cmd;
71 cmd.texture = context->GetResourceAllocator()->CreateTexture({
72 .format = PixelFormat::kR8G8B8A8UNormInt,
73 .size = ISize(100, 100),
74 .mip_count = 2,
75 });
76 bool result = cmd.Encode(*encoder.get());
77 EXPECT_TRUE(result);
78 EXPECT_TRUE(encoder->IsTracking(cmd.texture));
79 }
80
81 } // namespace testing
82 } // namespace impeller
impeller::DeviceBuffer::AsBufferView
static BufferView AsBufferView(std::shared_ptr< DeviceBuffer > buffer)
Create a buffer view of this entire buffer.
Definition: device_buffer.cc:18
command_encoder_vk.h
impeller::PixelFormat::kR8G8B8A8UNormInt
@ kR8G8B8A8UNormInt
impeller::BlitCopyTextureToTextureCommand::destination
std::shared_ptr< Texture > destination
Definition: blit_command.h:20
impeller::BlitGenerateMipmapCommandVK::Encode
bool Encode(CommandEncoderVK &encoder) const override
Definition: blit_command_vk.cc:274
impeller::BlitCopyBufferToTextureCommandVK
Definition: blit_command_vk.h:47
impeller::BlitCopyTextureToTextureCommandVK::Encode
bool Encode(CommandEncoderVK &encoder) const override
Definition: blit_command_vk.cc:27
impeller::BlitGenerateMipmapCommand::texture
std::shared_ptr< Texture > texture
Definition: blit_command.h:39
impeller::BlitCopyBufferToTextureCommandVK::Encode
bool Encode(CommandEncoderVK &encoder) const override
Definition: blit_command_vk.cc:187
impeller::BlitCopyBufferToTextureCommand::source
BufferView source
Definition: blit_command.h:33
impeller::testing::TEST
TEST(CanvasRecorder, Save)
Definition: canvas_recorder_unittests.cc:65
blit_command_vk.h
impeller::BlitCopyTextureToBufferCommand::destination
std::shared_ptr< DeviceBuffer > destination
Definition: blit_command.h:27
impeller::BlitCopyTextureToBufferCommandVK::Encode
bool Encode(CommandEncoderVK &encoder) const override
Definition: blit_command_vk.cc:115
impeller::BlitGenerateMipmapCommandVK
Definition: blit_command_vk.h:56
impeller::BlitCopyTextureToTextureCommand::source
std::shared_ptr< Texture > source
Definition: blit_command.h:19
impeller::ISize
TSize< int64_t > ISize
Definition: size.h:138
impeller::BlitCopyTextureToBufferCommandVK
Definition: blit_command_vk.h:38
impeller::BufferView::buffer
std::shared_ptr< const DeviceBuffer > buffer
Definition: buffer_view.h:16
impeller::BlitCopyTextureToBufferCommand::source
std::shared_ptr< Texture > source
Definition: blit_command.h:26
impeller::BlitCopyTextureToTextureCommandVK
Definition: blit_command_vk.h:28
impeller
Definition: aiks_blur_unittests.cc:20
impeller::BlitCopyBufferToTextureCommand::destination
std::shared_ptr< Texture > destination
Definition: blit_command.h:34