summaryrefslogtreecommitdiffstats
path: root/examples/gpu-printing/main.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2021-03-10 10:58:15 -0800
committerGitHub <noreply@github.com>2021-03-10 10:58:15 -0800
commit6ef4054f8a8aea4ec61481057fa7e16aaecde6d7 (patch)
tree66edcae112faff7276c2595865463698bde277fd /examples/gpu-printing/main.cpp
parent2765861cdc104e6104a31cf9e20800b8d1dfae26 (diff)
Swapchain resize and rename to `IDevice` (#1741)
* Swapchain resize * Fix.
Diffstat (limited to 'examples/gpu-printing/main.cpp')
-rw-r--r--examples/gpu-printing/main.cpp46
1 files changed, 17 insertions, 29 deletions
diff --git a/examples/gpu-printing/main.cpp b/examples/gpu-printing/main.cpp
index e95233571..3fd1e460a 100644
--- a/examples/gpu-printing/main.cpp
+++ b/examples/gpu-printing/main.cpp
@@ -14,22 +14,9 @@ using namespace gfx;
#include "gpu-printing.h"
-ComPtr<slang::ISession> createSlangSession(gfx::IRenderer* renderer)
+ComPtr<slang::ISession> createSlangSession(gfx::IDevice* device)
{
- ComPtr<slang::IGlobalSession> slangGlobalSession;
- slangGlobalSession.attach(spCreateSession(NULL));
-
- slang::TargetDesc targetDesc;
- targetDesc.format = SLANG_DXBC;
- targetDesc.profile = spFindProfile(slangGlobalSession, "sm_5_0");
-
- slang::SessionDesc sessionDesc;
- sessionDesc.targetCount = 1;
- sessionDesc.targets = &targetDesc;
-
- ComPtr<slang::ISession> slangSession;
- slangGlobalSession->createSession(sessionDesc, slangSession.writeRef());
-
+ ComPtr<slang::ISession> slangSession = device->getSlangSession();
return slangSession;
}
@@ -63,7 +50,7 @@ struct ExampleProgram
int gWindowWidth = 640;
int gWindowHeight = 480;
-ComPtr<gfx::IRenderer> gRenderer;
+ComPtr<gfx::IDevice> gDevice;
ComPtr<slang::ISession> gSlangSession;
ComPtr<slang::IModule> gSlangModule;
@@ -103,19 +90,18 @@ ComPtr<gfx::IShaderProgram> loadComputeProgram(slang::IModule* slangModule, char
programDesc.kernels = &kernelDescs[0];
programDesc.kernelCount = 2;
- auto shaderProgram = gRenderer->createProgram(programDesc);
+ auto shaderProgram = gDevice->createProgram(programDesc);
return shaderProgram;
}
Result execute()
{
- IRenderer::Desc rendererDesc;
- rendererDesc.rendererType = gfx::RendererType::DirectX11;
- Result res = gfxCreateRenderer(&rendererDesc, gRenderer.writeRef());
+ IDevice::Desc deviceDesc;
+ Result res = gfxCreateDevice(&deviceDesc, gDevice.writeRef());
if(SLANG_FAILED(res)) return res;
- gSlangSession = createSlangSession(gRenderer);
+ gSlangSession = createSlangSession(gDevice);
gSlangModule = compileShaderModuleFromFile(gSlangSession, "kernels.slang");
gProgram = loadComputeProgram(gSlangModule, "computeMain");
@@ -128,7 +114,7 @@ Result execute()
IDescriptorSetLayout::Desc descriptorSetLayoutDesc;
descriptorSetLayoutDesc.slotRangeCount = 1;
descriptorSetLayoutDesc.slotRanges = &slotRanges[0];
- auto descriptorSetLayout = gRenderer->createDescriptorSetLayout(descriptorSetLayoutDesc);
+ auto descriptorSetLayout = gDevice->createDescriptorSetLayout(descriptorSetLayoutDesc);
if(!descriptorSetLayout) return SLANG_FAIL;
IPipelineLayout::DescriptorSetDesc descriptorSets[] =
@@ -139,7 +125,7 @@ Result execute()
pipelineLayoutDesc.renderTargetCount = 1;
pipelineLayoutDesc.descriptorSetCount = 1;
pipelineLayoutDesc.descriptorSets = &descriptorSets[0];
- auto pipelineLayout = gRenderer->createPipelineLayout(pipelineLayoutDesc);
+ auto pipelineLayout = gDevice->createPipelineLayout(pipelineLayoutDesc);
if(!pipelineLayout) return SLANG_FAIL;
gPipelineLayout = pipelineLayout;
@@ -147,7 +133,8 @@ Result execute()
// Once we have the descriptor set layout, we can allocate
// and fill in a descriptor set to hold our parameters.
//
- auto descriptorSet = gRenderer->createDescriptorSet(descriptorSetLayout, IDescriptorSet::Flag::Transient);
+ auto descriptorSet =
+ gDevice->createDescriptorSet(descriptorSetLayout, IDescriptorSet::Flag::Transient);
if(!descriptorSet) return SLANG_FAIL;
gDescriptorSet = descriptorSet;
@@ -155,7 +142,7 @@ Result execute()
ComputePipelineStateDesc desc;
desc.pipelineLayout = gPipelineLayout;
desc.program = gProgram;
- auto pipelineState = gRenderer->createComputePipelineState(desc);
+ auto pipelineState = gDevice->createComputePipelineState(desc);
if(!pipelineState) return SLANG_FAIL;
gPipelineState = pipelineState;
@@ -166,14 +153,15 @@ Result execute()
printBufferDesc.init(printBufferSize);
printBufferDesc.elementSize = sizeof(uint32_t);
printBufferDesc.cpuAccessFlags = IResource::AccessFlag::Read; // | Resource::AccessFlag::Write;
- auto printBuffer = gRenderer->createBufferResource(IResource::Usage::UnorderedAccess, printBufferDesc);
+ auto printBuffer =
+ gDevice->createBufferResource(IResource::Usage::UnorderedAccess, printBufferDesc);
IResourceView::Desc printBufferViewDesc;
printBufferViewDesc.type = IResourceView::Type::UnorderedAccess;
- auto printBufferView = gRenderer->createBufferView(printBuffer, printBufferViewDesc);
+ auto printBufferView = gDevice->createBufferView(printBuffer, printBufferViewDesc);
ICommandQueue::Desc queueDesc = {ICommandQueue::QueueType::Graphics};
- auto queue = gRenderer->createCommandQueue(queueDesc);
+ auto queue = gDevice->createCommandQueue(queueDesc);
auto commandBuffer = queue->createCommandBuffer();
auto encoder = commandBuffer->encodeComputeCommands();
// TODO: need to copy a zero into the start of the print buffer!
@@ -189,7 +177,7 @@ Result execute()
// TODO: need to copy from the print buffer to a staging buffer...
ComPtr<ISlangBlob> blob;
- gRenderer->readBufferResource(printBuffer, 0, printBufferSize, blob.writeRef());
+ gDevice->readBufferResource(printBuffer, 0, printBufferSize, blob.writeRef());
gGPUPrinting.processGPUPrintCommands(blob->getBufferPointer(), printBufferSize);