From 1f33949be2b34d33bca89f47cc267e6f77f627ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Fri, 12 Feb 2021 12:00:07 +0100 Subject: [PATCH] BufferCollection cleanup + destringviewified --- .../src/Renderer/BufferCollection.bf | 67 ++++--------------- 1 file changed, 14 insertions(+), 53 deletions(-) diff --git a/GlitchyEngine/src/Renderer/BufferCollection.bf b/GlitchyEngine/src/Renderer/BufferCollection.bf index ef97959..579aba4 100644 --- a/GlitchyEngine/src/Renderer/BufferCollection.bf +++ b/GlitchyEngine/src/Renderer/BufferCollection.bf @@ -5,11 +5,11 @@ namespace GlitchyEngine.Renderer { public class BufferCollection { - typealias BufferEntry = (String Name, int Index, Buffer Buffer);//, bool OwnsBuffer + typealias BufferEntry = (String Name, int Index, Buffer Buffer); List _buffers ~ DeleteBufferEntries!(_); - Dictionary _strToBuf ~ delete _; //delete:append _; + Dictionary _strToBuf ~ delete _; //delete:append _; Dictionary _idxToBuf ~ delete _; //delete:append _; [AllowAppend] @@ -17,7 +17,7 @@ namespace GlitchyEngine.Renderer { // Todo: append allocate as soon as it's fixed let buffers = new List(); - let strToBuf = new Dictionary(); + let strToBuf = new Dictionary(); let idxToBuf = new Dictionary(); _buffers = buffers; @@ -40,15 +40,14 @@ namespace GlitchyEngine.Renderer } 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. * @param idx The index (shader buffer register) 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 void ReplaceBuffer(int idx, Buffer buffer)//, bool passOwnership = false + public void ReplaceBuffer(int idx, Buffer buffer) { if(_idxToBuf.TryGetValue(idx, let oldBuffer)) { @@ -59,12 +58,9 @@ namespace GlitchyEngine.Renderer Log.EngineLogger.Assert(idx == bufferDesc.Index); oldBuffer.ReleaseRef(); - //if(bufferDesc.OwnsBuffer) - // delete bufferDesc.Buffer; buffer.AddRef(); bufferDesc.Buffer = buffer; - //bufferDesc.OwnsBuffer = passOwnership; _strToBuf[bufferDesc.Name] = buffer; _idxToBuf[bufferDesc.Index] = buffer; @@ -74,14 +70,14 @@ namespace GlitchyEngine.Renderer Log.EngineLogger.Assert(false, "No buffer at the given index."); } } - + /** * 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. + * @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)) { @@ -89,48 +85,13 @@ namespace GlitchyEngine.Renderer 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(); - //if(bufferDesc.OwnsBuffer) - // delete bufferDesc.Buffer; + oldBuffer?.ReleaseRef(); - buffer.AddRef(); + buffer?.AddRef(); 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; _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); - BufferEntry entry = (nameStr, index, buffer); //, passOwnership + BufferEntry entry = (nameStr, index, buffer); buffer.AddRef(); _buffers.Add(entry);