]> git.seodisparate.com - blue_noise_generation/commitdiff
Refactor: Move shader loading code to inner scope
authorStephen Seo <seo.disparate@gmail.com>
Wed, 20 Mar 2024 10:25:22 +0000 (19:25 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Wed, 20 Mar 2024 10:25:22 +0000 (19:25 +0900)
This prevents the loaded shader data from persisting on the stack even
when it is no longer needed.

src/blue_noise.cpp

index ffdec72cd65004be20af6d3284e4923a4ee80c7c..42a8143682e65a38bc92d3801a1f070fb2bef2b9 100644 (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.
     VkPipelineLayout compute_pipeline_layout;
     VkPipeline compute_pipeline;
     utility::Cleanup cleanup_pipeline_layout{};
     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{};
       shader_module_create_info.sType =
           VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;