Skip to content

Commit fd5bd17

Browse files
committed
Moved resource manager to main
1 parent 474ab3e commit fd5bd17

File tree

7 files changed

+325
-26
lines changed

7 files changed

+325
-26
lines changed

.idea/workspace.xml

Lines changed: 24 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Engine/DescriptorCache.hpp

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,24 @@ namespace ENGINE
5151
this->defaultStorageImageView = defaultStorageImageView;
5252
this->defaultStorageImage = defaultStorageImage;
5353
}
54+
template <typename T>
55+
void SetSharedBufferPool(T)
56+
{
57+
58+
}
5459

55-
void AddShaderInfo(ShaderParser& parser)
60+
void AddShaderInfo(ShaderParser* parser)
5661
{
5762
std::vector<ShaderResource> uniqueResources;
58-
parser.GetLayout(uniqueResources);
63+
parser->GetLayout(uniqueResources);
5964
for (auto& resource : uniqueResources)
6065
{
6166
if (dstSetBuilder.uniqueBindings.contains(resource.binding))
6267
{
6368
continue;
6469
}
65-
std::unique_ptr<Buffer> ubo;
66-
std::unique_ptr<Buffer> ssbo;
70+
Buffer* ubo;
71+
Buffer* ssbo;
6772
std::unique_ptr<Image> storageImage;
6873
std::unique_ptr<ImageData> storageImageData;
6974
std::unique_ptr<ImageView> storageImageView;
@@ -96,16 +101,14 @@ namespace ENGINE
96101
break;
97102
case vk::DescriptorType::eUniformBuffer:
98103
bufferBindingsKeys.try_emplace(resource.name, resource);
99-
ubo = std::make_unique<Buffer>(core->physicalDevice, core->logicalDevice.get(),
100-
vk::BufferUsageFlagBits::eUniformBuffer,
104+
ubo = ResourcesManager::GetInstance()->GetBuffer(resource.name, vk::BufferUsageFlagBits::eUniformBuffer,
101105
vk::MemoryPropertyFlagBits::eHostVisible |
102106
vk::MemoryPropertyFlagBits::eHostCoherent, 1);
103107
buffersResources.try_emplace(resource.binding, std::move(ubo));
104108
break;
105109
case vk::DescriptorType::eStorageBuffer:
106110
bufferBindingsKeys.try_emplace(resource.name, resource);
107-
ssbo = std::make_unique<Buffer>(core->physicalDevice, core->logicalDevice.get(),
108-
vk::BufferUsageFlagBits::eStorageBuffer,
111+
ssbo = ResourcesManager::GetInstance()->GetBuffer(resource.name ,vk::BufferUsageFlagBits::eStorageBuffer,
109112
vk::MemoryPropertyFlagBits::eHostVisible |
110113
vk::MemoryPropertyFlagBits::eHostCoherent, 1);
111114
buffersResources.try_emplace(resource.binding,std::move(ssbo));
@@ -142,7 +145,7 @@ namespace ENGINE
142145

143146
for (auto& buffBinding : bufferBindingsKeys)
144147
{
145-
Buffer* buffer = buffersResources.at(buffBinding.second.binding).get();
148+
Buffer* buffer = buffersResources.at(buffBinding.second.binding);
146149
writerBuilder.AddWriteBuffer(buffBinding.second.binding, buffer->descriptor, buffBinding.second.type);
147150
}
148151

@@ -186,7 +189,7 @@ namespace ENGINE
186189
{
187190
for (auto& buffBinding : bufferBindingsKeys)
188191
{
189-
Buffer* buffer = buffersResources.at(buffBinding.second.binding).get();
192+
Buffer* buffer = buffersResources.at(buffBinding.second.binding);
190193
writerBuilder.AddWriteBuffer(buffBinding.second.binding, buffer->descriptor, buffBinding.second.type);
191194
}
192195

@@ -244,12 +247,13 @@ namespace ENGINE
244247
}
245248
if (sizeof(T) * bufferData.size()> bufferRef->deviceSize)
246249
{
247-
buffersResources.at(binding.binding).reset(new Buffer(core->physicalDevice, core->logicalDevice.get(),
248-
usageFlags,
249-
vk::MemoryPropertyFlagBits::eHostVisible |
250-
vk::MemoryPropertyFlagBits::eHostCoherent,
251-
sizeof(T) * bufferData.size(), bufferData.data()));
252-
UpdateDescriptor();
250+
buffersResources.at(binding.binding) = ResourcesManager::GetInstance()->SetBuffer(
251+
name,
252+
usageFlags,
253+
vk::MemoryPropertyFlagBits::eHostVisible |
254+
vk::MemoryPropertyFlagBits::eHostCoherent,
255+
sizeof(T) * bufferData.size(), bufferData.data());
256+
UpdateDescriptor();
253257
}else
254258
{
255259
//pending to handle this if is a staged resource
@@ -287,11 +291,12 @@ namespace ENGINE
287291
}
288292
if (sizeof(T) > bufferRef->deviceSize)
289293
{
290-
buffersResources.at(binding.binding).reset(new Buffer(core->physicalDevice, core->logicalDevice.get(),
291-
usageFlags,
292-
vk::MemoryPropertyFlagBits::eHostVisible |
293-
vk::MemoryPropertyFlagBits::eHostCoherent,
294-
sizeof(T), &bufferData));
294+
buffersResources.at(binding.binding) = ResourcesManager::GetInstance()->SetBuffer(
295+
name,
296+
usageFlags,
297+
vk::MemoryPropertyFlagBits::eHostVisible |
298+
vk::MemoryPropertyFlagBits::eHostCoherent,
299+
sizeof(T), &bufferData);
295300
UpdateDescriptor();
296301
}else
297302
{
@@ -480,7 +485,7 @@ namespace ENGINE
480485
std::cout << text;
481486
return nullptr;
482487
}
483-
return buffersResources.at(binding.binding).get();
488+
return buffersResources.at(binding.binding);
484489
}
485490
SamplerBinding* GetSamplerByName(std::string name)
486491
{
@@ -555,7 +560,7 @@ namespace ENGINE
555560
std::unordered_map<std::string, ShaderResource> bufferBindingsKeys;
556561
std::unordered_map<std::string, ShaderResource> imageBindingsKeys;
557562

558-
std::map<uint32_t, std::unique_ptr<Buffer>> buffersResources;
563+
std::map<uint32_t, Buffer*> buffersResources;
559564
std::map<uint32_t, SamplerBinding> imageSamplers;
560565
std::map<uint32_t, StorageBinding> storageImages;
561566
std::map<uint32_t, SamplerArray> samplerArrayResources;
@@ -574,6 +579,7 @@ namespace ENGINE
574579

575580
ImageView* defaultStorageImageView;
576581
Sampler* defaultStorageImage;
582+
bool useSharedPool;
577583

578584
};
579585

src/Engine/EngineInclude.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,6 @@
5757
#include "PresentQueue.hpp"
5858

5959
#include "ImageShipper.hpp"
60+
#include "ResourcesManager.hpp"
6061
#include "DescriptorCache.hpp"
6162

0 commit comments

Comments
 (0)