blob: 51c7e4c106c61f0e646192d799370f7dab297ed2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include "video_core/frame_gen/lossless_dll.h"
#include "video_core/renderer_vulkan/present/lsfg_shaders.h"
#include "video_core/renderer_vulkan/present/util.h"
#include "video_core/vulkan_common/vulkan_device.h"
namespace Vulkan {
LsfgShaders::LsfgShaders(const Device& device) {
if (!device.IsVulkanMemoryModelSupported() || !device.HasNullDescriptor() ||
!device.IsFloat16Supported()) {
return;
}
VideoCore::FrameGen::ShaderModules code;
if (VideoCore::FrameGen::LoadShaderModules(code) != VideoCore::FrameGen::LosslessStatus::Ok) {
return;
}
for (const auto& [id, words] : code) {
modules.emplace(id, CreateWrappedShaderModule(device, words));
}
valid = true;
}
VkShaderModule LsfgShaders::Get(u32 shader_id) const {
const auto hit = modules.find(shader_id);
return hit == modules.end() ? VK_NULL_HANDLE : *hit->second;
}
} // namespace Vulkan
|