mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 13:01:52 +00:00
BufferCollection cleanup + destringviewified
This commit is contained in:
@@ -5,11 +5,11 @@ namespace GlitchyEngine.Renderer
|
|||||||
{
|
{
|
||||||
public class BufferCollection
|
public class BufferCollection
|
||||||
{
|
{
|
||||||
typealias BufferEntry = (String Name, int Index, Buffer Buffer);//, bool OwnsBuffer
|
typealias BufferEntry = (String Name, int Index, Buffer Buffer);
|
||||||
|
|
||||||
List<BufferEntry> _buffers ~ DeleteBufferEntries!(_);
|
List<BufferEntry> _buffers ~ DeleteBufferEntries!(_);
|
||||||
|
|
||||||
Dictionary<StringView, Buffer> _strToBuf ~ delete _; //delete:append _;
|
Dictionary<String, Buffer> _strToBuf ~ delete _; //delete:append _;
|
||||||
Dictionary<int, Buffer> _idxToBuf ~ delete _; //delete:append _;
|
Dictionary<int, Buffer> _idxToBuf ~ delete _; //delete:append _;
|
||||||
|
|
||||||
[AllowAppend]
|
[AllowAppend]
|
||||||
@@ -17,7 +17,7 @@ namespace GlitchyEngine.Renderer
|
|||||||
{
|
{
|
||||||
// Todo: append allocate as soon as it's fixed
|
// Todo: append allocate as soon as it's fixed
|
||||||
let buffers = new List<BufferEntry>();
|
let buffers = new List<BufferEntry>();
|
||||||
let strToBuf = new Dictionary<StringView, Buffer>();
|
let strToBuf = new Dictionary<String, Buffer>();
|
||||||
let idxToBuf = new Dictionary<int, Buffer>();
|
let idxToBuf = new Dictionary<int, Buffer>();
|
||||||
|
|
||||||
_buffers = buffers;
|
_buffers = buffers;
|
||||||
@@ -40,15 +40,14 @@ namespace GlitchyEngine.Renderer
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Buffer this[int idx] => _idxToBuf[idx];
|
public Buffer this[int idx] => _idxToBuf[idx];
|
||||||
public Buffer this[StringView name] => _strToBuf[name];
|
public Buffer this[String name] => _strToBuf[name];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replaces the buffer with the given index.
|
* Replaces the buffer with the given index.
|
||||||
* @param idx The index (shader buffer register) of the buffer to replace.
|
* @param idx The index (shader buffer register) of the buffer to replace.
|
||||||
* @param buffer The new buffer.
|
* @param buffer The new buffer.
|
||||||
* @param If set to true, the Collection will take ownership of the buffer; if false, the ownership will remain with the caller.
|
|
||||||
*/
|
*/
|
||||||
public void ReplaceBuffer(int idx, Buffer buffer)//, bool passOwnership = false
|
public void ReplaceBuffer(int idx, Buffer buffer)
|
||||||
{
|
{
|
||||||
if(_idxToBuf.TryGetValue(idx, let oldBuffer))
|
if(_idxToBuf.TryGetValue(idx, let oldBuffer))
|
||||||
{
|
{
|
||||||
@@ -59,12 +58,9 @@ namespace GlitchyEngine.Renderer
|
|||||||
Log.EngineLogger.Assert(idx == bufferDesc.Index);
|
Log.EngineLogger.Assert(idx == bufferDesc.Index);
|
||||||
|
|
||||||
oldBuffer.ReleaseRef();
|
oldBuffer.ReleaseRef();
|
||||||
//if(bufferDesc.OwnsBuffer)
|
|
||||||
// delete bufferDesc.Buffer;
|
|
||||||
|
|
||||||
buffer.AddRef();
|
buffer.AddRef();
|
||||||
bufferDesc.Buffer = buffer;
|
bufferDesc.Buffer = buffer;
|
||||||
//bufferDesc.OwnsBuffer = passOwnership;
|
|
||||||
|
|
||||||
_strToBuf[bufferDesc.Name] = buffer;
|
_strToBuf[bufferDesc.Name] = buffer;
|
||||||
_idxToBuf[bufferDesc.Index] = buffer;
|
_idxToBuf[bufferDesc.Index] = buffer;
|
||||||
@@ -79,9 +75,9 @@ namespace GlitchyEngine.Renderer
|
|||||||
* Replaces the buffer with the given name.
|
* Replaces the buffer with the given name.
|
||||||
* @param name The name of the buffer to replace.
|
* @param name The name of the buffer to replace.
|
||||||
* @param buffer The new buffer.
|
* @param buffer The new buffer.
|
||||||
* @param If set to true, the Collection will take ownership of the buffer; if false, the ownership will remain with the caller.
|
* @returns True, if the buffer was replaced successfully; false, otherwise.
|
||||||
*/
|
*/
|
||||||
public void ReplaceBuffer(StringView name, Buffer buffer) // , bool passOwnership = false
|
public bool TryReplaceBuffer(String name, Buffer buffer)
|
||||||
{
|
{
|
||||||
if(_strToBuf.TryGetValue(name, let oldBuffer))
|
if(_strToBuf.TryGetValue(name, let oldBuffer))
|
||||||
{
|
{
|
||||||
@@ -89,48 +85,13 @@ namespace GlitchyEngine.Renderer
|
|||||||
|
|
||||||
ref BufferEntry bufferDesc = ref _buffers[index];
|
ref BufferEntry bufferDesc = ref _buffers[index];
|
||||||
|
|
||||||
Log.EngineLogger.Assert(name == bufferDesc.Name);
|
// If the names don't match something went spectactularly wrong.
|
||||||
|
Log.EngineLogger.AssertDebug(name == bufferDesc.Name);
|
||||||
|
|
||||||
oldBuffer.ReleaseRef();
|
oldBuffer?.ReleaseRef();
|
||||||
//if(bufferDesc.OwnsBuffer)
|
|
||||||
// delete bufferDesc.Buffer;
|
|
||||||
|
|
||||||
buffer.AddRef();
|
buffer?.AddRef();
|
||||||
bufferDesc.Buffer = buffer;
|
bufferDesc.Buffer = buffer;
|
||||||
//bufferDesc.OwnsBuffer = passOwnership;
|
|
||||||
|
|
||||||
_strToBuf[bufferDesc.Name] = buffer;
|
|
||||||
_idxToBuf[bufferDesc.Index] = buffer;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Log.EngineLogger.Assert(false, "No buffer with the given name.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Replaces the buffer with the given name.
|
|
||||||
* @param name The name of the buffer to replace.
|
|
||||||
* @param buffer The new buffer.
|
|
||||||
* @param If set to true, the Collection will take ownership of the buffer; if false, the ownership will remain with the caller.
|
|
||||||
*/
|
|
||||||
public bool TryReplaceBuffer(StringView name, Buffer buffer) // , bool passOwnership = false
|
|
||||||
{
|
|
||||||
if(_strToBuf.TryGetValue(name, let oldBuffer))
|
|
||||||
{
|
|
||||||
int index = GetIndexOfBuffer(oldBuffer);
|
|
||||||
|
|
||||||
ref BufferEntry bufferDesc = ref _buffers[index];
|
|
||||||
|
|
||||||
Log.EngineLogger.Assert(name == bufferDesc.Name);
|
|
||||||
|
|
||||||
//if(bufferDesc.OwnsBuffer)
|
|
||||||
// delete bufferDesc.Buffer;
|
|
||||||
oldBuffer.ReleaseRef();
|
|
||||||
|
|
||||||
buffer.AddRef();
|
|
||||||
bufferDesc.Buffer = buffer;
|
|
||||||
//bufferDesc.OwnsBuffer = passOwnership;
|
|
||||||
|
|
||||||
_strToBuf[bufferDesc.Name] = buffer;
|
_strToBuf[bufferDesc.Name] = buffer;
|
||||||
_idxToBuf[bufferDesc.Index] = buffer;
|
_idxToBuf[bufferDesc.Index] = buffer;
|
||||||
@@ -143,10 +104,10 @@ namespace GlitchyEngine.Renderer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Add(int index, StringView name, Buffer buffer) //, bool passOwnership = false
|
public void Add(int index, String name, Buffer buffer)
|
||||||
{
|
{
|
||||||
String nameStr = new String(name);
|
String nameStr = new String(name);
|
||||||
BufferEntry entry = (nameStr, index, buffer); //, passOwnership
|
BufferEntry entry = (nameStr, index, buffer);
|
||||||
|
|
||||||
buffer.AddRef();
|
buffer.AddRef();
|
||||||
_buffers.Add(entry);
|
_buffers.Add(entry);
|
||||||
|
|||||||
Reference in New Issue
Block a user