From 6ef4054f8a8aea4ec61481057fa7e16aaecde6d7 Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 10 Mar 2021 10:58:15 -0800 Subject: Swapchain resize and rename to `IDevice` (#1741) * Swapchain resize * Fix. --- examples/gpu-printing/main.cpp | 46 ++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) (limited to 'examples/gpu-printing/main.cpp') 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 createSlangSession(gfx::IRenderer* renderer) +ComPtr createSlangSession(gfx::IDevice* device) { - ComPtr 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 slangSession; - slangGlobalSession->createSession(sessionDesc, slangSession.writeRef()); - + ComPtr slangSession = device->getSlangSession(); return slangSession; } @@ -63,7 +50,7 @@ struct ExampleProgram int gWindowWidth = 640; int gWindowHeight = 480; -ComPtr gRenderer; +ComPtr gDevice; ComPtr gSlangSession; ComPtr gSlangModule; @@ -103,19 +90,18 @@ ComPtr 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 blob; - gRenderer->readBufferResource(printBuffer, 0, printBufferSize, blob.writeRef()); + gDevice->readBufferResource(printBuffer, 0, printBufferSize, blob.writeRef()); gGPUPrinting.processGPUPrintCommands(blob->getBufferPointer(), printBufferSize); -- cgit v1.2.3