Fixing staging buffers not getting deleted

remove vgcore
This commit is contained in:
2023-11-06 15:08:27 +01:00
parent d35f7acddc
commit 4c567b60f3
69 changed files with 505 additions and 304 deletions
+31 -17
View File
@@ -14,21 +14,24 @@ MaterialInstance::MaterialInstance(uint64 id,
Array<std::string> params,
uint32 uniformBinding,
uint32 uniformSize)
: id(id)
, graphics(graphics)
: graphics(graphics)
, uniformBinding(uniformBinding)
, id(id)
{
uniformBuffer = graphics->createUniformBuffer(UniformBufferCreateInfo{
.sourceData = {
.size = uniformSize,
},
.dynamic = true,
}
);
if(uniformSize > 0)
{
uniformBuffer = graphics->createUniformBuffer(UniformBufferCreateInfo{
.sourceData = {
.size = uniformSize,
},
.dynamic = true,
}
);
}
uniformData.resize(uniformSize);
ArchiveBuffer buffer(graphics);
parameters.reserve(params.size());
for (int i = 0; i < params.size(); ++i)
for (size_t i = 0; i < params.size(); ++i)
{
Serialization::save(buffer, expressions[params[i]]);
buffer.rewind();
@@ -52,6 +55,14 @@ void MaterialInstance::updateDescriptor()
{
param->updateDescriptorSet(descriptor, uniformData.data());
}
if(uniformData.size() > 0)
{
uniformBuffer->updateContents(DataSource{
.size = uniformData.size(),
.data = uniformData.data(),
});
descriptor->updateBuffer(uniformBinding, uniformBuffer);
}
descriptor->writeChanges();
}
@@ -62,13 +73,16 @@ Gfx::PDescriptorSet MaterialInstance::getDescriptorSet() const
void MaterialInstance::setBaseMaterial(PMaterialAsset asset)
{
uniformBuffer = graphics->createUniformBuffer(UniformBufferCreateInfo{
.sourceData = {
.size = uniformData.size(),
},
.dynamic = true,
}
);
if(uniformData.size() > 0)
{
uniformBuffer = graphics->createUniformBuffer(UniformBufferCreateInfo{
.sourceData = {
.size = uniformData.size(),
},
.dynamic = true,
}
);
}
baseMaterial = asset;
}
+5
View File
@@ -4,6 +4,7 @@
#include "Asset/AssetRegistry.h"
#include "Graphics/Graphics.h"
#include "Graphics/Descriptor.h"
#include <format>
using namespace Seele;
@@ -40,6 +41,10 @@ ShaderExpression::ShaderExpression(std::string key)
{
}
ShaderExpression::~ShaderExpression()
{
}
void ShaderExpression::save(ArchiveBuffer& buffer) const
{
Serialization::save(buffer, inputs);
+5 -4
View File
@@ -38,6 +38,7 @@ struct ShaderExpression
std::string key;
ShaderExpression();
ShaderExpression(std::string key);
virtual ~ShaderExpression();
virtual uint64 getIdentifier() const = 0;
virtual std::string evaluate(Map<std::string, std::string>& varState) const = 0;
virtual void save(ArchiveBuffer& buffer) const;
@@ -216,14 +217,14 @@ struct MaterialNode
void load(ArchiveBuffer& buffer);
};
template<>
static void Serialization::save(ArchiveBuffer& buffer, const OShaderExpression& parameter)
void Serialization::save(ArchiveBuffer& buffer, const OShaderExpression& parameter)
{
Serialization::save(buffer, parameter->getIdentifier());
parameter->save(buffer);
}
template<>
static void Serialization::load(ArchiveBuffer& buffer, OShaderExpression& parameter)
void Serialization::load(ArchiveBuffer& buffer, OShaderExpression& parameter)
{
uint64 identifier = 0;
Serialization::load(buffer, identifier);
@@ -269,14 +270,14 @@ static void Serialization::load(ArchiveBuffer& buffer, OShaderExpression& parame
}
template<>
static void Serialization::save(ArchiveBuffer& buffer, const OShaderParameter& parameter)
void Serialization::save(ArchiveBuffer& buffer, const OShaderParameter& parameter)
{
Serialization::save(buffer, parameter->getIdentifier());
parameter->save(buffer);
}
template<>
static void Serialization::load(ArchiveBuffer& buffer, OShaderParameter& parameter)
void Serialization::load(ArchiveBuffer& buffer, OShaderParameter& parameter)
{
uint64 identifier = 0;
Serialization::load(buffer, identifier);