summaryrefslogtreecommitdiff
path: root/sc/sc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sc/sc.cpp')
-rw-r--r--sc/sc.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/sc/sc.cpp b/sc/sc.cpp
index 2bd1406..de39187 100644
--- a/sc/sc.cpp
+++ b/sc/sc.cpp
@@ -508,6 +508,7 @@ struct Desc {
std::vector<uint32_t> compile_shader(
Desc& d,
+ const char* fname,
const char* presrc,
const char* src,
const char* define,
@@ -532,6 +533,9 @@ std::vector<uint32_t> compile_shader(
#ifdef DEBUG
options.disableOptimizer = true;
options.generateDebugInfo = true;
+ options.emitNonSemanticShaderDebugInfo = true;
+ options.emitNonSemanticShaderDebugSource = true;
+ options.stripDebugInfo = false;
#else
options.disableOptimizer = false;
options.stripDebugInfo = true;
@@ -541,6 +545,14 @@ std::vector<uint32_t> compile_shader(
shader.setEnvClient(glslang::EShClientVulkan, client_version);
shader.setEnvTarget(glslang::EShTargetSpv, target_version);
shader.setEntryPoint(d.entrypoints[stage].c_str());
+#ifdef DEBUG
+ shader.setDebugInfo(true);
+ shader.setSourceEntryPoint(d.entrypoints[stage].c_str());
+ shader.setSourceFile(fname);
+ shader.addSourceText(src, strlen(src));
+#else
+ (void)fname;
+#endif
if (!shader.preprocess(
GetDefaultResources(),
glsl_version,
@@ -599,6 +611,7 @@ void configure(
}
void compile_shaders(
+ const char* fname,
std::vector<uint32_t>* spv,
const char* src,
Desc& d
@@ -612,6 +625,7 @@ void compile_shaders(
configure(d, i, define, lang, ps);
spv[i] = compile_shader(
d,
+ fname,
ps.c_str(),
src,
define,
@@ -718,7 +732,7 @@ int main(int argc, const char** argv) {
desc_src = get_desc(src);
cdesc = parse_desc(dp_mem, desc_src.c_str());
desc.build(cdesc);
- compile_shaders(spv, src, desc);
+ compile_shaders(argv[2], spv, src, desc);
write_csh(argv[2], desc, spv);
return 0;
}