Refactor: Move shader loading code to inner scope

This prevents the loaded shader data from persisting on the stack even
when it is no longer needed.
This commit is contained in:
Stephen Seo 2024-03-20 19:25:22 +09:00
parent d29d2434ab
commit 020993fb19

View file

@ -436,29 +436,29 @@ image::Bl dither::blue_noise(int width, int height, int threads,
} }
} }
// Load shader.
std::vector<char> shader;
{
std::ifstream ifs("compute.spv");
if (!ifs.good()) {
std::clog << "WARNING: Failed to find compute.spv!\n";
goto ENDOF_VULKAN;
}
ifs.seekg(0, std::ios_base::end);
auto size = ifs.tellg();
shader.resize(size);
ifs.seekg(0);
ifs.read(shader.data(), size);
ifs.close();
}
// create compute pipeline. // create compute pipeline.
VkPipelineLayout compute_pipeline_layout; VkPipelineLayout compute_pipeline_layout;
VkPipeline compute_pipeline; VkPipeline compute_pipeline;
utility::Cleanup cleanup_pipeline_layout{}; utility::Cleanup cleanup_pipeline_layout{};
utility::Cleanup cleanup_pipeline{}; utility::Cleanup cleanup_pipeline{};
{ {
// Load shader.
std::vector<char> shader;
{
std::ifstream ifs("compute.spv");
if (!ifs.good()) {
std::clog << "WARNING: Failed to find compute.spv!\n";
goto ENDOF_VULKAN;
}
ifs.seekg(0, std::ios_base::end);
auto size = ifs.tellg();
shader.resize(size);
ifs.seekg(0);
ifs.read(shader.data(), size);
ifs.close();
}
VkShaderModuleCreateInfo shader_module_create_info{}; VkShaderModuleCreateInfo shader_module_create_info{};
shader_module_create_info.sType = shader_module_create_info.sType =
VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;