diff options
| author | yum <yum.food.vr@gmail.com> | 2025-10-11 15:05:36 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-10-11 15:05:36 -0700 |
| commit | e0f317e187aa4ccf90a3a0e77b941b46f76101c5 (patch) | |
| tree | 39592cd6b06c0c878c4ddfe90db856a722c9e8c2 | |
| parent | d1dc6831813fcfd1a5dde4c8ab155f2c72b78695 (diff) | |
more cleanup
| -rw-r--r-- | README.md | 10 | ||||
| -rw-r--r-- | main.cc | 22 |
2 files changed, 3 insertions, 29 deletions
@@ -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 @@ -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) |
