diff options
| author | Yong He <yonghe@outlook.com> | 2021-04-24 00:17:43 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-24 00:17:43 -0700 |
| commit | 9a5672d7b8a155117a2c3f8375e3b8a5b43d91b7 (patch) | |
| tree | 9be3ea214ea735e41e8fdaef9824e84212a30cbb /tools/platform/gui.cpp | |
| parent | 697017e6fae8c252638abc298ec1556de2e41314 (diff) | |
Remove resource `Usage` from `gfx` interface. (#1813)
* Fix `model-viewer` crash when using Vulkan.
Fixing an issue in shader object layout creation for to make sure a correct descriptor set layout is calculated for types that need an implicit constant buffer.
* Fix formatting.
* Fixes.
* Fix memory leak in vulkan.
* Remove resource `Usage` from `gfx` interface.
Diffstat (limited to 'tools/platform/gui.cpp')
| -rw-r--r-- | tools/platform/gui.cpp | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/tools/platform/gui.cpp b/tools/platform/gui.cpp index 63cf3d51b..ba6fc35f8 100644 --- a/tools/platform/gui.cpp +++ b/tools/platform/gui.cpp @@ -139,16 +139,23 @@ GUI::GUI( io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height); { - gfx::ITextureResource::Desc desc; - desc.init2D(IResource::Type::Texture2D, Format::RGBA_Unorm_UInt8, width, height, 1); - desc.setDefaults(IResource::Usage::PixelShaderResource); + gfx::ITextureResource::Desc desc = {}; + desc.type = IResource::Type::Texture2D; + desc.format = Format::RGBA_Unorm_UInt8; + desc.arraySize = 0; + desc.size.width = width; + desc.size.height = height; + desc.size.depth = 1; + desc.numMipLevels = 1; + desc.defaultState = ResourceState::ShaderResource; + desc.allowedStates = + ResourceStateSet(ResourceState::ShaderResource, ResourceState::CopyDestination); ITextureResource::SubresourceData initData = {}; initData.data = pixels; initData.strideY = width * 4 * sizeof(unsigned char); - auto texture = - device->createTextureResource(IResource::Usage::PixelShaderResource, desc, &initData); + auto texture = device->createTextureResource(desc, &initData); gfx::IResourceView::Desc viewDesc; viewDesc.format = desc.format; @@ -204,19 +211,22 @@ void GUI::endFrame(ITransientResourceHeap* transientHeap, IFramebuffer* framebuf // Allocate transient vertex/index buffers to hold the data for this frame. gfx::IBufferResource::Desc vertexBufferDesc; - vertexBufferDesc.init(vertexCount * sizeof(ImDrawVert)); - vertexBufferDesc.setDefaults(IResource::Usage::VertexBuffer); + vertexBufferDesc.type = IResource::Type::Buffer; + vertexBufferDesc.defaultState = ResourceState::VertexBuffer; + vertexBufferDesc.allowedStates = + ResourceStateSet(ResourceState::VertexBuffer, ResourceState::CopyDestination); + vertexBufferDesc.sizeInBytes = vertexCount * sizeof(ImDrawVert); vertexBufferDesc.cpuAccessFlags = IResource::AccessFlag::Write; - auto vertexBuffer = - device->createBufferResource(IResource::Usage::VertexBuffer, vertexBufferDesc); + auto vertexBuffer = device->createBufferResource(vertexBufferDesc); gfx::IBufferResource::Desc indexBufferDesc; - indexBufferDesc.init(indexCount * sizeof(ImDrawIdx)); - indexBufferDesc.setDefaults(IResource::Usage::IndexBuffer); + indexBufferDesc.type = IResource::Type::Buffer; + indexBufferDesc.sizeInBytes = indexCount * sizeof(ImDrawIdx); + indexBufferDesc.allowedStates = + ResourceStateSet(ResourceState::IndexBuffer, ResourceState::CopyDestination); + indexBufferDesc.defaultState = ResourceState::IndexBuffer; indexBufferDesc.cpuAccessFlags = IResource::AccessFlag::Write; - auto indexBuffer = device->createBufferResource( - IResource::Usage::IndexBuffer, - indexBufferDesc); + auto indexBuffer = device->createBufferResource(indexBufferDesc); auto cmdBuf = transientHeap->createCommandBuffer(); auto encoder = cmdBuf->encodeResourceCommands(); { @@ -238,11 +248,13 @@ void GUI::endFrame(ITransientResourceHeap* transientHeap, IFramebuffer* framebuf // Allocate a transient constant buffer for projection matrix gfx::IBufferResource::Desc constantBufferDesc; - constantBufferDesc.init(sizeof(glm::mat4x4)); - constantBufferDesc.setDefaults(IResource::Usage::ConstantBuffer); + constantBufferDesc.type = IResource::Type::Buffer; + constantBufferDesc.allowedStates = + ResourceStateSet(ResourceState::ConstantBuffer, ResourceState::CopyDestination); + constantBufferDesc.defaultState = ResourceState::ConstantBuffer; + constantBufferDesc.sizeInBytes = sizeof(glm::mat4x4); constantBufferDesc.cpuAccessFlags = IResource::AccessFlag::Write; - auto constantBuffer = - device->createBufferResource(IResource::Usage::ConstantBuffer, constantBufferDesc); + auto constantBuffer = device->createBufferResource(constantBufferDesc); { float L = draw_data->DisplayPos.x; |
