Przeglądaj źródła

Removed GpuBufferView from the public RenderAPI interface and made it specific to DX11

BearishSun 9 lat temu
rodzic
commit
e72395b399

+ 0 - 2
Source/BansheeCore/CMakeSources.cmake

@@ -140,7 +140,6 @@ set(BS_BANSHEECORE_INC_RENDERAPI
 	"Include/BsGpuParamDesc.h"
 	"Include/BsGpuParamBlockBuffer.h"
 	"Include/BsGpuParam.h"
-	"Include/BsGpuBufferView.h"
 	"Include/BsGpuBuffer.h"
 	"Include/BsEventQuery.h"
 	"Include/BsDepthStencilState.h"
@@ -419,7 +418,6 @@ set(BS_BANSHEECORE_SRC_RENDERAPI
 	"Source/BsDepthStencilState.cpp"
 	"Source/BsEventQuery.cpp"
 	"Source/BsGpuBuffer.cpp"
-	"Source/BsGpuBufferView.cpp"
 	"Source/BsGpuParam.cpp"
 	"Source/BsGpuParamBlockBuffer.cpp"
 	"Source/BsGpuParams.cpp"

+ 0 - 46
Source/BansheeCore/Include/BsGpuBuffer.h

@@ -3,7 +3,6 @@
 #pragma once
 
 #include "BsCorePrerequisites.h"
-#include "BsGpuBufferView.h"
 #include "BsCoreObject.h"
 
 namespace BansheeEngine 
@@ -195,57 +194,12 @@ namespace BansheeEngine
 		/** Returns properties describing the buffer. */
 		const GpuBufferProperties& getProperties() const { return mProperties; }
 
-		/**
-		 * Creates a buffer view that may be used for binding a buffer to a slot in the pipeline. Views allow you to specify
-		 * how is data in the buffer organized to make it easier for the pipeline to interpret.
-		 *
-		 * @param[in]	buffer			Buffer to create the view for.
-		 * @param[in]	firstElement	Position of the first element visible by the view.
-		 * @param[in]	numElements		Number of elements to bind to the view.
-		 * @param[in]	usage			Determines type of the view we are creating, and which slots in the pipeline will
-		 *								the view be bindable to.
-		 *
-		 * @note If a view with this exact parameters already exists, it will be returned and new one will not be created.
-		 * @note Only Default and RandomWrite views are supported for this type of buffer. 
-		 */
-		// TODO Low Priority: Perhaps reflect usage flag limitation by having an enum with only the supported two options?
-		static GpuBufferView* requestView(const SPtr<GpuBufferCore>& buffer, UINT32 firstElement, 
-			UINT32 numElements, GpuViewUsage usage);
-
-		/**
-		 * Releases a view created with requestView. 
-		 *
-		 * @note	View will only truly get released once all references to it are released.
-		 */
-		static void releaseView(GpuBufferView* view);
-
 		/** @copydoc HardwareBufferCoreManager::createGpuBuffer */
 		static SPtr<GpuBufferCore> create(const GPU_BUFFER_DESC& desc, GpuDeviceFlags deviceMask = GDF_DEFAULT);
 
 	protected:
 		GpuBufferCore(const GPU_BUFFER_DESC& desc, UINT32 deviceMask);
 
-		/** Creates an empty view for the current buffer. */
-		virtual GpuBufferView* createView() = 0;
-
-		/**	Destroys a view previously created for this buffer. */
-		virtual void destroyView(GpuBufferView* view) = 0;
-
-		/**	Destroys all buffer views regardless if their reference count is zero or not. */
-		void clearBufferViews();
-
-		/**	Helper class to help with reference counting for GPU buffer views. */
-		struct GpuBufferReference
-		{
-			GpuBufferReference(GpuBufferView* _view)
-				:view(_view), refCount(0)
-			{ }
-
-			GpuBufferView* view;
-			UINT32 refCount;
-		};
-
-		UnorderedMap<GPU_BUFFER_VIEW_DESC, GpuBufferReference*, GpuBufferView::HashFunction, GpuBufferView::EqualFunction> mBufferViews;
 		GpuBufferProperties mProperties;
 	};
 

+ 0 - 88
Source/BansheeCore/Include/BsGpuBufferView.h

@@ -1,88 +0,0 @@
-//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
-//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
-#pragma once
-
-#include "BsCorePrerequisites.h"
-
-namespace BansheeEngine
-{
-	/** @addtogroup RenderAPI-Internal
-	 *  @{
-	 */
-
-	/**
-	 * Descriptor structure used for initializing a GPUBufferView.
-	 *
-	 * @see		GpuBuffer
-	 */
-	struct BS_CORE_EXPORT GPU_BUFFER_VIEW_DESC
-	{
-		UINT32 firstElement;
-		UINT32 elementWidth;
-		UINT32 numElements;
-		bool useCounter;
-		GpuViewUsage usage;
-		GpuBufferFormat format;
-	};
-
-	/**
-	 * Holds information about a GPU buffer view. Views allow you to specify how is data in a buffer organized to make it 
-	 * easier for the pipeline to interpret.
-	 *			
-	 * @note	Buffers don't get bound to the pipeline directly, views do. 
-	 * @note	Core thread only.
-	 *
-	 * @see		GpuBuffer
-	 */
-	class BS_CORE_EXPORT GpuBufferView
-	{
-	public:
-		class HashFunction
-		{
-		public:
-			size_t operator()(const GPU_BUFFER_VIEW_DESC& key) const;
-		};
-
-		class EqualFunction
-		{
-		public:
-			bool operator()(const GPU_BUFFER_VIEW_DESC& a, const GPU_BUFFER_VIEW_DESC& b) const;
-		};
-
-		GpuBufferView();
-		virtual ~GpuBufferView();
-
-		/**
-		 * Initializes the view with the specified buffer and a set of parameters describing the view to create. Must be 
-		 * called right after construction.
-		 */
-		virtual void initialize(const SPtr<GpuBufferCore>& buffer, GPU_BUFFER_VIEW_DESC& desc);
-
-		/** Returns a descriptor structure used for creating the view. */
-		const GPU_BUFFER_VIEW_DESC& getDesc() const { return mDesc; }
-
-		/**	Returns the buffer this view was created for. */
-		SPtr<GpuBufferCore> getBuffer() const { return mBuffer; }
-
-		/** Returns index of first element in the buffer that this view provides access to. */
-		UINT32 getFirstElement() const { return mDesc.firstElement; }
-
-		/** Returns width of an element in the buffer, in bytes. */
-		UINT32 getElementWidth() const { return mDesc.elementWidth; }
-
-		/**	Returns the total number of elements this buffer provides access to. */
-		UINT32 getNumElements() const { return mDesc.numElements; }
-
-		/**	Returns true if this view allows a GPU program to use counters on the bound buffer. */
-		bool getUseCounter() const { return mDesc.useCounter; }
-
-		/** Returns view usage which determines where in the pipeline can the view be bound. */
-		GpuViewUsage getUsage() const { return mDesc.usage; }
-
-	protected:
-		GPU_BUFFER_VIEW_DESC mDesc;
-		SPtr<GpuBufferCore> mBuffer;
-	};
-
-	/** @} */
-}

+ 0 - 61
Source/BansheeCore/Source/BsGpuBuffer.cpp

@@ -25,67 +25,6 @@ namespace BansheeEngine
 		// I can't call it here since it needs a virtual method call
 	}
 
-	void GpuBufferCore::clearBufferViews()
-	{
-		for (auto iter = mBufferViews.begin(); iter != mBufferViews.end(); ++iter)
-		{
-			destroyView(iter->second->view);
-			bs_delete(iter->second);
-		}
-
-		mBufferViews.clear();
-	}
-
-	GpuBufferView* GpuBufferCore::requestView(const SPtr<GpuBufferCore>& buffer, UINT32 firstElement,
-		UINT32 numElements, GpuViewUsage usage)
-	{
-		const auto& props = buffer->getProperties();
-
-		GPU_BUFFER_VIEW_DESC key;
-		key.firstElement = firstElement;
-		key.elementWidth = props.getElementSize();
-		key.numElements = numElements;
-		key.usage = usage;
-		key.format = props.getFormat();
-		key.useCounter = props.getUseCounter();
-
-		auto iterFind = buffer->mBufferViews.find(key);
-		if (iterFind == buffer->mBufferViews.end())
-		{
-			GpuBufferView* newView = buffer->createView();
-			newView->initialize(buffer, key);
-			buffer->mBufferViews[key] = bs_new<GpuBufferReference>(newView);
-
-			iterFind = buffer->mBufferViews.find(key);
-		}
-
-		iterFind->second->refCount++;
-		return iterFind->second->view;
-	}
-
-	void GpuBufferCore::releaseView(GpuBufferView* view)
-	{
-		SPtr<GpuBufferCore> buffer = view->getBuffer();
-
-		auto iterFind = buffer->mBufferViews.find(view->getDesc());
-		if (iterFind == buffer->mBufferViews.end())
-		{
-			BS_EXCEPT(InternalErrorException, "Trying to release a buffer view that doesn't exist!");
-		}
-
-		iterFind->second->refCount--;
-
-		if (iterFind->second->refCount == 0)
-		{
-			GpuBufferReference* toRemove = iterFind->second;
-
-			buffer->mBufferViews.erase(iterFind);
-
-			buffer->destroyView(toRemove->view);
-			bs_delete(toRemove);
-		}
-	}
-
 	SPtr<GpuBufferCore> GpuBufferCore::create(const GPU_BUFFER_DESC& desc, GpuDeviceFlags deviceMask)
 	{
 		return HardwareBufferCoreManager::instance().createGpuBuffer(desc, deviceMask);

+ 0 - 42
Source/BansheeCore/Source/BsGpuBufferView.cpp

@@ -1,42 +0,0 @@
-//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
-//**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
-#include "BsGpuBufferView.h"
-
-namespace BansheeEngine
-{
-	size_t GpuBufferView::HashFunction::operator()(const GPU_BUFFER_VIEW_DESC& key) const
-	{
-		size_t seed = 0;
-		hash_combine(seed, key.elementWidth);
-		hash_combine(seed, key.firstElement);
-		hash_combine(seed, key.numElements);
-		hash_combine(seed, key.useCounter);
-		hash_combine(seed, key.usage);
-		hash_combine(seed, key.format);
-
-		return seed;
-	}
-
-	bool GpuBufferView::EqualFunction::operator()
-		(const GPU_BUFFER_VIEW_DESC& a, const GPU_BUFFER_VIEW_DESC& b) const
-	{
-		return a.elementWidth == b.elementWidth && a.firstElement == b.firstElement && a.numElements == b.numElements 
-			&& a.useCounter == b.useCounter && a.usage == b.usage && a.format == b.format;
-	}
-
-	GpuBufferView::GpuBufferView()
-	{
-
-	}
-
-	GpuBufferView::~GpuBufferView()
-	{
-
-	}
-
-	void GpuBufferView::initialize(const SPtr<GpuBufferCore>& buffer, GPU_BUFFER_VIEW_DESC& desc)
-	{
-		mBuffer = buffer;
-		mDesc = desc;
-	}
-}

+ 41 - 6
Source/BansheeD3D11RenderAPI/Include/BsD3D11GpuBuffer.h

@@ -4,6 +4,7 @@
 
 #include "BsD3D11Prerequisites.h"
 #include "BsGpuBuffer.h"
+#include "BsD3D11GpuBufferView.h"
 
 namespace BansheeEngine 
 {
@@ -34,6 +35,30 @@ namespace BansheeEngine
 		void copyData(GpuBufferCore& srcBuffer, UINT32 srcOffset, 
 			UINT32 dstOffset, UINT32 length, bool discardWholeBuffer = false) override;
 
+		/**
+		 * Creates a buffer view that may be used for binding a buffer to a slot in the pipeline. Views allow you to specify
+		 * how is data in the buffer organized to make it easier for the pipeline to interpret.
+		 *
+		 * @param[in]	buffer			Buffer to create the view for.
+		 * @param[in]	firstElement	Position of the first element visible by the view.
+		 * @param[in]	numElements		Number of elements to bind to the view.
+		 * @param[in]	usage			Determines type of the view we are creating, and which slots in the pipeline will
+		 *								the view be bindable to.
+		 *
+		 * @note If a view with this exact parameters already exists, it will be returned and new one will not be created.
+		 * @note Only Default and RandomWrite views are supported for this type of buffer. 
+		 */
+		// TODO Low Priority: Perhaps reflect usage flag limitation by having an enum with only the supported two options?
+		static GpuBufferView* requestView(const SPtr<D3D11GpuBufferCore>& buffer, UINT32 firstElement, 
+			UINT32 numElements, GpuViewUsage usage);
+
+		/**
+		 * Releases a view created with requestView. 
+		 *
+		 * @note	View will only truly get released once all references to it are released.
+		 */
+		static void releaseView(GpuBufferView* view);
+
 		/**	Returns the internal DX11 GPU buffer object. */
 		ID3D11Buffer* getDX11Buffer() const;
 
@@ -48,18 +73,28 @@ namespace BansheeEngine
 
 		D3D11GpuBufferCore(const GPU_BUFFER_DESC& desc, GpuDeviceFlags deviceMask);
 
-		/** @copydoc GpuBufferCore::createView */
-		GpuBufferView* createView() override;
-
-		/** @copydoc GpuBufferCore::destroyView */
-		void destroyView(GpuBufferView* view) override;
+		/**	Destroys all buffer views regardless if their reference count is zero or not. */
+		void clearBufferViews();
 
 		/** @copydoc GpuBufferCore::initialize */
 		void initialize() override;
 
 	private:
+		/**	Helper class to help with reference counting for GPU buffer views. */
+		struct GpuBufferReference
+		{
+			GpuBufferReference(GpuBufferView* _view)
+				:view(_view), refCount(0)
+			{ }
+
+			GpuBufferView* view;
+			UINT32 refCount;
+		};
+
 		D3D11HardwareBuffer* mBuffer;
-		D3D11GpuBufferView* mBufferView;
+		GpuBufferView* mBufferView;
+
+		UnorderedMap<GPU_BUFFER_VIEW_DESC, GpuBufferReference*, GpuBufferView::HashFunction, GpuBufferView::EqualFunction> mBufferViews;
     };
 
 	/** @} */

+ 55 - 5
Source/BansheeD3D11RenderAPI/Include/BsD3D11GpuBufferView.h

@@ -3,7 +3,6 @@
 #pragma once
 
 #include "BsD3D11Prerequisites.h"
-#include "BsGpuBufferView.h"
 
 namespace BansheeEngine
 {
@@ -11,18 +10,66 @@ namespace BansheeEngine
 	 *  @{
 	 */
 
+	/**
+	 * Descriptor structure used for initializing a GpuBufferView.
+	 *
+	 * @see		GpuBuffer
+	 */
+	struct BS_CORE_EXPORT GPU_BUFFER_VIEW_DESC
+	{
+		UINT32 firstElement;
+		UINT32 elementWidth;
+		UINT32 numElements;
+		bool useCounter;
+		GpuViewUsage usage;
+		GpuBufferFormat format;
+	};
+
 	/**
 	 * Represents a specific view of a GpuBuffer. Different views all of the same buffer be used in different situations
 	 * (for example for reading from a shader, or for a unordered read/write operation).
 	 */
-	class BS_D3D11_EXPORT D3D11GpuBufferView : public GpuBufferView
+	class GpuBufferView
 	{
 	public:
-		D3D11GpuBufferView();
-		virtual ~D3D11GpuBufferView();
+		class HashFunction
+		{
+		public:
+			size_t operator()(const GPU_BUFFER_VIEW_DESC& key) const;
+		};
+
+		class EqualFunction
+		{
+		public:
+			bool operator()(const GPU_BUFFER_VIEW_DESC& a, const GPU_BUFFER_VIEW_DESC& b) const;
+		};
+
+		GpuBufferView();
+		virtual ~GpuBufferView();
 
 		/** @copydoc GpuBufferView::initialize */
-		void initialize(const SPtr<GpuBufferCore>& buffer, GPU_BUFFER_VIEW_DESC& desc) override;
+		void initialize(const SPtr<D3D11GpuBufferCore>& buffer, GPU_BUFFER_VIEW_DESC& desc);
+
+		/** Returns a descriptor structure used for creating the view. */
+		const GPU_BUFFER_VIEW_DESC& getDesc() const { return mDesc; }
+
+		/**	Returns the buffer this view was created for. */
+		SPtr<D3D11GpuBufferCore> getBuffer() const { return mBuffer; }
+
+		/** Returns index of first element in the buffer that this view provides access to. */
+		UINT32 getFirstElement() const { return mDesc.firstElement; }
+
+		/** Returns width of an element in the buffer, in bytes. */
+		UINT32 getElementWidth() const { return mDesc.elementWidth; }
+
+		/**	Returns the total number of elements this buffer provides access to. */
+		UINT32 getNumElements() const { return mDesc.numElements; }
+
+		/**	Returns true if this view allows a GPU program to use counters on the bound buffer. */
+		bool getUseCounter() const { return mDesc.useCounter; }
+
+		/** Returns view usage which determines where in the pipeline can the view be bound. */
+		GpuViewUsage getUsage() const { return mDesc.usage; }
 
 		/** Returns the DX11 shader resource view object for the buffer. */
 		ID3D11ShaderResourceView* getSRV() const { return mSRV; }
@@ -62,6 +109,9 @@ namespace BansheeEngine
 
 		ID3D11ShaderResourceView* mSRV;
 		ID3D11UnorderedAccessView* mUAV;
+
+		GPU_BUFFER_VIEW_DESC mDesc;
+		SPtr<D3D11GpuBufferCore> mBuffer;
 	};
 
 	/** @} */

+ 1 - 1
Source/BansheeD3D11RenderAPI/Include/BsD3D11Prerequisites.h

@@ -55,7 +55,7 @@ namespace BansheeEngine
 	class D3D11RenderUtility;
 	class D3D11GpuProgramCore;
 	class D3D11TextureView;
-	class D3D11GpuBufferView;
+	class GpuBufferView;
 
 	/**	DirectX 11 specific types to track resource statistics for. */
 	enum D3D11RenderStatResourceType

+ 60 - 6
Source/BansheeD3D11RenderAPI/Source/BsD3D11GpuBuffer.cpp

@@ -64,7 +64,7 @@ namespace BansheeEngine
 			usage |= GVU_RANDOMWRITE;
 
 		// Keep a single view of the entire buffer, we don't support views of sub-sets (yet)
-		mBufferView = static_cast<D3D11GpuBufferView*>(requestView(thisPtr, 0, props.getElementCount(), (GpuViewUsage)usage));
+		mBufferView = requestView(thisPtr, 0, props.getElementCount(), (GpuViewUsage)usage);
 
 		BS_INC_RENDER_STAT_CAT(ResCreated, RenderStatObject_GpuBuffer);
 
@@ -120,15 +120,69 @@ namespace BansheeEngine
 		return mBuffer->getD3DBuffer(); 
 	}
 
-	GpuBufferView* D3D11GpuBufferCore::createView()
+	GpuBufferView* D3D11GpuBufferCore::requestView(const SPtr<D3D11GpuBufferCore>& buffer, UINT32 firstElement,
+		UINT32 numElements, GpuViewUsage usage)
 	{
-		return bs_new<D3D11GpuBufferView>();
+		const auto& props = buffer->getProperties();
+
+		GPU_BUFFER_VIEW_DESC key;
+		key.firstElement = firstElement;
+		key.elementWidth = props.getElementSize();
+		key.numElements = numElements;
+		key.usage = usage;
+		key.format = props.getFormat();
+		key.useCounter = props.getUseCounter();
+
+		auto iterFind = buffer->mBufferViews.find(key);
+		if (iterFind == buffer->mBufferViews.end())
+		{
+			GpuBufferView* newView = bs_new<GpuBufferView>();
+			newView->initialize(buffer, key);
+			buffer->mBufferViews[key] = bs_new<GpuBufferReference>(newView);
+
+			iterFind = buffer->mBufferViews.find(key);
+		}
+
+		iterFind->second->refCount++;
+		return iterFind->second->view;
 	}
 
-	void D3D11GpuBufferCore::destroyView(GpuBufferView* view)
+	void D3D11GpuBufferCore::releaseView(GpuBufferView* view)
 	{
-		if(view != nullptr)
-			bs_delete(view);
+		SPtr<D3D11GpuBufferCore> buffer = view->getBuffer();
+
+		auto iterFind = buffer->mBufferViews.find(view->getDesc());
+		if (iterFind == buffer->mBufferViews.end())
+		{
+			BS_EXCEPT(InternalErrorException, "Trying to release a buffer view that doesn't exist!");
+		}
+
+		iterFind->second->refCount--;
+
+		if (iterFind->second->refCount == 0)
+		{
+			GpuBufferReference* toRemove = iterFind->second;
+
+			buffer->mBufferViews.erase(iterFind);
+
+			if (toRemove->view != nullptr)
+				bs_delete(toRemove->view);
+
+			bs_delete(toRemove);
+		}
+	}
+
+	void D3D11GpuBufferCore::clearBufferViews()
+	{
+		for (auto iter = mBufferViews.begin(); iter != mBufferViews.end(); ++iter)
+		{
+			if (iter->second->view != nullptr)
+				bs_delete(iter->second->view);
+
+			bs_delete(iter->second);
+		}
+
+		mBufferViews.clear();
 	}
 
 	ID3D11ShaderResourceView* D3D11GpuBufferCore::getSRV() const

+ 28 - 7
Source/BansheeD3D11RenderAPI/Source/BsD3D11GpuBufferView.cpp

@@ -9,13 +9,33 @@
 
 namespace BansheeEngine
 {
-	D3D11GpuBufferView::D3D11GpuBufferView()
-		:GpuBufferView(), mSRV(nullptr), mUAV(nullptr)
+	size_t GpuBufferView::HashFunction::operator()(const GPU_BUFFER_VIEW_DESC& key) const
+	{
+		size_t seed = 0;
+		hash_combine(seed, key.elementWidth);
+		hash_combine(seed, key.firstElement);
+		hash_combine(seed, key.numElements);
+		hash_combine(seed, key.useCounter);
+		hash_combine(seed, key.usage);
+		hash_combine(seed, key.format);
+
+		return seed;
+	}
+
+	bool GpuBufferView::EqualFunction::operator()
+		(const GPU_BUFFER_VIEW_DESC& a, const GPU_BUFFER_VIEW_DESC& b) const
+	{
+		return a.elementWidth == b.elementWidth && a.firstElement == b.firstElement && a.numElements == b.numElements
+			&& a.useCounter == b.useCounter && a.usage == b.usage && a.format == b.format;
+	}
+
+	GpuBufferView::GpuBufferView()
+		:mSRV(nullptr), mUAV(nullptr)
 	{
 
 	}
 
-	D3D11GpuBufferView::~D3D11GpuBufferView()
+	GpuBufferView::~GpuBufferView()
 	{
 		SAFE_RELEASE(mSRV);
 		SAFE_RELEASE(mUAV);
@@ -23,9 +43,10 @@ namespace BansheeEngine
 		BS_INC_RENDER_STAT_CAT(ResDestroyed, RenderStatObject_ResourceView);
 	}
 
-	void D3D11GpuBufferView::initialize(const SPtr<GpuBufferCore>& buffer, GPU_BUFFER_VIEW_DESC& desc)
+	void GpuBufferView::initialize(const SPtr<D3D11GpuBufferCore>& buffer, GPU_BUFFER_VIEW_DESC& desc)
 	{
-		GpuBufferView::initialize(buffer, desc);
+		mBuffer = buffer;
+		mDesc = desc;
 
 		D3D11GpuBufferCore* d3d11GpuBuffer = static_cast<D3D11GpuBufferCore*>(buffer.get());
 
@@ -43,7 +64,7 @@ namespace BansheeEngine
 		BS_INC_RENDER_STAT_CAT(ResCreated, RenderStatObject_ResourceView);
 	}
 
-	ID3D11ShaderResourceView* D3D11GpuBufferView::createSRV(D3D11GpuBufferCore* buffer, UINT32 firstElement, UINT32 elementWidth, UINT32 numElements)
+	ID3D11ShaderResourceView* GpuBufferView::createSRV(D3D11GpuBufferCore* buffer, UINT32 firstElement, UINT32 elementWidth, UINT32 numElements)
 	{
 		const GpuBufferProperties& props = buffer->getProperties();
 
@@ -90,7 +111,7 @@ namespace BansheeEngine
 		return srv;
 	}
 
-	ID3D11UnorderedAccessView* D3D11GpuBufferView::createUAV(D3D11GpuBufferCore* buffer, UINT32 firstElement, UINT32 numElements, bool useCounter)
+	ID3D11UnorderedAccessView* GpuBufferView::createUAV(D3D11GpuBufferCore* buffer, UINT32 firstElement, UINT32 numElements, bool useCounter)
 	{
 		const GpuBufferProperties& props = buffer->getProperties();
 

+ 0 - 6
Source/BansheeGLRenderAPI/Include/BsGLGpuBuffer.h

@@ -55,12 +55,6 @@ namespace BansheeEngine
 		/** @copydoc GpuBufferCore::initialize */
 		void initialize() override;
 
-		/** @copydoc GpuBufferCore::createView */
-		GpuBufferView* createView() override;
-
-		/** @copydoc GpuBufferCore::destroyView */
-		void destroyView(GpuBufferView* view) override;
-
 		GLuint mTextureID;
 		GLBuffer mBuffer;
 		GLenum mFormat;

+ 0 - 12
Source/BansheeGLRenderAPI/Source/BsGLGpuBuffer.cpp

@@ -30,7 +30,6 @@ namespace BansheeEngine
 		glDeleteTextures(1, &mTextureID);
 
 		BS_INC_RENDER_STAT_CAT(ResDestroyed, RenderStatObject_GpuBuffer);
-		clearBufferViews();
 	}
 
 	void GLGpuBufferCore::initialize()
@@ -93,15 +92,4 @@ namespace BansheeEngine
 		GLuint srcId = glSrcBuffer.getGLBufferId();
 		glCopyBufferSubData(srcId, getGLBufferId(), srcOffset, dstOffset, length);
 	}
-
-	GpuBufferView* GLGpuBufferCore::createView()
-	{
-		// Not used for OpenGL
-		return nullptr;
-	}
-
-	void GLGpuBufferCore::destroyView(GpuBufferView* view)
-	{
-		// Not used for OpenGL
-	}
 }

+ 0 - 6
Source/BansheeVulkanRenderAPI/Include/BsVulkanGpuBuffer.h

@@ -44,12 +44,6 @@ namespace BansheeEngine
 
 		VulkanGpuBufferCore(const GPU_BUFFER_DESC& desc, GpuDeviceFlags deviceMask);
 
-		/** @copydoc GpuBufferCore::createView */
-		GpuBufferView* createView() override;
-
-		/** @copydoc GpuBufferCore::destroyView */
-		void destroyView(GpuBufferView* view) override;
-
 		/** @copydoc GpuBufferCore::initialize */
 		void initialize() override;
 	private:

+ 0 - 1
Source/BansheeVulkanRenderAPI/Source/BsVulkanGpuBuffer.cpp

@@ -21,7 +21,6 @@ namespace BansheeEngine
 		if (mBuffer != nullptr)
 			bs_delete(mBuffer);
 
-		clearBufferViews();
 		BS_INC_RENDER_STAT_CAT(ResDestroyed, RenderStatObject_GpuBuffer);
 	}