Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 62c227d

Browse files
authored
[Impeller] Add the KHR prefix to existing swapchain utilities. (#51295)
This is part of blowing up #51213 into smaller commits. Our current swapchain is based on the VK_KHR_swapchain extension. When this was the only swapchain that could be created, the KHR prefix was dropped. Since we are going to be having multiple swapchain types, add the KHR prefix and make room for other swapchains. No change in functionality. Just renames classes and files.
1 parent 953927e commit 62c227d

File tree

17 files changed

+181
-166
lines changed

17 files changed

+181
-166
lines changed

ci/licenses_golden/excluded_files

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@
178178
../../../flutter/impeller/renderer/backend/vulkan/fence_waiter_vk_unittests.cc
179179
../../../flutter/impeller/renderer/backend/vulkan/render_pass_cache_unittests.cc
180180
../../../flutter/impeller/renderer/backend/vulkan/resource_manager_vk_unittests.cc
181+
../../../flutter/impeller/renderer/backend/vulkan/swapchain/README.md
182+
../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/README.md
181183
../../../flutter/impeller/renderer/backend/vulkan/test
182184
../../../flutter/impeller/renderer/blit_pass_unittests.cc
183185
../../../flutter/impeller/renderer/capabilities_unittests.cc

ci/licenses_golden/licenses_flutter

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38136,14 +38136,14 @@ ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/shared_object_vk.cc +
3813638136
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/shared_object_vk.h + ../../../flutter/LICENSE
3813738137
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/surface_context_vk.cc + ../../../flutter/LICENSE
3813838138
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/surface_context_vk.h + ../../../flutter/LICENSE
38139-
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/surface_vk.cc + ../../../flutter/LICENSE
38140-
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/surface_vk.h + ../../../flutter/LICENSE
38141-
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_image_vk.cc + ../../../flutter/LICENSE
38142-
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_image_vk.h + ../../../flutter/LICENSE
38143-
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc + ../../../flutter/LICENSE
38144-
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_impl_vk.h + ../../../flutter/LICENSE
38145-
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_vk.cc + ../../../flutter/LICENSE
38146-
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_vk.h + ../../../flutter/LICENSE
38139+
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_surface_vk.cc + ../../../flutter/LICENSE
38140+
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_surface_vk.h + ../../../flutter/LICENSE
38141+
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_image_vk.cc + ../../../flutter/LICENSE
38142+
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_image_vk.h + ../../../flutter/LICENSE
38143+
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_impl_vk.cc + ../../../flutter/LICENSE
38144+
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_impl_vk.h + ../../../flutter/LICENSE
38145+
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_vk.cc + ../../../flutter/LICENSE
38146+
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_vk.h + ../../../flutter/LICENSE
3814738147
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/texture_source_vk.cc + ../../../flutter/LICENSE
3814838148
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/texture_source_vk.h + ../../../flutter/LICENSE
3814938149
ORIGIN: ../../../flutter/impeller/renderer/backend/vulkan/texture_vk.cc + ../../../flutter/LICENSE
@@ -40988,14 +40988,14 @@ FILE: ../../../flutter/impeller/renderer/backend/vulkan/shared_object_vk.cc
4098840988
FILE: ../../../flutter/impeller/renderer/backend/vulkan/shared_object_vk.h
4098940989
FILE: ../../../flutter/impeller/renderer/backend/vulkan/surface_context_vk.cc
4099040990
FILE: ../../../flutter/impeller/renderer/backend/vulkan/surface_context_vk.h
40991-
FILE: ../../../flutter/impeller/renderer/backend/vulkan/surface_vk.cc
40992-
FILE: ../../../flutter/impeller/renderer/backend/vulkan/surface_vk.h
40993-
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_image_vk.cc
40994-
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_image_vk.h
40995-
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc
40996-
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_impl_vk.h
40997-
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_vk.cc
40998-
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain_vk.h
40991+
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_surface_vk.cc
40992+
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_surface_vk.h
40993+
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_image_vk.cc
40994+
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_image_vk.h
40995+
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_impl_vk.cc
40996+
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_impl_vk.h
40997+
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_vk.cc
40998+
FILE: ../../../flutter/impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_vk.h
4099940999
FILE: ../../../flutter/impeller/renderer/backend/vulkan/texture_source_vk.cc
4100041000
FILE: ../../../flutter/impeller/renderer/backend/vulkan/texture_source_vk.h
4100141001
FILE: ../../../flutter/impeller/renderer/backend/vulkan/texture_vk.cc

impeller/playground/backend/vulkan/playground_impl_vk.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include "impeller/renderer/backend/vulkan/context_vk.h"
2121
#include "impeller/renderer/backend/vulkan/formats_vk.h"
2222
#include "impeller/renderer/backend/vulkan/surface_context_vk.h"
23-
#include "impeller/renderer/backend/vulkan/surface_vk.h"
23+
#include "impeller/renderer/backend/vulkan/swapchain/khr/khr_surface_vk.h"
2424
#include "impeller/renderer/backend/vulkan/texture_vk.h"
2525
#include "impeller/renderer/vk/compute_shaders_vk.h"
2626
#include "impeller/scene/shaders/vk/scene_shaders_vk.h"

impeller/renderer/backend/vulkan/BUILD.gn

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,14 @@ impeller_component("vulkan") {
9797
"shared_object_vk.h",
9898
"surface_context_vk.cc",
9999
"surface_context_vk.h",
100-
"surface_vk.cc",
101-
"surface_vk.h",
102-
"swapchain_image_vk.cc",
103-
"swapchain_image_vk.h",
104-
"swapchain_impl_vk.cc",
105-
"swapchain_impl_vk.h",
106-
"swapchain_vk.cc",
107-
"swapchain_vk.h",
100+
"swapchain/khr/khr_surface_vk.cc",
101+
"swapchain/khr/khr_surface_vk.h",
102+
"swapchain/khr/khr_swapchain_image_vk.cc",
103+
"swapchain/khr/khr_swapchain_image_vk.h",
104+
"swapchain/khr/khr_swapchain_impl_vk.cc",
105+
"swapchain/khr/khr_swapchain_impl_vk.h",
106+
"swapchain/khr/khr_swapchain_vk.cc",
107+
"swapchain/khr/khr_swapchain_vk.h",
108108
"texture_source_vk.cc",
109109
"texture_source_vk.h",
110110
"texture_vk.cc",

impeller/renderer/backend/vulkan/surface_context_vk.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include "flutter/fml/trace_event.h"
88
#include "impeller/renderer/backend/vulkan/command_pool_vk.h"
99
#include "impeller/renderer/backend/vulkan/context_vk.h"
10-
#include "impeller/renderer/backend/vulkan/swapchain_vk.h"
10+
#include "impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_vk.h"
1111
#include "impeller/renderer/surface.h"
1212

1313
namespace impeller {
@@ -64,7 +64,7 @@ void SurfaceContextVK::Shutdown() {
6464

6565
bool SurfaceContextVK::SetWindowSurface(vk::UniqueSurfaceKHR surface,
6666
const ISize& size) {
67-
auto swapchain = SwapchainVK::Create(parent_, std::move(surface), size);
67+
auto swapchain = KHRSwapchainVK::Create(parent_, std::move(surface), size);
6868
if (!swapchain) {
6969
VALIDATION_LOG << "Could not create swapchain.";
7070
return false;

impeller/renderer/backend/vulkan/surface_context_vk.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace impeller {
1616

1717
class ContextVK;
1818
class Surface;
19-
class SwapchainVK;
19+
class KHRSwapchainVK;
2020

2121
/// For Vulkan, there is both a ContextVK that implements Context and a
2222
/// SurfaceContextVK that also implements Context and takes a ContextVK as its
@@ -88,7 +88,7 @@ class SurfaceContextVK : public Context,
8888

8989
private:
9090
std::shared_ptr<ContextVK> parent_;
91-
std::shared_ptr<SwapchainVK> swapchain_;
91+
std::shared_ptr<KHRSwapchainVK> swapchain_;
9292
};
9393

9494
} // namespace impeller
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Vulkan Swapchains
2+
=================
3+
4+
Contains implementations of swapchains for Window System Integration (WSI) on different platforms.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
KHR Swapchain
2+
=============
3+
4+
An implementation of a Vulkan swapchain that depends on [`VK_KHR_swapchain`](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain.html). This swapchain is available on most platforms but may not be ideal on all. But, it is a good fallback.

impeller/renderer/backend/vulkan/surface_vk.cc renamed to impeller/renderer/backend/vulkan/swapchain/khr/khr_surface_vk.cc

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
#include "impeller/renderer/backend/vulkan/surface_vk.h"
5+
#include "impeller/renderer/backend/vulkan/swapchain/khr/khr_surface_vk.h"
66

77
#include "impeller/core/formats.h"
8-
#include "impeller/renderer/backend/vulkan/swapchain_image_vk.h"
8+
#include "impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_image_vk.h"
99
#include "impeller/renderer/backend/vulkan/texture_vk.h"
1010
#include "impeller/renderer/surface.h"
1111

1212
namespace impeller {
1313

14-
std::unique_ptr<SurfaceVK> SurfaceVK::WrapSwapchainImage(
14+
std::unique_ptr<KHRSurfaceVK> KHRSurfaceVK::WrapSwapchainImage(
1515
const std::shared_ptr<Context>& context,
16-
std::shared_ptr<SwapchainImageVK>& swapchain_image,
16+
std::shared_ptr<KHRSwapchainImageVK>& swapchain_image,
1717
SwapCallback swap_callback,
1818
bool enable_msaa) {
1919
if (!context || !swapchain_image || !swap_callback) {
@@ -88,16 +88,17 @@ std::unique_ptr<SurfaceVK> SurfaceVK::WrapSwapchainImage(
8888
);
8989

9090
// The constructor is private. So make_unique may not be used.
91-
return std::unique_ptr<SurfaceVK>(
92-
new SurfaceVK(render_target_desc, std::move(swap_callback)));
91+
return std::unique_ptr<KHRSurfaceVK>(
92+
new KHRSurfaceVK(render_target_desc, std::move(swap_callback)));
9393
}
9494

95-
SurfaceVK::SurfaceVK(const RenderTarget& target, SwapCallback swap_callback)
95+
KHRSurfaceVK::KHRSurfaceVK(const RenderTarget& target,
96+
SwapCallback swap_callback)
9697
: Surface(target), swap_callback_(std::move(swap_callback)) {}
9798

98-
SurfaceVK::~SurfaceVK() = default;
99+
KHRSurfaceVK::~KHRSurfaceVK() = default;
99100

100-
bool SurfaceVK::Present() const {
101+
bool KHRSurfaceVK::Present() const {
101102
return swap_callback_ ? swap_callback_() : false;
102103
}
103104

impeller/renderer/backend/vulkan/surface_vk.h renamed to impeller/renderer/backend/vulkan/swapchain/khr/khr_surface_vk.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
#ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_SURFACE_VK_H_
6-
#define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_SURFACE_VK_H_
5+
#ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_SWAPCHAIN_KHR_KHR_SURFACE_VK_H_
6+
#define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_SWAPCHAIN_KHR_KHR_SURFACE_VK_H_
77

88
#include <memory>
99

1010
#include "impeller/renderer/backend/vulkan/context_vk.h"
11-
#include "impeller/renderer/backend/vulkan/swapchain_image_vk.h"
11+
#include "impeller/renderer/backend/vulkan/swapchain/khr/khr_swapchain_image_vk.h"
1212
#include "impeller/renderer/surface.h"
1313

1414
namespace impeller {
1515

16-
class SurfaceVK final : public Surface {
16+
class KHRSurfaceVK final : public Surface {
1717
public:
1818
using SwapCallback = std::function<bool(void)>;
1919

@@ -22,28 +22,28 @@ class SurfaceVK final : public Surface {
2222
/// target by Impeller.
2323
///
2424
/// This creates the associated MSAA and depth+stencil texture.
25-
static std::unique_ptr<SurfaceVK> WrapSwapchainImage(
25+
static std::unique_ptr<KHRSurfaceVK> WrapSwapchainImage(
2626
const std::shared_ptr<Context>& context,
27-
std::shared_ptr<SwapchainImageVK>& swapchain_image,
27+
std::shared_ptr<KHRSwapchainImageVK>& swapchain_image,
2828
SwapCallback swap_callback,
2929
bool enable_msaa = true);
3030

3131
// |Surface|
32-
~SurfaceVK() override;
32+
~KHRSurfaceVK() override;
3333

3434
private:
3535
SwapCallback swap_callback_;
3636

37-
SurfaceVK(const RenderTarget& target, SwapCallback swap_callback);
37+
KHRSurfaceVK(const RenderTarget& target, SwapCallback swap_callback);
3838

3939
// |Surface|
4040
bool Present() const override;
4141

42-
SurfaceVK(const SurfaceVK&) = delete;
42+
KHRSurfaceVK(const KHRSurfaceVK&) = delete;
4343

44-
SurfaceVK& operator=(const SurfaceVK&) = delete;
44+
KHRSurfaceVK& operator=(const KHRSurfaceVK&) = delete;
4545
};
4646

4747
} // namespace impeller
4848

49-
#endif // FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_SURFACE_VK_H_
49+
#endif // FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_SWAPCHAIN_KHR_KHR_SURFACE_VK_H_

0 commit comments

Comments
 (0)