summaryrefslogtreecommitdiffstats
path: root/examples/gpu-printing/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/gpu-printing/main.cpp')
-rw-r--r--examples/gpu-printing/main.cpp38
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;
}