diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-08-26 23:59:56 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-08-26 23:59:56 +0000 |
| commit | 5571b2c7312321da27768a8e5207fb62f0a85d95 (patch) | |
| tree | 293ad27ad2721ac5974eb7544655f94c30835eb5 /Graphics/GraphicsEngineVulkan | |
| parent | Fixed typo in readme (diff) | |
| download | DiligentCore-5571b2c7312321da27768a8e5207fb62f0a85d95.tar.gz DiligentCore-5571b2c7312321da27768a8e5207fb62f0a85d95.zip | |
Fixed issue with buffer view offset in VK backend
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
| -rw-r--r-- | Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp | 4 | ||||
| -rw-r--r-- | Graphics/GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp | 7 |
2 files changed, 6 insertions, 5 deletions
diff --git a/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp index f31af180..ce0e8f4b 100644 --- a/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp +++ b/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp @@ -483,8 +483,8 @@ VulkanUtilities::BufferViewWrapper BufferVkImpl::CreateView(struct BufferViewDes DEV_CHECK_ERR(ViewDesc.Format.ValueType != VT_UNDEFINED, "Undefined format"); ViewCI.format = TypeToVkFormat(ViewDesc.Format.ValueType, ViewDesc.Format.NumComponents, ViewDesc.Format.IsNormalized); } - ViewCI.offset = ViewDesc.ByteOffset; - ViewCI.range = ViewDesc.ByteWidth; // size in bytes of the buffer view + ViewCI.offset = ViewDesc.ByteOffset; // offset in bytes from the base address of the buffer + ViewCI.range = ViewDesc.ByteWidth; // size in bytes of the buffer view const auto& LogicalDevice = m_pDevice->GetLogicalDevice(); BuffView = LogicalDevice.CreateBufferView(ViewCI, ViewDesc.Name); diff --git a/Graphics/GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp b/Graphics/GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp index 82039178..32a1d588 100644 --- a/Graphics/GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp +++ b/Graphics/GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp @@ -238,7 +238,8 @@ VkDescriptorBufferInfo ShaderResourceCacheVk::Resource::GetStorageBufferDescript VERIFY(Type == SPIRVShaderResourceAttribs::ResourceType::StorageBuffer, "Storage buffer resource is expected"); auto* pBuffViewVk = pObject.RawPtr<const BufferViewVkImpl>(); - VERIFY_EXPR(pBuffViewVk->GetDesc().ViewType == BUFFER_VIEW_UNORDERED_ACCESS); + const auto& ViewDesc = pBuffViewVk->GetDesc(); + VERIFY_EXPR(ViewDesc.ViewType == BUFFER_VIEW_UNORDERED_ACCESS); auto* pBuffVk = pBuffViewVk->GetBufferVk(); // VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC descriptor type @@ -249,8 +250,8 @@ VkDescriptorBufferInfo ShaderResourceCacheVk::Resource::GetStorageBufferDescript DescrBuffInfo.buffer = pBuffVk->GetVkBuffer(); // If descriptorType is VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the offset member // of each element of pBufferInfo must be a multiple of VkPhysicalDeviceLimits::minStorageBufferOffsetAlignment (13.2.4) - DescrBuffInfo.offset = 0; - DescrBuffInfo.range = pBuffVk->GetDesc().uiSizeInBytes; + DescrBuffInfo.offset = ViewDesc.ByteOffset; + DescrBuffInfo.range = ViewDesc.ByteWidth; return DescrBuffInfo; } |
