diff options
Diffstat (limited to 'examples/gpu-printing/main.cpp')
| -rw-r--r-- | examples/gpu-printing/main.cpp | 38 |
1 files changed, 15 insertions, 23 deletions
diff --git a/examples/gpu-printing/main.cpp b/examples/gpu-printing/main.cpp index aa5beea95..fd15661dd 100644 --- a/examples/gpu-printing/main.cpp +++ b/examples/gpu-printing/main.cpp @@ -25,30 +25,16 @@ ComPtr<slang::ISession> createSlangSession(gfx::IDevice* device) ComPtr<slang::IModule> compileShaderModuleFromFile(slang::ISession* slangSession, char const* filePath) { - SlangCompileRequest* slangRequest = nullptr; - slangSession->createCompileRequest(&slangRequest); - - int translationUnitIndex = spAddTranslationUnit(slangRequest, SLANG_SOURCE_LANGUAGE_SLANG, filePath); - spAddTranslationUnitSourceFile(slangRequest, translationUnitIndex, filePath); - - const SlangResult compileRes = spCompile(slangRequest); - if(auto diagnostics = spGetDiagnosticOutput(slangRequest)) - { - printf("%s", diagnostics); - } - - if(SLANG_FAILED(compileRes)) - { - spDestroyCompileRequest(slangRequest); - return ComPtr<slang::IModule>(); - } - ComPtr<slang::IModule> slangModule; - spCompileRequest_getModule(slangRequest, translationUnitIndex, slangModule.writeRef()); + ComPtr<slang::IBlob> diagnosticBlob; + Slang::String path = resourceBase.resolveResource(filePath); + slangModule = slangSession->loadModule(path.getBuffer(), diagnosticBlob.writeRef()); + diagnoseIfNeeded(diagnosticBlob); + return slangModule; } -struct ExampleProgram +struct ExampleProgram: public TestBase { int gWindowWidth = 640; int gWindowHeight = 480; @@ -73,6 +59,11 @@ ComPtr<gfx::IShaderProgram> loadComputeProgram(slang::IModule* slangModule, char ComPtr<slang::IComponentType> linkedProgram; entryPoint->link(linkedProgram.writeRef()); + if (isTestMode()) + { + printEntrypointHashes(1, 1, linkedProgram); + } + gGPUPrinting.loadStrings(linkedProgram->getLayout()); gfx::IShaderProgram::Desc programDesc = {}; @@ -83,8 +74,9 @@ ComPtr<gfx::IShaderProgram> loadComputeProgram(slang::IModule* slangModule, char return shaderProgram; } -Result execute() +Result execute(int argc, char* argv[]) { + parseOption(argc, argv); IDevice::Desc deviceDesc; Result res = gfxCreateDevice(&deviceDesc, gDevice.writeRef()); if(SLANG_FAILED(res)) return res; @@ -151,10 +143,10 @@ Result execute() }; -int main() +int main(int argc, char* argv[]) { ExampleProgram app; - if (SLANG_FAILED(app.execute())) + if (SLANG_FAILED(app.execute(argc, argv))) { return -1; } |
