summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-08-26 23:59:56 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-08-26 23:59:56 +0000
commit5571b2c7312321da27768a8e5207fb62f0a85d95 (patch)
tree293ad27ad2721ac5974eb7544655f94c30835eb5 /Graphics/GraphicsEngineVulkan
parentFixed typo in readme (diff)
downloadDiligentCore-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.cpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/src/ShaderResourceCacheVk.cpp7
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;
}