mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Update VulkanResourceManager to newest code
This commit is contained in:
@@ -248,31 +248,29 @@ void VulkanResourceManager::MergeBarriers(vector<pair<ResourceId, ImageRegionSta
|
||||
TRDBG("Post-merge, there are %u states", (uint32_t)dststates.size());
|
||||
}
|
||||
|
||||
void VulkanResourceManager::SerialiseImageStates(map<ResourceId, ImageLayouts> &states,
|
||||
vector<VkImageMemoryBarrier> &barriers)
|
||||
template <typename SerialiserType>
|
||||
void VulkanResourceManager::SerialiseImageStates(SerialiserType &ser,
|
||||
std::map<ResourceId, ImageLayouts> &states,
|
||||
std::vector<VkImageMemoryBarrier> &barriers)
|
||||
{
|
||||
Serialiser *localSerialiser = m_pSerialiser;
|
||||
|
||||
SERIALISE_ELEMENT(uint32_t, NumMems, (uint32_t)states.size());
|
||||
SERIALISE_ELEMENT_LOCAL(NumImages, (uint32_t)states.size());
|
||||
|
||||
auto srcit = states.begin();
|
||||
|
||||
vector<pair<ResourceId, ImageRegionState> > vec;
|
||||
std::vector<pair<ResourceId, ImageRegionState> > vec;
|
||||
|
||||
for(uint32_t i = 0; i < NumMems; i++)
|
||||
for(uint32_t i = 0; i < NumImages; i++)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, id, srcit->first);
|
||||
SERIALISE_ELEMENT(uint32_t, NumStates, (uint32_t)srcit->second.subresourceStates.size());
|
||||
SERIALISE_ELEMENT_LOCAL(Image, (ResourceId)(srcit->first));
|
||||
SERIALISE_ELEMENT_LOCAL(ImageState, (ImageLayouts)(srcit->second));
|
||||
|
||||
ResourceId liveid;
|
||||
if(m_State < WRITING && HasLiveResource(id))
|
||||
liveid = GetLiveID(id);
|
||||
if(IsReplayingAndReading() && HasLiveResource(Image))
|
||||
liveid = GetLiveID(Image);
|
||||
|
||||
for(uint32_t m = 0; m < NumStates; m++)
|
||||
if(IsReplayingAndReading() && liveid != ResourceId())
|
||||
{
|
||||
SERIALISE_ELEMENT(ImageRegionState, state, srcit->second.subresourceStates[m]);
|
||||
|
||||
if(m_State < WRITING && liveid != ResourceId() && srcit != states.end())
|
||||
for(ImageRegionState &state : ImageState.subresourceStates)
|
||||
{
|
||||
VkImageMemoryBarrier t;
|
||||
t.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
||||
@@ -295,7 +293,7 @@ void VulkanResourceManager::SerialiseImageStates(map<ResourceId, ImageLayouts> &
|
||||
}
|
||||
}
|
||||
|
||||
if(m_State >= WRITING)
|
||||
if(ser.IsWriting())
|
||||
srcit++;
|
||||
}
|
||||
|
||||
@@ -351,6 +349,13 @@ void VulkanResourceManager::SerialiseImageStates(map<ResourceId, ImageLayouts> &
|
||||
}
|
||||
}
|
||||
|
||||
template void VulkanResourceManager::SerialiseImageStates(ReadSerialiser &ser,
|
||||
std::map<ResourceId, ImageLayouts> &states,
|
||||
std::vector<VkImageMemoryBarrier> &barriers);
|
||||
template void VulkanResourceManager::SerialiseImageStates(WriteSerialiser &ser,
|
||||
std::map<ResourceId, ImageLayouts> &states,
|
||||
std::vector<VkImageMemoryBarrier> &barriers);
|
||||
|
||||
void VulkanResourceManager::MarkSparseMapReferenced(SparseMapping *sparse)
|
||||
{
|
||||
if(sparse == NULL)
|
||||
|
||||
@@ -37,8 +37,8 @@ class VulkanResourceManager
|
||||
: public ResourceManager<WrappedVkRes *, TypedRealHandle, VkResourceRecord>
|
||||
{
|
||||
public:
|
||||
VulkanResourceManager(LogState s, Serialiser *ser, WrappedVulkan *core)
|
||||
: ResourceManager(s, ser), m_Core(core)
|
||||
VulkanResourceManager(CaptureState state, WrappedVulkan *core)
|
||||
: ResourceManager(), m_State(state), m_Core(core)
|
||||
{
|
||||
}
|
||||
~VulkanResourceManager() {}
|
||||
@@ -114,8 +114,9 @@ public:
|
||||
void ApplyBarriers(vector<pair<ResourceId, ImageRegionState> > &states,
|
||||
map<ResourceId, ImageLayouts> &layouts);
|
||||
|
||||
void SerialiseImageStates(map<ResourceId, ImageLayouts> &states,
|
||||
vector<VkImageMemoryBarrier> &barriers);
|
||||
template <typename SerialiserType>
|
||||
void SerialiseImageStates(SerialiserType &ser, std::map<ResourceId, ImageLayouts> &states,
|
||||
std::vector<VkImageMemoryBarrier> &barriers);
|
||||
|
||||
ResourceId GetID(WrappedVkRes *res)
|
||||
{
|
||||
@@ -143,11 +144,11 @@ public:
|
||||
typename UnwrapHelper<realtype>::Outer *wrapped =
|
||||
new typename UnwrapHelper<realtype>::Outer(obj, id);
|
||||
|
||||
SetTableIfDispatchable(m_State >= WRITING, parentObj, m_Core, wrapped);
|
||||
SetTableIfDispatchable(IsCaptureMode(m_State), parentObj, m_Core, wrapped);
|
||||
|
||||
AddCurrentResource(id, wrapped);
|
||||
|
||||
if(m_State < WRITING)
|
||||
if(IsReplayMode(m_State))
|
||||
AddWrapper(wrapped, ToTypedHandle(obj));
|
||||
|
||||
obj = realtype((uint64_t)wrapped);
|
||||
@@ -164,7 +165,7 @@ public:
|
||||
if(origit != m_OriginalIDs.end())
|
||||
EraseLiveResource(origit->second);
|
||||
|
||||
if(m_State < WRITING)
|
||||
if(IsReplayMode(m_State))
|
||||
ResourceManager::RemoveWrapper(ToTypedHandle(Unwrap(obj)));
|
||||
|
||||
ResourceManager::ReleaseCurrentResource(id);
|
||||
@@ -268,5 +269,6 @@ private:
|
||||
void Create_InitialState(ResourceId id, WrappedVkRes *live, bool hasData);
|
||||
void Apply_InitialState(WrappedVkRes *live, InitialContentData initial);
|
||||
|
||||
CaptureState m_State;
|
||||
WrappedVulkan *m_Core;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user