From 52c07cb789ab128f3fd718de69d5fc3cd0a09f63 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 16 Sep 2015 16:06:18 +0200 Subject: [PATCH] Remove VkResource, switch to WrappedVkRes*, update all but vk_core.cpp --- renderdoc/driver/vulkan/vk_common.cpp | 4 +- renderdoc/driver/vulkan/vk_core.cpp | 19 +-- renderdoc/driver/vulkan/vk_core.h | 12 +- renderdoc/driver/vulkan/vk_info.cpp | 20 +-- renderdoc/driver/vulkan/vk_info.h | 14 +- renderdoc/driver/vulkan/vk_manager.cpp | 20 +-- renderdoc/driver/vulkan/vk_manager.h | 196 ++----------------------- renderdoc/driver/vulkan/vk_replay.cpp | 8 +- renderdoc/driver/vulkan/vk_resources.h | 61 +------- 9 files changed, 59 insertions(+), 295 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_common.cpp b/renderdoc/driver/vulkan/vk_common.cpp index 5cc123bbf..957425116 100644 --- a/renderdoc/driver/vulkan/vk_common.cpp +++ b/renderdoc/driver/vulkan/vk_common.cpp @@ -1823,9 +1823,9 @@ string ToStrHelper::Get(const VkPresentModeWSI &el) #define SerialiseObject(type, name, obj) \ { \ ResourceId id; \ - if(m_Mode >= WRITING) id = (obj == VK_NULL_HANDLE) ? ResourceId() : MGR()->GetID(MakeRes(obj)); \ + if(m_Mode >= WRITING) id = GetResID(obj); \ Serialise(name, id); \ - if(m_Mode < WRITING) obj = (id == ResourceId()) ? VK_NULL_HANDLE : type(MGR()->GetLiveResource(id).handle); \ + if(m_Mode < WRITING) obj = (id == ResourceId()) ? VK_NULL_HANDLE : type(MGR()->GetLiveResource(id)->real); \ } static void SerialiseNext(Serialiser *ser, const void *&pNext) diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index f89e54837..08386021f 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -1075,23 +1075,14 @@ VkResult WrappedVulkan::vkGetGlobalExtensionProperties( return util_GetExtensionProperties(0, NULL, pCount, pProperties); } -void WrappedVulkan::DestroyObject(VkResource res, ResourceId id) -{ - GetResourceManager()->MarkCleanResource(id); - VkResourceRecord *record = GetResourceManager()->GetResourceRecord(id); - if(record) - record->Delete(GetResourceManager()); - GetResourceManager()->UnregisterResource(res); - - if(m_ImageInfo.find(id) != m_ImageInfo.end()) - m_ImageInfo.erase(id); -} - #define DESTROY_IMPL(type, func) \ VkResult WrappedVulkan::vk ## func(VkDevice device, type obj) \ { \ - DestroyObject(MakeRes(obj), GetResourceManager()->GetID(MakeRes(obj))); \ - return device_dispatch_table(device)->func(device, obj); \ + WrappedVkRes *wrapped = GetWrapped(obj); + GetResourceManager()->MarkCleanResource(wrapped->id); \ + if(wrapped->record) wrapped->record->Delete(GetResourceManager()); \ + if(m_ImageInfo.find(wrapped->id) != m_ImageInfo.end()) m_ImageInfo.erase(wrapped->id); \ + return device_dispatch_table(device)->func(Unwrap(device), type(wrapped->real)); \ } DESTROY_IMPL(VkBuffer, DestroyBuffer) diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 8a624677c..515b14f1f 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -436,12 +436,12 @@ public: VulkanReplay *GetReplay() { return &m_Replay; } // replay interface - bool Prepare_InitialState(VkResource res); - bool Serialise_InitialState(VkResource res); - void Create_InitialState(ResourceId id, VkResource live, bool hasData); - void Apply_InitialState(VkResource live, VulkanResourceManager::InitialContentData initial); + bool Prepare_InitialState(WrappedVkRes *res); + bool Serialise_InitialState(WrappedVkRes *res); + void Create_InitialState(ResourceId id, WrappedVkRes *live, bool hasData); + void Apply_InitialState(WrappedVkRes *live, VulkanResourceManager::InitialContentData initial); - bool ReleaseResource(VkResource res); + bool ReleaseResource(WrappedVkRes *res); void Initialise(VkInitParams ¶ms); void ReplayLog(uint32_t frameID, uint32_t startEventID, uint32_t endEventID, ReplayLogType replayType); @@ -449,8 +449,6 @@ public: vector &GetFrameRecord() { return m_FrameRecord; } FetchAPIEvent GetEvent(uint32_t eventID); - - void DestroyObject(VkResource res, ResourceId id); // Device initialization diff --git a/renderdoc/driver/vulkan/vk_info.cpp b/renderdoc/driver/vulkan/vk_info.cpp index 841d033f7..d6d7e87af 100644 --- a/renderdoc/driver/vulkan/vk_info.cpp +++ b/renderdoc/driver/vulkan/vk_info.cpp @@ -24,7 +24,7 @@ #include "vk_info.h" -void VulkanCreationInfo::Pipeline::Init(VulkanResourceManager *rm, const VkGraphicsPipelineCreateInfo* pCreateInfo) +void VulkanCreationInfo::Pipeline::Init(const VkGraphicsPipelineCreateInfo* pCreateInfo) { flags = pCreateInfo->flags; @@ -33,7 +33,7 @@ void VulkanCreationInfo::Pipeline::Init(VulkanResourceManager *rm, const VkGraph // VkPipelineShaderStageCreateInfo RDCEraseEl(shaders); for(uint32_t i=0; i < pCreateInfo->stageCount; i++) - shaders[ pCreateInfo->pStages[i].stage ] = rm->GetOriginalID(rm->GetID(MakeRes(pCreateInfo->pStages[i].shader))); + shaders[ pCreateInfo->pStages[i].stage ] = GetResID(pCreateInfo->pStages[i].shader); if(pCreateInfo->pVertexInputState) { @@ -110,7 +110,7 @@ void VulkanCreationInfo::Pipeline::Init(VulkanResourceManager *rm, const VkGraph } } -void VulkanCreationInfo::ViewportScissor::Init(VulkanResourceManager *rm, const VkDynamicViewportStateCreateInfo* pCreateInfo) +void VulkanCreationInfo::ViewportScissor::Init(const VkDynamicViewportStateCreateInfo* pCreateInfo) { viewports.resize(pCreateInfo->viewportAndScissorCount); scissors.resize(pCreateInfo->viewportAndScissorCount); @@ -122,7 +122,7 @@ void VulkanCreationInfo::ViewportScissor::Init(VulkanResourceManager *rm, const } } -void VulkanCreationInfo::Raster::Init(VulkanResourceManager *rm, const VkDynamicRasterStateCreateInfo* pCreateInfo) +void VulkanCreationInfo::Raster::Init(const VkDynamicRasterStateCreateInfo* pCreateInfo) { depthBias = pCreateInfo->depthBias; depthBiasClamp = pCreateInfo->depthBiasClamp; @@ -130,13 +130,13 @@ void VulkanCreationInfo::Raster::Init(VulkanResourceManager *rm, const VkDynamic lineWidth = pCreateInfo->lineWidth; } -void VulkanCreationInfo::Blend::Init(VulkanResourceManager *rm, const VkDynamicColorBlendStateCreateInfo* pCreateInfo) +void VulkanCreationInfo::Blend::Init(const VkDynamicColorBlendStateCreateInfo* pCreateInfo) { RDCCOMPILE_ASSERT(sizeof(blendConst) == sizeof(pCreateInfo->blendConst), "blend constant size mismatch!"); memcpy(blendConst, pCreateInfo->blendConst, sizeof(blendConst)); } -void VulkanCreationInfo::DepthStencil::Init(VulkanResourceManager *rm, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo) +void VulkanCreationInfo::DepthStencil::Init(const VkDynamicDepthStencilStateCreateInfo* pCreateInfo) { minDepthBounds = pCreateInfo->minDepthBounds; maxDepthBounds = pCreateInfo->maxDepthBounds; @@ -146,7 +146,7 @@ void VulkanCreationInfo::DepthStencil::Init(VulkanResourceManager *rm, const VkD stencilBackRef = pCreateInfo->stencilBackRef; } -void VulkanCreationInfo::Framebuffer::Init(VulkanResourceManager *rm, const VkFramebufferCreateInfo* pCreateInfo) +void VulkanCreationInfo::Framebuffer::Init(const VkFramebufferCreateInfo* pCreateInfo) { width = pCreateInfo->width; height = pCreateInfo->height; @@ -154,10 +154,10 @@ void VulkanCreationInfo::Framebuffer::Init(VulkanResourceManager *rm, const VkFr attachments.resize(pCreateInfo->attachmentCount); for(uint32_t i=0; i < pCreateInfo->attachmentCount; i++) - attachments[i].view = rm->GetOriginalID(rm->GetID(MakeRes(pCreateInfo->pAttachments[i].view))); + attachments[i].view = GetResID(pCreateInfo->pAttachments[i].view); } -void VulkanCreationInfo::DescSetLayout::Init(VulkanResourceManager *rm, const VkDescriptorSetLayoutCreateInfo* pCreateInfo) +void VulkanCreationInfo::DescSetLayout::Init(const VkDescriptorSetLayoutCreateInfo* pCreateInfo) { bindings.resize(pCreateInfo->count); for(uint32_t i=0; i < pCreateInfo->count; i++) @@ -171,7 +171,7 @@ void VulkanCreationInfo::DescSetLayout::Init(VulkanResourceManager *rm, const Vk bindings[i].immutableSampler = new ResourceId[bindings[i].arraySize]; for(uint32_t s=0; s < bindings[i].arraySize; s++) - bindings[i].immutableSampler[s] = rm->GetID(MakeRes(pCreateInfo->pBinding[i].pImmutableSamplers[s])); + bindings[i].immutableSampler[s] = GetResID(pCreateInfo->pBinding[i].pImmutableSamplers[s]); } } } diff --git a/renderdoc/driver/vulkan/vk_info.h b/renderdoc/driver/vulkan/vk_info.h index 1e6e3cb31..34f6b09a2 100644 --- a/renderdoc/driver/vulkan/vk_info.h +++ b/renderdoc/driver/vulkan/vk_info.h @@ -31,7 +31,7 @@ struct VulkanCreationInfo { struct Pipeline { - void Init(VulkanResourceManager *rm, const VkGraphicsPipelineCreateInfo* pCreateInfo); + void Init(const VkGraphicsPipelineCreateInfo* pCreateInfo); // VkGraphicsPipelineCreateInfo VkPipelineCreateFlags flags; @@ -113,7 +113,7 @@ struct VulkanCreationInfo struct ViewportScissor { - void Init(VulkanResourceManager *rm, const VkDynamicViewportStateCreateInfo* pCreateInfo); + void Init(const VkDynamicViewportStateCreateInfo* pCreateInfo); vector viewports; vector scissors; @@ -122,7 +122,7 @@ struct VulkanCreationInfo struct Raster { - void Init(VulkanResourceManager *rm, const VkDynamicRasterStateCreateInfo* pCreateInfo); + void Init(const VkDynamicRasterStateCreateInfo* pCreateInfo); float depthBias; float depthBiasClamp; @@ -133,7 +133,7 @@ struct VulkanCreationInfo struct Blend { - void Init(VulkanResourceManager *rm, const VkDynamicColorBlendStateCreateInfo* pCreateInfo); + void Init(const VkDynamicColorBlendStateCreateInfo* pCreateInfo); float blendConst[4]; }; @@ -141,7 +141,7 @@ struct VulkanCreationInfo struct DepthStencil { - void Init(VulkanResourceManager *rm, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo); + void Init(const VkDynamicDepthStencilStateCreateInfo* pCreateInfo); float minDepthBounds; float maxDepthBounds; @@ -154,7 +154,7 @@ struct VulkanCreationInfo struct Framebuffer { - void Init(VulkanResourceManager *rm, const VkFramebufferCreateInfo* pCreateInfo); + void Init(const VkFramebufferCreateInfo* pCreateInfo); struct Attachment { @@ -168,7 +168,7 @@ struct VulkanCreationInfo struct DescSetLayout { - void Init(VulkanResourceManager *rm, const VkDescriptorSetLayoutCreateInfo* pCreateInfo); + void Init(const VkDescriptorSetLayoutCreateInfo* pCreateInfo); void CreateBindingsArray(vector &descBindings); diff --git a/renderdoc/driver/vulkan/vk_manager.cpp b/renderdoc/driver/vulkan/vk_manager.cpp index f2e7806e9..2afd9185f 100644 --- a/renderdoc/driver/vulkan/vk_manager.cpp +++ b/renderdoc/driver/vulkan/vk_manager.cpp @@ -60,7 +60,7 @@ void VulkanResourceManager::RecordTransitions(vector< pairreal; t.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; t.newLayout = state.state; t.subresourceRange = state.range; @@ -432,39 +432,39 @@ void VulkanResourceManager::ApplyTransitions(vector< pairPrepare_InitialState(res); } -bool VulkanResourceManager::Serialise_InitialState(VkResource res) +bool VulkanResourceManager::Serialise_InitialState(WrappedVkRes *res) { return m_Core->Serialise_InitialState(res); } -void VulkanResourceManager::Create_InitialState(ResourceId id, VkResource live, bool hasData) +void VulkanResourceManager::Create_InitialState(ResourceId id, WrappedVkRes *live, bool hasData) { return m_Core->Create_InitialState(id, live, hasData); } -void VulkanResourceManager::Apply_InitialState(VkResource live, InitialContentData initial) +void VulkanResourceManager::Apply_InitialState(WrappedVkRes *live, InitialContentData initial) { return m_Core->Apply_InitialState(live, initial); } -bool VulkanResourceManager::ResourceTypeRelease(VkResource res) +bool VulkanResourceManager::ResourceTypeRelease(WrappedVkRes *res) { return m_Core->ReleaseResource(res); } diff --git a/renderdoc/driver/vulkan/vk_manager.h b/renderdoc/driver/vulkan/vk_manager.h index c8efe97e0..ff84230d8 100644 --- a/renderdoc/driver/vulkan/vk_manager.h +++ b/renderdoc/driver/vulkan/vk_manager.h @@ -35,7 +35,7 @@ using std::pair; class WrappedVulkan; -class VulkanResourceManager : public ResourceManager +class VulkanResourceManager : public ResourceManager { public: VulkanResourceManager(LogState s, Serialiser *ser, WrappedVulkan *core) @@ -44,177 +44,10 @@ class VulkanResourceManager : public ResourceManagersecond->GetResourceID(); - it->second->Delete(this); - - if(!m_VkResourceRecords.empty() && m_VkResourceRecords.begin()->second->GetResourceID() == id) - m_VkResourceRecords.erase(m_VkResourceRecords.begin()); - } - - m_CurrentResourceIds.clear(); - - while(!m_InitialContents.empty()) - { - auto it = m_InitialContents.begin(); - ResourceTypeRelease(it->second.resource); - Serialiser::FreeAlignedBuffer(it->second.blob); - if(!m_InitialContents.empty()) - m_InitialContents.erase(m_InitialContents.begin()); - } - - // have to do this here since we want to do it in reverse order - for(auto it = m_LiveResourceMap.end(); it != m_LiveResourceMap.begin();) - { - // decrement it first since the initial value at .end() is invalid - --it; - ResourceTypeRelease(it->second); - } - m_LiveResourceMap.clear(); - - for(auto it = m_InframeResourceMap.end(); it != m_InframeResourceMap.begin();) - { - // decrement it first since the initial value at .end() is invalid - --it; - ResourceTypeRelease(it->second); - } - m_InframeResourceMap.clear(); - - RDCASSERT(m_ResourceRecords.empty()); - - m_Inst = NULL; - } - inline void RemoveResourceRecord(ResourceId id) - { - for(auto it = m_VkResourceRecords.begin(); it != m_VkResourceRecords.end(); it++) - { - if(it->second->GetResourceID() == id) - { - m_VkResourceRecords.erase(it); - break; - } - } - - ResourceManager::RemoveResourceRecord(id); - } - - // this should take the VkDevice associated too, for release - ResourceId RegisterResource(VkResource res) - { - ResourceId id = ResourceIDGen::GetNewUniqueID(); - m_CurrentResourceIds[res] = id; - AddCurrentResource(id, res); - return id; - } - - void UnregisterResource(VkResource res) - { - auto it = m_CurrentResourceIds.find(res); - if(it != m_CurrentResourceIds.end()) - { - ReleaseCurrentResource(it->second); - auto origit = m_OriginalIDs.find(it->second); - if(origit != m_OriginalIDs.end()) - EraseLiveResource(origit->second); - m_CurrentResourceIds.erase(res); - } - } - - ResourceId GetID(VkResource res) - { - auto it = m_CurrentResourceIds.find(res); - if(it != m_CurrentResourceIds.end()) - return it->second; - return ResourceId(); - } - - using ResourceManager::GetCurrentResource; - - VkResource GetCurrentResource(VkResource obj) - { - return ResourceManager::GetCurrentResource(GetID(obj)); - } - - using ResourceManager::HasCurrentResource; - - bool HasCurrentResource(VkResource obj) - { - return ResourceManager::HasCurrentResource(GetID(obj)); - } - - VkResourceRecord *AddResourceRecord(ResourceId id) - { - VkResourceRecord *ret = ResourceManager::AddResourceRecord(id); - VkResource res = GetCurrentResource(id); - - m_VkResourceRecords[res] = ret; - - return ret; - } - - VkResourceRecord *AddResourceRecord(VkResource res, ResourceId id) - { - VkResourceRecord *ret = ResourceManager::AddResourceRecord(id); - m_VkResourceRecords[res] = ret; - return ret; - } - - using ResourceManager::HasResourceRecord; - - bool HasResourceRecord(VkResource res) - { - auto it = m_VkResourceRecords.find(res); - if(it != m_VkResourceRecords.end()) - return true; - - return ResourceManager::HasResourceRecord(GetID(res)); - } - - using ResourceManager::GetResourceRecord; - - VkResourceRecord *GetResourceRecord(VkResource res) - { - auto it = m_VkResourceRecords.find(res); - if(it != m_VkResourceRecords.end()) - return it->second; - - return ResourceManager::GetResourceRecord(GetID(res)); - } - - using ResourceManager::MarkResourceFrameReferenced; - - void MarkResourceFrameReferenced(VkResource res, FrameRefType refType) - { - if(res.handle == 0) return; - ResourceManager::MarkResourceFrameReferenced(GetID(res), refType); - } - - using ResourceManager::MarkDirtyResource; - - void MarkDirtyResource(VkResource res) - { - return ResourceManager::MarkDirtyResource(GetID(res)); - } - - using ResourceManager::MarkCleanResource; - - void MarkCleanResource(VkResource res) - { - return ResourceManager::MarkCleanResource(GetID(res)); - } - // handling memory & image transitions void RecordTransitions(vector< pair > &trans, map &states, uint32_t numTransitions, const VkImageMemoryBarrier *transitions); @@ -225,21 +58,22 @@ class VulkanResourceManager : public ResourceManagerid : ResourceId(); + } + + bool ResourceTypeRelease(WrappedVkRes *res); + + bool Force_InitialState(WrappedVkRes *res); + bool Need_InitialStateChunk(WrappedVkRes *res); + bool Prepare_InitialState(WrappedVkRes *res); + bool Serialise_InitialState(WrappedVkRes *res); + void Create_InitialState(ResourceId id, WrappedVkRes *live, bool hasData); + void Apply_InitialState(WrappedVkRes *live, InitialContentData initial); static VulkanResourceManager *m_Inst; - map m_VkResourceRecords; - - map m_CurrentResourceIds; - WrappedVulkan *m_Core; }; diff --git a/renderdoc/driver/vulkan/vk_replay.cpp b/renderdoc/driver/vulkan/vk_replay.cpp index 3c40ccf02..80223fb4a 100644 --- a/renderdoc/driver/vulkan/vk_replay.cpp +++ b/renderdoc/driver/vulkan/vk_replay.cpp @@ -1287,15 +1287,15 @@ void VulkanReplay::SavePipelineState() if(layoutBind.immutableSampler) dst.bindings[b].elems[a].sampler = layoutBind.immutableSampler[a]; else if(info->sampler != VK_NULL_HANDLE) - dst.bindings[b].elems[a].sampler = rm->GetOriginalID(rm->GetID(MakeRes(info->sampler))); + dst.bindings[b].elems[a].sampler = rm->GetOriginalID(GetResID(info->sampler)); // only one of these is ever set if(info->imageView != VK_NULL_HANDLE) - dst.bindings[b].elems[a].view = rm->GetOriginalID(rm->GetID(MakeRes(info->imageView))); + dst.bindings[b].elems[a].view = rm->GetOriginalID(GetResID(info->imageView)); if(info->bufferView != VK_NULL_HANDLE) - dst.bindings[b].elems[a].view = rm->GetOriginalID(rm->GetID(MakeRes(info->bufferView))); + dst.bindings[b].elems[a].view = rm->GetOriginalID(GetResID(info->bufferView)); if(info->attachmentView != VK_NULL_HANDLE) - dst.bindings[b].elems[a].view = rm->GetOriginalID(rm->GetID(MakeRes(info->attachmentView))); + dst.bindings[b].elems[a].view = rm->GetOriginalID(GetResID(info->attachmentView)); } } } diff --git a/renderdoc/driver/vulkan/vk_resources.h b/renderdoc/driver/vulkan/vk_resources.h index e7cffb6cc..9aed0da17 100644 --- a/renderdoc/driver/vulkan/vk_resources.h +++ b/renderdoc/driver/vulkan/vk_resources.h @@ -394,65 +394,6 @@ enum VkNamespace VkNamespace IdentifyTypeByPtr(WrappedVkRes *ptr); -enum NullInitialiser { MakeNullResource }; - -struct VkResource -{ - VkResource() { Namespace = eResUnknown; handle = VK_NULL_HANDLE; } - VkResource(NullInitialiser) { Namespace = eResUnknown; handle = VK_NULL_HANDLE; } - VkResource(VkNamespace n, uint64_t o) { Namespace = n; handle = o; } - VkNamespace Namespace; - uint64_t handle; - - bool operator ==(const VkResource &o) const - { - return Namespace == o.Namespace && handle == o.handle; - } - - bool operator !=(const VkResource &o) const - { - return !(*this == o); - } - - bool operator <(const VkResource &o) const - { - if(Namespace != o.Namespace) return Namespace < o.Namespace; - return handle < o.handle; - } -}; - -inline VkResource MakeRes(VkPhysicalDevice o) { return VkResource(eResPhysicalDevice, (uint64_t)o); } -inline VkResource MakeRes(VkInstance o) { return VkResource(eResInstance, (uint64_t)o); } -inline VkResource MakeRes(VkDevice o) { return VkResource(eResDevice, (uint64_t)o); } -inline VkResource MakeRes(VkQueue o) { return VkResource(eResQueue, (uint64_t)o); } -inline VkResource MakeRes(VkCmdBuffer o) { return VkResource(eResCmdBuffer, (uint64_t)o); } -inline VkResource MakeRes(VkCmdPool o) { return VkResource(eResCmdPool, o.handle); } -inline VkResource MakeRes(VkDeviceMemory o) { return VkResource(eResDeviceMemory, o.handle); } -inline VkResource MakeRes(VkBuffer o) { return VkResource(eResBuffer, o.handle); } -inline VkResource MakeRes(VkBufferView o) { return VkResource(eResBufferView, o.handle); } -inline VkResource MakeRes(VkImage o) { return VkResource(eResImage, o.handle); } -inline VkResource MakeRes(VkImageView o) { return VkResource(eResImageView, o.handle); } -inline VkResource MakeRes(VkAttachmentView o) { return VkResource(eResAttachmentView, o.handle); } -inline VkResource MakeRes(VkFramebuffer o) { return VkResource(eResFramebuffer, o.handle); } -inline VkResource MakeRes(VkRenderPass o) { return VkResource(eResRenderPass, o.handle); } -inline VkResource MakeRes(VkShader o) { return VkResource(eResShader, o.handle); } -inline VkResource MakeRes(VkShaderModule o) { return VkResource(eResShaderModule, o.handle); } -inline VkResource MakeRes(VkPipeline o) { return VkResource(eResPipeline, o.handle); } -inline VkResource MakeRes(VkPipelineCache o) { return VkResource(eResPipelineCache, o.handle); } -inline VkResource MakeRes(VkPipelineLayout o) { return VkResource(eResPipelineLayout, o.handle); } -inline VkResource MakeRes(VkSampler o) { return VkResource(eResSampler, o.handle); } -inline VkResource MakeRes(VkDescriptorSet o) { return VkResource(eResDescriptorSet, o.handle); } -inline VkResource MakeRes(VkDescriptorPool o) { return VkResource(eResDescriptorPool, o.handle); } -inline VkResource MakeRes(VkDescriptorSetLayout o) { return VkResource(eResDescriptorSetLayout, o.handle); } -inline VkResource MakeRes(VkDynamicViewportState o) { return VkResource(eResViewportState, o.handle); } -inline VkResource MakeRes(VkDynamicRasterState o) { return VkResource(eResRasterState, o.handle); } -inline VkResource MakeRes(VkDynamicColorBlendState o) { return VkResource(eResColorBlendState, o.handle); } -inline VkResource MakeRes(VkDynamicDepthStencilState o) { return VkResource(eResDepthStencilState, o.handle); } -inline VkResource MakeRes(VkFence o) { return VkResource(eResFence, o.handle); } -inline VkResource MakeRes(VkSemaphore o) { return VkResource(eResSemaphore, o.handle); } - -inline VkResource MakeRes(VkSwapChainWSI o) { return VkResource(eResWSISwapChain, o.handle); } - #define UNTRANSITIONED_IMG_STATE ((VkImageLayout)0xffffffff) struct ImageRegionState @@ -475,7 +416,7 @@ struct ImageRegionState struct VkResourceRecord : public ResourceRecord { public: - static const NullInitialiser NullResource = MakeNullResource; + enum { NullResource = (unsigned int)NULL }; VkResourceRecord(ResourceId id) : ResourceRecord(id, true),