diff options
Diffstat (limited to 'examples/gpu-printing')
| -rw-r--r-- | examples/gpu-printing/main.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/examples/gpu-printing/main.cpp b/examples/gpu-printing/main.cpp index 4f79147f6..63eb31a82 100644 --- a/examples/gpu-printing/main.cpp +++ b/examples/gpu-printing/main.cpp @@ -175,19 +175,26 @@ Result execute() printBufferViewDesc.type = IResourceView::Type::UnorderedAccess; auto printBufferView = gRenderer->createBufferView(printBuffer, printBufferViewDesc); + ICommandQueue::Desc queueDesc = {ICommandQueue::QueueType::Graphics}; + auto queue = gRenderer->createCommandQueue(queueDesc); + auto commandBuffer = queue->createCommandBuffer(); + auto encoder = commandBuffer->encodeComputeCommands(); // TODO: need to copy a zero into the start of the print buffer! gDescriptorSet->setResource(0, 0, printBufferView); - gRenderer->setDescriptorSet(PipelineType::Compute, gPipelineLayout, 0, gDescriptorSet); - - gRenderer->setPipelineState(gPipelineState); - gRenderer->dispatchCompute(1, 1, 1); + encoder->setDescriptorSet(gPipelineLayout, 0, gDescriptorSet); + encoder->setPipelineState(gPipelineState); + encoder->dispatchCompute(1, 1, 1); + encoder->endEncoding(); + commandBuffer->close(); + queue->executeCommandBuffer(commandBuffer); // TODO: need to copy from the print buffer to a staging buffer... - auto printBufferData = (uint32_t*) gRenderer->map(printBuffer, MapFlavor::HostRead); + ComPtr<ISlangBlob> blob; + gRenderer->readBufferResource(printBuffer, 0, printBufferSize, blob.writeRef()); - gGPUPrinting.processGPUPrintCommands(printBufferData, printBufferSize); + gGPUPrinting.processGPUPrintCommands(blob->getBufferPointer(), printBufferSize); return SLANG_OK; } |
