add buffer creation utility function
diff --git a/examples/HelloDepthStencil.cpp b/examples/HelloDepthStencil.cpp index c2c6c30..a23fc35 100644 --- a/examples/HelloDepthStencil.cpp +++ b/examples/HelloDepthStencil.cpp
@@ -58,13 +58,7 @@ 20, 21, 22, 20, 22, 23 }; - indexBuffer = device.CreateBufferBuilder() - .SetAllowedUsage(nxt::BufferUsageBit::Mapped | nxt::BufferUsageBit::Index) - .SetInitialUsage(nxt::BufferUsageBit::Mapped) - .SetSize(sizeof(indexData)) - .GetResult(); - indexBuffer.SetSubData(0, sizeof(indexData) / sizeof(uint32_t), indexData); - indexBuffer.FreezeUsage(nxt::BufferUsageBit::Index); + indexBuffer = CreateFrozenBufferFromData(device, (void*)indexData, sizeof(indexData), nxt::BufferUsageBit::Index); static const float vertexData[6 * 4 * 6] = { -1.0, -1.0, 1.0, 1.0, 0.0, 0.0, @@ -97,15 +91,7 @@ -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, -1.0, 1.0, 1.0, 1.0 }; - - vertexBuffer = device.CreateBufferBuilder() - .SetAllowedUsage(nxt::BufferUsageBit::Mapped | nxt::BufferUsageBit::Vertex) - .SetInitialUsage(nxt::BufferUsageBit::Mapped) - .SetSize(sizeof(vertexData)) - .GetResult(); - vertexBuffer.SetSubData(0, sizeof(vertexData) / sizeof(uint32_t), - reinterpret_cast<const uint32_t*>(vertexData)); - vertexBuffer.FreezeUsage(nxt::BufferUsageBit::Vertex); + vertexBuffer = CreateFrozenBufferFromData(device, (void*)vertexData, sizeof(vertexData), nxt::BufferUsageBit::Vertex); static const float planeData[6 * 4] = { -2.0, -1.0, -2.0, 0.5, 0.5, 0.5, @@ -113,15 +99,7 @@ 2.0, -1.0, 2.0, 0.5, 0.5, 0.5, -2.0, -1.0, 2.0, 0.5, 0.5, 0.5, }; - - planeBuffer = device.CreateBufferBuilder() - .SetAllowedUsage(nxt::BufferUsageBit::Mapped | nxt::BufferUsageBit::Vertex) - .SetInitialUsage(nxt::BufferUsageBit::Mapped) - .SetSize(sizeof(planeData)) - .GetResult(); - planeBuffer.SetSubData(0, sizeof(planeData) / sizeof(uint32_t), - reinterpret_cast<const uint32_t*>(planeData)); - planeBuffer.FreezeUsage(nxt::BufferUsageBit::Vertex); + planeBuffer = CreateFrozenBufferFromData(device, (void*)planeData, sizeof(planeData), nxt::BufferUsageBit::Vertex); } struct {
diff --git a/examples/Utils.cpp b/examples/Utils.cpp index 9d344a1..289bfc8 100644 --- a/examples/Utils.cpp +++ b/examples/Utils.cpp
@@ -245,6 +245,17 @@ .GetResult(); } +nxt::Buffer CreateFrozenBufferFromData(const nxt::Device& device, void* data, uint32_t size, nxt::BufferUsageBit usage) { + nxt::Buffer buffer = device.CreateBufferBuilder() + .SetAllowedUsage(nxt::BufferUsageBit::Mapped | usage) + .SetInitialUsage(nxt::BufferUsageBit::Mapped) + .SetSize(size) + .GetResult(); + buffer.SetSubData(0, size / sizeof(uint32_t), reinterpret_cast<const uint32_t*>(data)); + buffer.FreezeUsage(usage); + return buffer; +} + extern "C" { bool InitUtils(int argc, const char** argv) { for (int i = 0; i < argc; i++) { @@ -296,6 +307,10 @@ return CreateShaderModule(device, static_cast<nxt::ShaderStage>(stage), source).Release(); } + nxtBuffer CreateFrozenBufferFromData(nxtDevice device, void* data, uint32_t size, nxtBufferUsageBit usage) { + return CreateFrozenBufferFromData(device, data, size, usage); + } + void DoSwapBuffers() { if (cmdBufType == CmdBufType::Terrible) { c2sBuf->Flush();
diff --git a/examples/Utils.h b/examples/Utils.h index b49eb20..df4c183 100644 --- a/examples/Utils.h +++ b/examples/Utils.h
@@ -34,7 +34,9 @@ nxt::Device CreateCppNXTDevice(); nxt::ShaderModule CreateShaderModule(const nxt::Device& device, nxt::ShaderStage stage, const char* source); void CreateDefaultRenderPass(const nxt::Device& device, nxt::RenderPass* renderPass, nxt::Framebuffer* framebuffer); + nxt::Buffer CreateFrozenBufferFromData(const nxt::Device& device, void* data, uint32_t size, nxt::BufferUsageBit usage); #else nxtDevice CreateNXTDevice(); nxtShaderModule CreateShaderModule(nxtDevice device, nxtShaderStage stage, const char* source); + nxtBuffer CreateFrozenBufferFromData(nxtDevice device, void* data, uint32_t size, nxtBufferUsageBit usage); #endif