diff options
| author | Yong He <yonghe@outlook.com> | 2021-03-10 10:58:15 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-10 10:58:15 -0800 |
| commit | 6ef4054f8a8aea4ec61481057fa7e16aaecde6d7 (patch) | |
| tree | 66edcae112faff7276c2595865463698bde277fd /examples/gpu-printing/main.cpp | |
| parent | 2765861cdc104e6104a31cf9e20800b8d1dfae26 (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.cpp | 46 |
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); |
