From eb18687fb2bed12e7fa529ff6f7ec6a3f1c39213 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 22 Sep 2015 14:18:36 +0200 Subject: [PATCH] Don't dirty buffers, and don't create any init state for them * Buffers have no state, they're immutable, and contents are handled by device memory initial state --- renderdoc/driver/vulkan/vk_initstate.cpp | 4 ++++ renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp | 7 ++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_initstate.cpp b/renderdoc/driver/vulkan/vk_initstate.cpp index 016b409d6..724b4e253 100644 --- a/renderdoc/driver/vulkan/vk_initstate.cpp +++ b/renderdoc/driver/vulkan/vk_initstate.cpp @@ -346,6 +346,10 @@ void WrappedVulkan::Create_InitialState(ResourceId id, WrappedVkRes *live, bool { RDCWARN("Framebuffer without initial state! should clear all attachments"); } + else if(type == eResBuffer) + { + // don't have to do anything for buffers, initial state is all handled by memory + } else { RDCERR("Unhandled resource type %d", type); diff --git a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp index 8a5d4eb1d..42673f40d 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp @@ -248,7 +248,6 @@ void WrappedVulkan::vkCmdCopyImage( record->MarkResourceFrameReferenced(GetResID(srcImage), eFrameRef_Read); record->MarkResourceFrameReferenced(GetResID(destImage), eFrameRef_Write); - // VKTODOHIGH init states not implemented yet... record->dirtied.insert(GetResID(destImage)); { VkResourceRecord *im = GetRecord(destImage); @@ -412,8 +411,7 @@ void WrappedVulkan::vkCmdCopyImageToBuffer( record->MarkResourceFrameReferenced(GetResID(srcImage), eFrameRef_Read); record->MarkResourceFrameReferenced(GetResID(destBuffer), eFrameRef_Write); - // VKTODOMED: need to dirty the memory bound to the buffer? - record->dirtied.insert(GetResID(destBuffer)); + // Don't dirty the buffer, just the memory behind it. { VkResourceRecord *buf = GetRecord(destBuffer); if(buf->GetMemoryRecord()) @@ -499,8 +497,7 @@ void WrappedVulkan::vkCmdCopyBuffer( record->MarkResourceFrameReferenced(GetResID(srcBuffer), eFrameRef_Read); record->MarkResourceFrameReferenced(GetResID(destBuffer), eFrameRef_Write); - // VKTODOMED: need to dirty the memory bound to the buffer? - record->dirtied.insert(GetResID(destBuffer)); + // Don't dirty the buffer, just the memory behind it. { VkResourceRecord *buf = GetRecord(destBuffer); if(buf->GetMemoryRecord())