Skip to content

Commit 4a63fc2

Browse files
renderer_vulkan: Rename renderpass cache to render manager
* It is no longer just a cache
1 parent 9f5c8d0 commit 4a63fc2

18 files changed

+107
-89
lines changed

src/video_core/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,8 @@ if (ENABLE_VULKAN)
183183
renderer_vulkan/vk_platform.h
184184
renderer_vulkan/vk_present_window.cpp
185185
renderer_vulkan/vk_present_window.h
186-
renderer_vulkan/vk_renderpass_cache.cpp
187-
renderer_vulkan/vk_renderpass_cache.h
186+
renderer_vulkan/vk_render_manager.cpp
187+
renderer_vulkan/vk_render_manager.h
188188
renderer_vulkan/vk_shader_util.cpp
189189
renderer_vulkan/vk_shader_util.h
190190
renderer_vulkan/vk_stream_buffer.cpp

src/video_core/renderer_vulkan/renderer_vulkan.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ RendererVulkan::RendererVulkan(Core::System& system, Pica::PicaCore& pica_,
5454
Frontend::EmuWindow& window, Frontend::EmuWindow* secondary_window)
5555
: RendererBase{system, window, secondary_window}, memory{system.Memory()}, pica{pica_},
5656
instance{system.TelemetrySession(), window, Settings::values.physical_device.GetValue()},
57-
scheduler{instance}, renderpass_cache{instance, scheduler}, pool{instance},
57+
scheduler{instance}, render_manager{instance, scheduler}, pool{instance},
5858
main_window{window, instance, scheduler},
5959
vertex_buffer{instance, scheduler, vk::BufferUsageFlagBits::eVertexBuffer,
6060
VERTEX_BUFFER_SIZE},
@@ -66,7 +66,7 @@ RendererVulkan::RendererVulkan(Core::System& system, Pica::PicaCore& pica_,
6666
instance,
6767
scheduler,
6868
pool,
69-
renderpass_cache,
69+
render_manager,
7070
main_window.ImageCount()},
7171
present_set_provider{instance, pool, PRESENT_BINDINGS} {
7272
CompileShaders();
@@ -135,7 +135,7 @@ void RendererVulkan::PrepareDraw(Frame* frame, const Layout::FramebufferLayout&
135135

136136
const auto descriptor_set = present_set_provider.Acquire(present_textures);
137137

138-
renderpass_cache.EndRendering();
138+
render_manager.EndRendering();
139139
scheduler.Record([this, layout, frame, descriptor_set, renderpass = main_window.Renderpass(),
140140
index = current_pipeline](vk::CommandBuffer cmdbuf) {
141141
const vk::Viewport viewport = {
@@ -466,7 +466,7 @@ void RendererVulkan::FillScreen(Common::Vec3<u8> color, const TextureInfo& textu
466466
},
467467
};
468468

469-
renderpass_cache.EndRendering();
469+
render_manager.EndRendering();
470470
scheduler.Record([image = texture.image, clear_color](vk::CommandBuffer cmdbuf) {
471471
const vk::ImageSubresourceRange range = {
472472
.aspectMask = vk::ImageAspectFlagBits::eColor,

src/video_core/renderer_vulkan/renderer_vulkan.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#include "video_core/renderer_vulkan/vk_instance.h"
1212
#include "video_core/renderer_vulkan/vk_present_window.h"
1313
#include "video_core/renderer_vulkan/vk_rasterizer.h"
14-
#include "video_core/renderer_vulkan/vk_renderpass_cache.h"
14+
#include "video_core/renderer_vulkan/vk_render_manager.h"
1515
#include "video_core/renderer_vulkan/vk_scheduler.h"
1616

1717
namespace Core {
@@ -118,7 +118,7 @@ class RendererVulkan : public VideoCore::RendererBase {
118118

119119
Instance instance;
120120
Scheduler scheduler;
121-
RenderpassCache renderpass_cache;
121+
RenderManager render_manager;
122122
DescriptorPool pool;
123123
PresentWindow main_window;
124124
StreamBuffer vertex_buffer;

src/video_core/renderer_vulkan/vk_blit_helper.cpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#include "common/vector_math.h"
66
#include "video_core/renderer_vulkan/vk_blit_helper.h"
77
#include "video_core/renderer_vulkan/vk_instance.h"
8-
#include "video_core/renderer_vulkan/vk_renderpass_cache.h"
8+
#include "video_core/renderer_vulkan/vk_render_manager.h"
99
#include "video_core/renderer_vulkan/vk_scheduler.h"
1010
#include "video_core/renderer_vulkan/vk_shader_util.h"
1111
#include "video_core/renderer_vulkan/vk_texture_runtime.h"
@@ -178,8 +178,8 @@ constexpr vk::PipelineShaderStageCreateInfo MakeStages(vk::ShaderModule compute_
178178
} // Anonymous namespace
179179

180180
BlitHelper::BlitHelper(const Instance& instance_, Scheduler& scheduler_, DescriptorPool& pool,
181-
RenderpassCache& renderpass_cache_)
182-
: instance{instance_}, scheduler{scheduler_}, renderpass_cache{renderpass_cache_},
181+
RenderManager& render_manager_)
182+
: instance{instance_}, scheduler{scheduler_}, render_manager{render_manager_},
183183
device{instance.GetDevice()}, compute_provider{instance, pool, COMPUTE_BINDINGS},
184184
compute_buffer_provider{instance, pool, COMPUTE_BUFFER_BINDINGS},
185185
two_textures_provider{instance, pool, TWO_TEXTURES_BINDINGS},
@@ -299,10 +299,10 @@ bool BlitHelper::BlitDepthStencil(Surface& source, Surface& dest,
299299
const RenderPass depth_pass = {
300300
.framebuffer = dest.Framebuffer(),
301301
.render_pass =
302-
renderpass_cache.GetRenderpass(PixelFormat::Invalid, dest.pixel_format, false),
302+
render_manager.GetRenderpass(PixelFormat::Invalid, dest.pixel_format, false),
303303
.render_area = dst_render_area,
304304
};
305-
renderpass_cache.BeginRendering(depth_pass);
305+
render_manager.BeginRendering(depth_pass);
306306

307307
scheduler.Record([blit, descriptor_set, this](vk::CommandBuffer cmdbuf) {
308308
const vk::PipelineLayout layout = two_textures_pipeline_layout;
@@ -334,7 +334,7 @@ bool BlitHelper::ConvertDS24S8ToRGBA8(Surface& source, Surface& dest,
334334

335335
const auto descriptor_set = compute_provider.Acquire(textures);
336336

337-
renderpass_cache.EndRendering();
337+
render_manager.EndRendering();
338338
scheduler.Record([this, descriptor_set, copy, src_image = source.Image(),
339339
dst_image = dest.Image()](vk::CommandBuffer cmdbuf) {
340340
const std::array pre_barriers = {
@@ -457,7 +457,7 @@ bool BlitHelper::DepthToBuffer(Surface& source, vk::Buffer buffer,
457457

458458
const auto descriptor_set = compute_buffer_provider.Acquire(textures);
459459

460-
renderpass_cache.EndRendering();
460+
render_manager.EndRendering();
461461
scheduler.Record([this, descriptor_set, copy, src_image = source.Image(),
462462
extent = source.RealExtent(false)](vk::CommandBuffer cmdbuf) {
463463
const vk::ImageMemoryBarrier pre_barrier = {
@@ -543,7 +543,7 @@ vk::Pipeline BlitHelper::MakeDepthStencilBlitPipeline() {
543543
}
544544

545545
const std::array stages = MakeStages(full_screen_vert, blit_depth_stencil_frag);
546-
const auto renderpass = renderpass_cache.GetRenderpass(VideoCore::PixelFormat::Invalid,
546+
const auto renderpass = render_manager.GetRenderpass(VideoCore::PixelFormat::Invalid,
547547
VideoCore::PixelFormat::D24S8, false);
548548
vk::GraphicsPipelineCreateInfo depth_stencil_info = {
549549
.stageCount = static_cast<u32>(stages.size()),

src/video_core/renderer_vulkan/vk_blit_helper.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ struct BufferTextureCopy;
1515
namespace Vulkan {
1616

1717
class Instance;
18-
class RenderpassCache;
18+
class RenderManager;
1919
class Scheduler;
2020
class Surface;
2121

@@ -24,7 +24,7 @@ class BlitHelper {
2424

2525
public:
2626
BlitHelper(const Instance& instance, Scheduler& scheduler, DescriptorPool& pool,
27-
RenderpassCache& renderpass_cache);
27+
RenderManager& render_manager);
2828
~BlitHelper();
2929

3030
bool BlitDepthStencil(Surface& source, Surface& dest, const VideoCore::TextureBlit& blit);
@@ -41,7 +41,7 @@ class BlitHelper {
4141
private:
4242
const Instance& instance;
4343
Scheduler& scheduler;
44-
RenderpassCache& renderpass_cache;
44+
RenderManager& render_manager;
4545

4646
vk::Device device;
4747
vk::RenderPass r32_renderpass;

src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#include "video_core/renderer_vulkan/pica_to_vk.h"
1010
#include "video_core/renderer_vulkan/vk_graphics_pipeline.h"
1111
#include "video_core/renderer_vulkan/vk_instance.h"
12-
#include "video_core/renderer_vulkan/vk_renderpass_cache.h"
12+
#include "video_core/renderer_vulkan/vk_render_manager.h"
1313
#include "video_core/renderer_vulkan/vk_shader_util.h"
1414

1515
namespace Vulkan {
@@ -64,11 +64,11 @@ Shader::~Shader() {
6464
}
6565
}
6666

67-
GraphicsPipeline::GraphicsPipeline(const Instance& instance_, RenderpassCache& renderpass_cache_,
67+
GraphicsPipeline::GraphicsPipeline(const Instance& instance_, RenderManager& render_manager_,
6868
const PipelineInfo& info_, vk::PipelineCache pipeline_cache_,
6969
vk::PipelineLayout layout_, std::array<Shader*, 3> stages_,
7070
Common::ThreadWorker* worker_)
71-
: instance{instance_}, renderpass_cache{renderpass_cache_}, worker{worker_},
71+
: instance{instance_}, render_manager{render_manager_}, worker{worker_},
7272
pipeline_layout{layout_}, pipeline_cache{pipeline_cache_}, info{info_}, stages{stages_} {}
7373

7474
GraphicsPipeline::~GraphicsPipeline() = default;
@@ -265,7 +265,7 @@ bool GraphicsPipeline::Build(bool fail_on_compile_required) {
265265
.pDynamicState = &dynamic_info,
266266
.layout = pipeline_layout,
267267
.renderPass =
268-
renderpass_cache.GetRenderpass(info.attachments.color, info.attachments.depth, false),
268+
render_manager.GetRenderpass(info.attachments.color, info.attachments.depth, false),
269269
};
270270

271271
if (fail_on_compile_required) {

src/video_core/renderer_vulkan/vk_graphics_pipeline.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ struct AsyncHandle {
4040
namespace Vulkan {
4141

4242
class Instance;
43-
class RenderpassCache;
43+
class RenderManager;
4444

4545
constexpr u32 MAX_SHADER_STAGES = 3;
4646
constexpr u32 MAX_VERTEX_ATTRIBUTES = 16;
@@ -165,7 +165,7 @@ struct Shader : public Common::AsyncHandle {
165165

166166
class GraphicsPipeline : public Common::AsyncHandle {
167167
public:
168-
explicit GraphicsPipeline(const Instance& instance, RenderpassCache& renderpass_cache,
168+
explicit GraphicsPipeline(const Instance& instance, RenderManager& render_manager,
169169
const PipelineInfo& info, vk::PipelineCache pipeline_cache,
170170
vk::PipelineLayout layout, std::array<Shader*, 3> stages,
171171
Common::ThreadWorker* worker);
@@ -181,7 +181,7 @@ class GraphicsPipeline : public Common::AsyncHandle {
181181

182182
private:
183183
const Instance& instance;
184-
RenderpassCache& renderpass_cache;
184+
RenderManager& render_manager;
185185
Common::ThreadWorker* worker;
186186

187187
vk::UniquePipeline pipeline;

src/video_core/renderer_vulkan/vk_pipeline_cache.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#include "video_core/renderer_vulkan/pica_to_vk.h"
1414
#include "video_core/renderer_vulkan/vk_instance.h"
1515
#include "video_core/renderer_vulkan/vk_pipeline_cache.h"
16-
#include "video_core/renderer_vulkan/vk_renderpass_cache.h"
16+
#include "video_core/renderer_vulkan/vk_render_manager.h"
1717
#include "video_core/renderer_vulkan/vk_scheduler.h"
1818
#include "video_core/renderer_vulkan/vk_shader_util.h"
1919
#include "video_core/shader/generator/glsl_fs_shader_gen.h"
@@ -80,8 +80,8 @@ constexpr std::array<vk::DescriptorSetLayoutBinding, 7> SHADOW_BINDINGS = {{
8080
}};
8181

8282
PipelineCache::PipelineCache(const Instance& instance_, Scheduler& scheduler_,
83-
RenderpassCache& renderpass_cache_, DescriptorPool& pool_)
84-
: instance{instance_}, scheduler{scheduler_}, renderpass_cache{renderpass_cache_}, pool{pool_},
83+
RenderManager& render_manager_, DescriptorPool& pool_)
84+
: instance{instance_}, scheduler{scheduler_}, render_manager{render_manager_}, pool{pool_},
8585
num_worker_threads{std::max(std::thread::hardware_concurrency(), 2U)},
8686
workers{num_worker_threads, "Pipeline workers"},
8787
descriptor_set_providers{DescriptorSetProvider{instance, pool, BUFFER_BINDINGS},
@@ -205,7 +205,7 @@ bool PipelineCache::BindPipeline(const PipelineInfo& info, bool wait_built) {
205205
auto [it, new_pipeline] = graphics_pipelines.try_emplace(pipeline_hash);
206206
if (new_pipeline) {
207207
it.value() =
208-
std::make_unique<GraphicsPipeline>(instance, renderpass_cache, info, *pipeline_cache,
208+
std::make_unique<GraphicsPipeline>(instance, render_manager, info, *pipeline_cache,
209209
*pipeline_layout, current_shaders, &workers);
210210
}
211211

src/video_core/renderer_vulkan/vk_pipeline_cache.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ namespace Vulkan {
2222

2323
class Instance;
2424
class Scheduler;
25-
class RenderpassCache;
25+
class RenderManager;
2626
class DescriptorPool;
2727

2828
constexpr u32 NUM_RASTERIZER_SETS = 3;
@@ -34,7 +34,7 @@ constexpr u32 NUM_DYNAMIC_OFFSETS = 3;
3434
class PipelineCache {
3535
public:
3636
explicit PipelineCache(const Instance& instance, Scheduler& scheduler,
37-
RenderpassCache& renderpass_cache, DescriptorPool& pool);
37+
RenderManager& render_manager, DescriptorPool& pool);
3838
~PipelineCache();
3939

4040
[[nodiscard]] DescriptorSetProvider& TextureProvider() noexcept {
@@ -97,7 +97,7 @@ class PipelineCache {
9797
private:
9898
const Instance& instance;
9999
Scheduler& scheduler;
100-
RenderpassCache& renderpass_cache;
100+
RenderManager& render_manager;
101101
DescriptorPool& pool;
102102

103103
Pica::Shader::Profile profile{};

src/video_core/renderer_vulkan/vk_present_window.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ namespace Vulkan {
2020
class Instance;
2121
class Swapchain;
2222
class Scheduler;
23-
class RenderpassCache;
23+
class RenderManager;
2424

2525
struct Frame {
2626
u32 width;

src/video_core/renderer_vulkan/vk_rasterizer.cpp

+9-4
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ RasterizerVulkan::RasterizerVulkan(Memory::MemorySystem& memory, Pica::PicaCore&
5959
VideoCore::RendererBase& renderer,
6060
Frontend::EmuWindow& emu_window, const Instance& instance,
6161
Scheduler& scheduler, DescriptorPool& pool,
62-
RenderpassCache& renderpass_cache, u32 image_count)
62+
RenderManager& render_manager, u32 image_count)
6363
: RasterizerAccelerated{memory, pica}, instance{instance}, scheduler{scheduler},
64-
renderpass_cache{renderpass_cache}, pipeline_cache{instance, scheduler, renderpass_cache,
64+
render_manager{render_manager}, pipeline_cache{instance, scheduler, render_manager,
6565
pool},
66-
runtime{instance, scheduler, renderpass_cache, pool, pipeline_cache.TextureProvider(),
66+
runtime{instance, scheduler, render_manager, pool, pipeline_cache.TextureProvider(),
6767
image_count},
6868
res_cache{memory, custom_tex_manager, runtime, regs, renderer},
6969
stream_buffer{instance, scheduler, BUFFER_USAGE, STREAM_BUFFER_SIZE},
@@ -77,6 +77,7 @@ RasterizerVulkan::RasterizerVulkan(Memory::MemorySystem& memory, Pica::PicaCore&
7777

7878
vertex_buffers.fill(stream_buffer.Handle());
7979

80+
// Query uniform buffer alignment.
8081
uniform_buffer_alignment = instance.UniformMinAlignment();
8182
uniform_size_aligned_vs_pica =
8283
Common::AlignUp(sizeof(VSPicaUniformData), uniform_buffer_alignment);
@@ -107,6 +108,10 @@ RasterizerVulkan::RasterizerVulkan(Memory::MemorySystem& memory, Pica::PicaCore&
107108
.range = VK_WHOLE_SIZE,
108109
});
109110

111+
scheduler.RegisterOnSubmit([&render_manager] {
112+
render_manager.EndRendering();
113+
});
114+
110115
// Since we don't have access to VK_EXT_descriptor_indexing we need to intiallize
111116
// all descriptor sets even the ones we don't use.
112117
pipeline_cache.BindBuffer(0, uniform_buffer.Handle(), 0, sizeof(VSPicaUniformData));
@@ -514,7 +519,7 @@ bool RasterizerVulkan::Draw(bool accelerate, bool is_indexed) {
514519

515520
// Begin rendering
516521
const auto draw_rect = fb_helper.DrawRect();
517-
renderpass_cache.BeginRendering(framebuffer, draw_rect);
522+
render_manager.BeginRendering(framebuffer, draw_rect);
518523

519524
// Configure viewport and scissor
520525
const auto viewport = fb_helper.Viewport();

src/video_core/renderer_vulkan/vk_rasterizer.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
#include "video_core/rasterizer_accelerated.h"
88
#include "video_core/renderer_vulkan/vk_pipeline_cache.h"
9-
#include "video_core/renderer_vulkan/vk_renderpass_cache.h"
9+
#include "video_core/renderer_vulkan/vk_render_manager.h"
1010
#include "video_core/renderer_vulkan/vk_stream_buffer.h"
1111
#include "video_core/renderer_vulkan/vk_texture_runtime.h"
1212

@@ -31,7 +31,7 @@ struct ScreenInfo;
3131

3232
class Instance;
3333
class Scheduler;
34-
class RenderpassCache;
34+
class RenderManager;
3535
class DescriptorPool;
3636

3737
class RasterizerVulkan : public VideoCore::RasterizerAccelerated {
@@ -40,7 +40,7 @@ class RasterizerVulkan : public VideoCore::RasterizerAccelerated {
4040
VideoCore::CustomTexManager& custom_tex_manager,
4141
VideoCore::RendererBase& renderer, Frontend::EmuWindow& emu_window,
4242
const Instance& instance, Scheduler& scheduler, DescriptorPool& pool,
43-
RenderpassCache& renderpass_cache, u32 image_count);
43+
RenderManager& render_manager, u32 image_count);
4444
~RasterizerVulkan() override;
4545

4646
void TickFrame();
@@ -145,7 +145,7 @@ class RasterizerVulkan : public VideoCore::RasterizerAccelerated {
145145
private:
146146
const Instance& instance;
147147
Scheduler& scheduler;
148-
RenderpassCache& renderpass_cache;
148+
RenderManager& render_manager;
149149
PipelineCache pipeline_cache;
150150
TextureRuntime runtime;
151151
RasterizerCache res_cache;

0 commit comments

Comments
 (0)