From 0f8e25a103dff63058879eab4898e66d1d2e96f2 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 27 Apr 2017 16:48:46 +0100 Subject: [PATCH] Fix a case where descriptor bind length wasn't being checked for ~0U --- .../PipelineState/VulkanPipelineStateViewer.cpp | 6 +++--- .../Windows/PipelineState/VulkanPipelineStateViewer.cs | 10 +++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp index 84da4ba8b..7cc0cc7b2 100644 --- a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp @@ -798,6 +798,8 @@ void VulkanPipelineStateViewer::addResourceRow(ShaderReflection *shaderDetails, TextureDescription *tex = NULL; BufferDescription *buf = NULL; + uint64_t descriptorLen = descriptorBind ? descriptorBind->size : 0; + if(filledSlot && descriptorBind != NULL) { name = "Object " + ToQStr(descriptorBind->res); @@ -831,8 +833,6 @@ void VulkanPipelineStateViewer::addResourceRow(ShaderReflection *shaderDetails, name = buf->name; restype = TextureDim::Buffer; - ulong descriptorLen = descriptorBind->size; - if(descriptorLen == 0xFFFFFFFFFFFFFFFFULL) descriptorLen = len - descriptorBind->offset; @@ -867,7 +867,7 @@ void VulkanPipelineStateViewer::addResourceRow(ShaderReflection *shaderDetails, { QString range = "-"; if(descriptorBind != NULL) - range = QString("%1 - %2").arg(descriptorBind->offset).arg(descriptorBind->size); + range = QString("%1 - %2").arg(descriptorBind->offset).arg(descriptorLen); node = new RDTreeWidgetItem({ "", bindset, slotname, ToQStr(bindType), name, QString("%1 bytes").arg(len), range, diff --git a/renderdocui/Windows/PipelineState/VulkanPipelineStateViewer.cs b/renderdocui/Windows/PipelineState/VulkanPipelineStateViewer.cs index bf36a72e7..943aa10bd 100644 --- a/renderdocui/Windows/PipelineState/VulkanPipelineStateViewer.cs +++ b/renderdocui/Windows/PipelineState/VulkanPipelineStateViewer.cs @@ -514,6 +514,11 @@ namespace renderdocui.Windows.PipelineState object tag = null; bool viewDetails = false; + ulong descriptorLen = 0; + + if(descriptorBind != null) + descriptorLen = descriptorBind.size; + if (filledSlot && descriptorBind != null) { name = "Object " + descriptorBind.res.ToString(); @@ -558,8 +563,6 @@ namespace renderdocui.Windows.PipelineState name = bufs[t].name; restype = ShaderResourceType.Buffer; - ulong descriptorLen = descriptorBind.size; - if(descriptorLen == ulong.MaxValue) descriptorLen = len - descriptorBind.offset; @@ -601,7 +604,8 @@ namespace renderdocui.Windows.PipelineState { string range = "-"; if (descriptorBind != null) - range = String.Format("{0} - {1}", descriptorBind.offset, descriptorBind.size); + range = String.Format("{0} - {1}", descriptorBind.offset, descriptorLen); + node = parentNodes.Add(new object[] { "", bindset, slotname, bindType, name,