summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md10
-rw-r--r--main.cc22
2 files changed, 3 insertions, 29 deletions
diff --git a/README.md b/README.md
index 174ccd2..6c31d8c 100644
--- a/README.md
+++ b/README.md
@@ -6,13 +6,9 @@ require an entrypoint.
basics and gotchas
- all functions marked `public` are exported as entrypoints.
- - this causes slang to put their arguments in a cbuffer. we post-process them
- to fix this.
-- any autodiff function calls within a module must *not* be to `public` APIs.
- - this is a consequence of the prior point. any public API is seen by slang
- as an "entrypoint" which accepts a cbuffer argument. the autodiff logic
- does not handle this edge case, so it tries to pass arguments to a function
- which takes no arguments.
+- we use a custom build of slang which lets entrypoints use regular arguments
+ instead of cbuffers / structs.
+- it should "just work" for simple math kernels
build instructions
diff --git a/main.cc b/main.cc
index aa09d31..32bd7f4 100644
--- a/main.cc
+++ b/main.cc
@@ -452,29 +452,7 @@ int main(int argc, char** argv)
rawOutputPath.replace_extension(".raw.hlsl");
writeTextFile(rawOutputPath, hlslSource);
- // Remove [shader("dispatch")]export lines
std::string finalHlsl = hlslSource;
- const std::string shaderExportToken = "[shader(\"dispatch\")]export";
- std::size_t pos = 0;
- while ((pos = finalHlsl.find(shaderExportToken, pos)) != std::string::npos)
- {
- std::size_t lineEnd = pos + shaderExportToken.size();
- // Skip optional whitespace and newline
- while (lineEnd < finalHlsl.size() &&
- (finalHlsl[lineEnd] == ' ' || finalHlsl[lineEnd] == '\t'))
- {
- ++lineEnd;
- }
- if (lineEnd < finalHlsl.size() && finalHlsl[lineEnd] == '\r')
- {
- ++lineEnd;
- }
- if (lineEnd < finalHlsl.size() && finalHlsl[lineEnd] == '\n')
- {
- ++lineEnd;
- }
- finalHlsl.erase(pos, lineEnd - pos);
- }
IncludeGuardInfo includeGuard = detectIncludeGuard(modulePath);
if (includeGuard.present)