summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/gpu-printing/main.cpp38
-rw-r--r--examples/hello-world/main.cpp10
2 files changed, 15 insertions, 33 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;
}
diff --git a/examples/hello-world/main.cpp b/examples/hello-world/main.cpp
index 526ab1a2a..87d440901 100644
--- a/examples/hello-world/main.cpp
+++ b/examples/hello-world/main.cpp
@@ -70,7 +70,6 @@ struct HelloWorldExample : public TestBase
int main(int argc, char* argv[])
{
- fprintf(stdout, "Hello, world! Entry Point\n");
initDebugCallback();
HelloWorldExample example;
example.parseOption(argc, argv);
@@ -84,19 +83,10 @@ int main(int argc, char* argv[])
int HelloWorldExample::run()
{
RETURN_ON_FAIL(initVulkanInstanceAndDevice());
- fprintf(stdout, "initVulkanInstanceAndDevice done\n");
-
RETURN_ON_FAIL(createComputePipelineFromShader());
- fprintf(stdout, "createComputePipelineFromShader done\n");
-
RETURN_ON_FAIL(createInOutBuffers());
- fprintf(stdout, "createInOutBuffers done\n");
-
RETURN_ON_FAIL(dispatchCompute());
- fprintf(stdout, "dispatchCompute done\n");
-
RETURN_ON_FAIL(printComputeResults());
- fprintf(stdout, "printComputeResults done\n");
return 0;
}