[Bf-blender-cvs] [a68be3b3c2b] tmp-vulkan: ShaderCompiler: Use CPP strings to improve API.

Jeroen Bakker noreply at git.blender.org
Fri Jun 25 16:53:34 CEST 2021


Commit: a68be3b3c2ba91d31b6b80e54ec23c365af1981a
Author: Jeroen Bakker
Date:   Fri Jun 25 14:49:50 2021 +0200
Branches: tmp-vulkan
https://developer.blender.org/rBa68be3b3c2ba91d31b6b80e54ec23c365af1981a

ShaderCompiler: Use CPP strings to improve API.

===================================================================

M	intern/shader_compiler/intern/shaderc/ShaderCCompiler.cc
M	intern/shader_compiler/shader_compiler.hh
M	source/blender/gpu/tests/gpu_shader_compiler_test.cc
M	source/blender/gpu/vulkan/vk_shader.cc

===================================================================

diff --git a/intern/shader_compiler/intern/shaderc/ShaderCCompiler.cc b/intern/shader_compiler/intern/shaderc/ShaderCCompiler.cc
index 73d920965b5..c6007f1c4a3 100644
--- a/intern/shader_compiler/intern/shaderc/ShaderCCompiler.cc
+++ b/intern/shader_compiler/intern/shaderc/ShaderCCompiler.cc
@@ -72,7 +72,7 @@ ShaderCResult *ShaderCCompiler::compile_spirv(const Job &job)
   shaderc_shader_kind kind = get_source_kind(job.source_type);
 
   ::shaderc::SpvCompilationResult shaderc_result = compiler_.CompileGlslToSpv(
-      job.source, kind, job.name, options);
+      job.source.c_str(), kind, job.name.c_str(), options);
 
   ShaderCResult *result = new ShaderCResult();
   result->init(job, shaderc_result);
diff --git a/intern/shader_compiler/shader_compiler.hh b/intern/shader_compiler/shader_compiler.hh
index a13d5a8f8df..228c60b8cbd 100644
--- a/intern/shader_compiler/shader_compiler.hh
+++ b/intern/shader_compiler/shader_compiler.hh
@@ -72,8 +72,8 @@ class Compiler {
 
 class Job {
  public:
-  const char *name = nullptr;
-  const char *source = nullptr;
+  std::string name;
+  std::string source;
   SourceType source_type;
   TargetType compilation_target;
   OptimizationLevel optimization_level = OptimizationLevel::NotOptimized;
diff --git a/source/blender/gpu/tests/gpu_shader_compiler_test.cc b/source/blender/gpu/tests/gpu_shader_compiler_test.cc
index 1418a435780..37eb4608cb6 100644
--- a/source/blender/gpu/tests/gpu_shader_compiler_test.cc
+++ b/source/blender/gpu/tests/gpu_shader_compiler_test.cc
@@ -8,7 +8,7 @@ namespace blender::gpu::tests {
 #ifdef WITH_VULKAN
 TEST_F(GPUVulkanTest, shader_compiler)
 {
-  const char *source = "#version 450\nvoid main() {}";
+  std::string source = "#version 450\nvoid main() {}";
   shader_compiler::Compiler *compiler = shader_compiler::Compiler::create_default();
   shader_compiler::Job job;
   job.source = source;
diff --git a/source/blender/gpu/vulkan/vk_shader.cc b/source/blender/gpu/vulkan/vk_shader.cc
index 9848e4835a2..70cc18d0968 100644
--- a/source/blender/gpu/vulkan/vk_shader.cc
+++ b/source/blender/gpu/vulkan/vk_shader.cc
@@ -156,10 +156,8 @@ std::unique_ptr<std::vector<uint32_t>> VKShader::compile_source(MutableSpan<cons
 
   shader_compiler::Compiler *compiler = shader_compiler::Compiler::create_default();
   shader_compiler::Job job;
-
-  /* TODO(jbakker): Ugly! should change interface. */
-  job.name = std::string(name).c_str();
-  job.source = std::string(source).c_str();
+  job.name = name;
+  job.source = source;
   job.compilation_target = shader_compiler::TargetType::SpirV;
   job.source_type = to_source_type(stage);



More information about the Bf-blender-cvs mailing list