From 62c3cec95030bf9fc7c3245e8b0fcd51dd18331c Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 2 Apr 2020 15:49:14 +0100 Subject: [PATCH] Fix reference tracking issue. PartialWrite + Read -> WriteBeforeRead * Read after PartialWrite should become WriteBeforeRead. Previously it became Read which lost the information about the Write completely. --- renderdoc/core/resource_manager.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/renderdoc/core/resource_manager.cpp b/renderdoc/core/resource_manager.cpp index 29c572b62..56888ad48 100644 --- a/renderdoc/core/resource_manager.cpp +++ b/renderdoc/core/resource_manager.cpp @@ -77,8 +77,12 @@ FrameRefType ComposeFrameRefs(FrameRefType first, FrameRefType second) // A `None` reference after any other reference type does not change // the first reference type return first; + else if(first == eFrameRef_PartialWrite && second == eFrameRef_Read) + // a `Read` reference after a partial write means we need to store `WriteBeforeRead` instead + // of just `Read`. + return eFrameRef_WriteBeforeRead; else - // A `None` or `Write` reference before any non-`None` reference type + // Otherwise a `None` or `Write` reference before any non-`None` reference type // does not change the reference type. return second;