[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