From 22f0c04d2b5f8245ccaee6caee8e5adebea4aea0 Mon Sep 17 00:00:00 2001 From: David Siher <32305650+dsiher@users.noreply.github.com> Date: Thu, 27 Jan 2022 11:53:58 -0500 Subject: Update heterogeneous-hello-world to use gfx changes + delete shader.cpp (#2085) * Update heterogeneous-hello-world to use gfx changes + delete shader.cpp * Remove "experimental feature" tag from premake * Add placeholder executeComputation_0() to shader.cpp * Add shader.cpp to heterogeneous-hello-world files in premake * Added project "heterogeneous-first-gen" to address first time build issues * Re-add "experimental feature" tag, clean up generated file structure Co-authored-by: jsmall-nvidia --- .../heterogeneous-first-gen.vcxproj | 168 +++++++++++++++++++++ .../heterogeneous-hello-world.vcxproj | 15 +- examples/heterogeneous-hello-world/main.cpp | 5 +- examples/heterogeneous-hello-world/shader.cpp | 1 - premake5.lua | 31 ++-- 5 files changed, 199 insertions(+), 21 deletions(-) create mode 100644 build/visual-studio/heterogeneous-hello-world/heterogeneous-first-gen.vcxproj delete mode 100644 examples/heterogeneous-hello-world/shader.cpp diff --git a/build/visual-studio/heterogeneous-hello-world/heterogeneous-first-gen.vcxproj b/build/visual-studio/heterogeneous-hello-world/heterogeneous-first-gen.vcxproj new file mode 100644 index 000000000..a2181ad08 --- /dev/null +++ b/build/visual-studio/heterogeneous-hello-world/heterogeneous-first-gen.vcxproj @@ -0,0 +1,168 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Debug + ARM + + + Debug aarch64 + Win32 + + + Debug aarch64 + x64 + + + Debug aarch64 + ARM + + + Release + Win32 + + + Release + x64 + + + Release + ARM + + + Release aarch64 + Win32 + + + Release aarch64 + x64 + + + Release aarch64 + ARM + + + + {3E8C6F8B-AAC3-B722-B3CD-1B461F84DE1B} + true + Win32Proj + heterogeneous-first-gen + + + + Utility + v142 + + + Utility + v142 + + + Utility + v142 + + + Utility + v142 + + + Utility + v142 + + + Utility + v142 + + + + + + + + + + + + + + + + + + + + + + + + + ..\..\..\bin\windows-x86\debug\ + obj\x86\Debug\ + + + ..\..\..\bin\windows-x64\debug\ + obj\x64\Debug\ + + + ..\..\..\bin\windows-aarch64\debug\ + obj\aarch64\Debug\ + + + ..\..\..\bin\windows-x86\release\ + obj\x86\Release\ + + + ..\..\..\bin\windows-x64\release\ + obj\x64\Release\ + + + ..\..\..\bin\windows-aarch64\release\ + obj\aarch64\Release\ + + + + "../../../bin/windows-x86/debug/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl + + + + + "../../../bin/windows-x64/debug/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl + + + + + "../../../bin/windows-aarch64/debug/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl + + + + + "../../../bin/windows-x86/release/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl + + + + + "../../../bin/windows-x64/release/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl + + + + + "../../../bin/windows-aarch64/release/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl + + + + + {D56CBCEB-1EB5-4CA8-AEC4-48EA35ED61C7} + + + + + + \ No newline at end of file diff --git a/build/visual-studio/heterogeneous-hello-world/heterogeneous-hello-world.vcxproj b/build/visual-studio/heterogeneous-hello-world/heterogeneous-hello-world.vcxproj index a7489c0b3..70c173112 100644 --- a/build/visual-studio/heterogeneous-hello-world/heterogeneous-hello-world.vcxproj +++ b/build/visual-studio/heterogeneous-hello-world/heterogeneous-hello-world.vcxproj @@ -175,7 +175,7 @@ "../../../bin/windows-x86/debug/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl - Generating shader.cpp from shader.slang + Generating shader.cpp in ../../../examples/heterogeneous-hello-world/ @@ -194,7 +194,7 @@ "../../../bin/windows-x64/debug/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl - Generating shader.cpp from shader.slang + Generating shader.cpp in ../../../examples/heterogeneous-hello-world/ @@ -213,7 +213,7 @@ "../../../bin/windows-aarch64/debug/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl - Generating shader.cpp from shader.slang + Generating shader.cpp in ../../../examples/heterogeneous-hello-world/ @@ -236,7 +236,7 @@ "../../../bin/windows-x86/release/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl - Generating shader.cpp from shader.slang + Generating shader.cpp in ../../../examples/heterogeneous-hello-world/ @@ -259,7 +259,7 @@ "../../../bin/windows-x64/release/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl - Generating shader.cpp from shader.slang + Generating shader.cpp in ../../../examples/heterogeneous-hello-world/ @@ -282,7 +282,7 @@ "../../../bin/windows-aarch64/release/slangc" "../../../examples/heterogeneous-hello-world/shader.slang" -o "../../../examples/heterogeneous-hello-world/shader.cpp" -heterogeneous -target cpp -target hlsl - Generating shader.cpp from shader.slang + Generating shader.cpp in ../../../examples/heterogeneous-hello-world/ @@ -314,6 +314,9 @@ {F9BE7957-8399-899E-0C49-E714FDDD4B65} + + {3E8C6F8B-AAC3-B722-B3CD-1B461F84DE1B} + diff --git a/examples/heterogeneous-hello-world/main.cpp b/examples/heterogeneous-hello-world/main.cpp index 05d1e4787..0d8d2ca73 100644 --- a/examples/heterogeneous-hello-world/main.cpp +++ b/examples/heterogeneous-hello-world/main.cpp @@ -132,7 +132,6 @@ gfx::IShaderProgram* loadShaderProgram(gfx::IDevice *device, String entryPoint, // We can create a `gfx::IShaderProgram` object from `composedProgram` // so it may be used by the graphics layer. gfx::IShaderProgram::Desc programDesc = {}; - programDesc.pipelineType = gfx::PipelineType::Compute; programDesc.slangProgram = composedProgram.get(); gProgram = device->createProgram(programDesc); @@ -158,7 +157,7 @@ gfx::IBufferResource* createStructuredBuffer( ResourceState::CopyDestination, ResourceState::CopySource); bufferDesc.defaultState = ResourceState::UnorderedAccess; - bufferDesc.cpuAccessFlags = AccessFlag::Write | AccessFlag::Read; + bufferDesc.memoryType = MemoryType::DeviceLocal; SlangResult result = device->createBufferResource(bufferDesc, (void *)initialData, @@ -237,7 +236,7 @@ void dispatchComputation( encoder->endEncoding(); commandBuffer->close(); gQueue->executeCommandBuffer(commandBuffer); - gQueue->wait(); + gQueue->waitOnHost(); } bool printOutputValues( diff --git a/examples/heterogeneous-hello-world/shader.cpp b/examples/heterogeneous-hello-world/shader.cpp deleted file mode 100644 index b1fff29f6..000000000 --- a/examples/heterogeneous-hello-world/shader.cpp +++ /dev/null @@ -1 +0,0 @@ -// This is a placeholder. The contents will be generated during build. \ No newline at end of file diff --git a/premake5.lua b/premake5.lua index 69f18a5b4..e83d61728 100644 --- a/premake5.lua +++ b/premake5.lua @@ -151,14 +151,14 @@ newoption { default = "true", allowed = { { "true", "True"}, { "false", "False" } } } - -newoption { + + newoption { trigger = "enable-experimental-projects", description = "(Optional) If true include experimental projects in build.", value = "bool", default = "false", allowed = { { "true", "True"}, { "false", "False" } } - } + } buildLocation = _OPTIONS["build-location"] executeBinary = (_OPTIONS["execute-binary"] == "true") @@ -679,21 +679,30 @@ newoption { example "cpu-hello-world" kind "ConsoleApp" - -if enableExperimental then - -- TODO: Currently this project doesn't build on linux CI. - -- Need to fix so that we don't check in shader.cpp, which changes - -- everytime when it is generated on a different machine (contains absolute path) + + if enableExperimental then + project "heterogeneous-first-gen" + kind "Utility" + links "slangc" + location("build/" .. slangUtil.getBuildLocationName(targetInfo) .. "/heterogeneous-hello-world") + prebuildcommands { + "\"%{wks.location:lower()}/bin/" .. targetName .. "/%{cfg.buildcfg:lower()}/slangc\" \"%{wks.location:lower()}/examples/heterogeneous-hello-world/shader.slang\" -o \"%{wks.location:lower()}/examples/heterogeneous-hello-world/shader.cpp\" -heterogeneous -target cpp -target hlsl" + } + example "heterogeneous-hello-world" kind "ConsoleApp" -- Additionally add slangc for compiling shader.cpp - links { "example-base", "slang", "gfx", "gfx-util", "slangc", "platform", "core" } + links { "example-base", "slang", "gfx", "gfx-util", "slangc", "platform", "core", "heterogeneous-first-gen" } -- Generate shader.cpp from shader.slang - prebuildmessage ("Generating shader.cpp from shader.slang") + prebuildmessage "Generating shader.cpp in %{wks.location:lower()}/examples/heterogeneous-hello-world/" prebuildcommands { "\"%{wks.location:lower()}/bin/" .. targetName .. "/%{cfg.buildcfg:lower()}/slangc\" \"%{wks.location:lower()}/examples/heterogeneous-hello-world/shader.slang\" -o \"%{wks.location:lower()}/examples/heterogeneous-hello-world/shader.cpp\" -heterogeneous -target cpp -target hlsl" } -end + files { + "examples/heterogeneous-hello-world/shader.cpp" + } + end + -- Most of the other projects have more interesting configuration going -- on, so let's walk through them in order of increasing complexity. -- -- cgit v1.2.3