diff --git a/RenderSystems/Direct3D11/include/OgreD3D11HardwareBuffer.h b/RenderSystems/Direct3D11/include/OgreD3D11HardwareBuffer.h index 5b197c8fcc5..4a0446e7ee3 100644 --- a/RenderSystems/Direct3D11/include/OgreD3D11HardwareBuffer.h +++ b/RenderSystems/Direct3D11/include/OgreD3D11HardwareBuffer.h @@ -64,7 +64,7 @@ namespace Ogre { public: D3D11HardwareBuffer(BufferType btype, size_t sizeBytes, HardwareBuffer::Usage usage, - D3D11Device & device, bool useSystemMem, bool useShadowBuffer, bool streamOut); + D3D11Device & device, bool useShadowBuffer, bool streamOut); ~D3D11HardwareBuffer(); /** See HardwareBuffer. */ void readData(size_t offset, size_t length, void* pDest); diff --git a/RenderSystems/Direct3D11/include/OgreD3D11HardwareIndexBuffer.h b/RenderSystems/Direct3D11/include/OgreD3D11HardwareIndexBuffer.h index 21f047df169..e5159d1a1bd 100644 --- a/RenderSystems/Direct3D11/include/OgreD3D11HardwareIndexBuffer.h +++ b/RenderSystems/Direct3D11/include/OgreD3D11HardwareIndexBuffer.h @@ -44,7 +44,7 @@ namespace Ogre { public: D3D11HardwareIndexBuffer(HardwareBufferManagerBase* mgr, IndexType idxType, size_t numIndexes, - HardwareBuffer::Usage usage, D3D11Device & device, bool useSystemMem, bool useShadowBuffer); + HardwareBuffer::Usage usage, D3D11Device & device, bool useShadowBuffer); ~D3D11HardwareIndexBuffer(); // override all data-gathering methods diff --git a/RenderSystems/Direct3D11/include/OgreD3D11HardwareVertexBuffer.h b/RenderSystems/Direct3D11/include/OgreD3D11HardwareVertexBuffer.h index b093a16e52b..450ea308725 100644 --- a/RenderSystems/Direct3D11/include/OgreD3D11HardwareVertexBuffer.h +++ b/RenderSystems/Direct3D11/include/OgreD3D11HardwareVertexBuffer.h @@ -44,7 +44,7 @@ namespace Ogre { public: D3D11HardwareVertexBuffer(HardwareBufferManagerBase* mgr, size_t vertexSize, size_t numVertices, - HardwareBuffer::Usage usage, D3D11Device & device, bool useSystemMem, bool useShadowBuffer, + HardwareBuffer::Usage usage, D3D11Device & device, bool useShadowBuffer, bool streamOut); ~D3D11HardwareVertexBuffer(); diff --git a/RenderSystems/Direct3D11/src/OgreD3D11HardwareBuffer.cpp b/RenderSystems/Direct3D11/src/OgreD3D11HardwareBuffer.cpp index 458479f906b..1255dfa6631 100644 --- a/RenderSystems/Direct3D11/src/OgreD3D11HardwareBuffer.cpp +++ b/RenderSystems/Direct3D11/src/OgreD3D11HardwareBuffer.cpp @@ -35,8 +35,8 @@ namespace Ogre { D3D11HardwareBuffer::D3D11HardwareBuffer( BufferType btype, size_t sizeBytes, HardwareBuffer::Usage usage, D3D11Device & device, - bool useSystemMemory, bool useShadowBuffer, bool streamOut) - : HardwareBuffer(usage, useSystemMemory, useShadowBuffer), + bool useShadowBuffer, bool streamOut) + : HardwareBuffer(usage, false, useShadowBuffer), mpTempStagingBuffer(0), mUseTempStagingBuffer(false), mBufferType(btype), @@ -44,10 +44,10 @@ namespace Ogre { { mSizeInBytes = sizeBytes; mDesc.ByteWidth = static_cast(sizeBytes); - mDesc.CPUAccessFlags = D3D11Mappings::_getAccessFlags(mUsage); + mDesc.CPUAccessFlags = 0; mDesc.MiscFlags = 0; - if (useSystemMemory) + if (usage == HBU_CPU_ONLY) { mDesc.Usage = D3D11_USAGE_STAGING; //A D3D11_USAGE_STAGING Resource cannot be bound to any parts of the graphics pipeline, so therefore cannot have any BindFlags bits set. @@ -68,7 +68,7 @@ namespace Ogre { mDesc.BindFlags |= D3D11_BIND_STREAM_OUTPUT; } - if (!useSystemMemory && (usage & HardwareBuffer::HBU_DYNAMIC)) + if (usage == HBU_CPU_TO_GPU) { // We want to be able to map this buffer mDesc.CPUAccessFlags |= D3D11_CPU_ACCESS_WRITE; @@ -80,8 +80,6 @@ namespace Ogre { // which themselves cannot be used for input / output to the GPU. Thus // for any locks except write locks on dynamic resources, we have to use // temporary staging resources instead and use async copies. - // We use the 'useSystemMemory' option to indicate a staging resource - // TODO: we can explicitly initialise the buffer contents here if we like // not doing this since OGRE doesn't support this model yet @@ -91,7 +89,7 @@ namespace Ogre { if (mUseShadowBuffer) { mShadowBuffer.reset(new D3D11HardwareBuffer(mBufferType, - mSizeInBytes, mUsage, mDevice, true, false, false)); + mSizeInBytes, HBU_CPU_ONLY, mDevice, false, false)); } } @@ -113,8 +111,7 @@ namespace Ogre { } - if (mSystemMemory || - (mUsage & HardwareBuffer::HBU_DYNAMIC && + if (mUsage == HBU_CPU_ONLY || (mUsage & HardwareBuffer::HBU_DYNAMIC && (options == HardwareBuffer::HBL_DISCARD || options == HardwareBuffer::HBL_NO_OVERWRITE))) { // Staging (system memory) buffers or dynamic, write-only buffers @@ -129,12 +126,12 @@ namespace Ogre { { case HBL_DISCARD: // To use D3D11_MAP_WRITE_DISCARD resource must have been created with write access and dynamic usage. - mapType = mSystemMemory ? D3D11_MAP_WRITE : D3D11_MAP_WRITE_DISCARD; + mapType = mUsage == HBU_CPU_ONLY ? D3D11_MAP_WRITE : D3D11_MAP_WRITE_DISCARD; break; case HBL_NO_OVERWRITE: // To use D3D11_MAP_WRITE_NO_OVERWRITE resource must have been created with write access. - // TODO: check (mSystemMemory aka D3D11_USAGE_STAGING => D3D11_MAP_WRITE_NO_OVERWRITE) combo - it`s not forbidden by MSDN - mapType = mSystemMemory ? D3D11_MAP_WRITE : D3D11_MAP_WRITE_NO_OVERWRITE; + // TODO: check (D3D11_USAGE_STAGING => D3D11_MAP_WRITE_NO_OVERWRITE) combo - it`s not forbidden by MSDN + mapType = mUsage == HBU_CPU_ONLY ? D3D11_MAP_WRITE : D3D11_MAP_WRITE_NO_OVERWRITE; break; case HBL_NORMAL: mapType = (mDesc.CPUAccessFlags & D3D11_CPU_ACCESS_READ) ? D3D11_MAP_READ_WRITE : D3D11_MAP_WRITE; @@ -164,7 +161,7 @@ namespace Ogre { { // create another buffer instance but use system memory mpTempStagingBuffer = new D3D11HardwareBuffer(mBufferType, - mSizeInBytes, mUsage, mDevice, true, false, false); + mSizeInBytes, HBU_CPU_ONLY, mDevice, false, false); } // schedule a copy to the staging diff --git a/RenderSystems/Direct3D11/src/OgreD3D11HardwareBufferManager.cpp b/RenderSystems/Direct3D11/src/OgreD3D11HardwareBufferManager.cpp index 1185314b8df..cf88714d54c 100644 --- a/RenderSystems/Direct3D11/src/OgreD3D11HardwareBufferManager.cpp +++ b/RenderSystems/Direct3D11/src/OgreD3D11HardwareBufferManager.cpp @@ -55,7 +55,7 @@ namespace Ogre { { assert(numVerts > 0); D3D11HardwareVertexBuffer* vbuf = new D3D11HardwareVertexBuffer( - this, vertexSize, numVerts, usage, mlpD3DDevice, false, useShadowBuffer, false); + this, vertexSize, numVerts, usage, mlpD3DDevice, useShadowBuffer, false); { OGRE_LOCK_MUTEX(mVertexBuffersMutex); mVertexBuffers.insert(vbuf); @@ -70,7 +70,7 @@ namespace Ogre { { assert(numVerts > 0); D3D11HardwareVertexBuffer* vbuf = new D3D11HardwareVertexBuffer( - this, vertexSize, numVerts, usage, mlpD3DDevice, false, useShadowBuffer, true); + this, vertexSize, numVerts, usage, mlpD3DDevice, useShadowBuffer, true); { OGRE_LOCK_MUTEX(mVertexBuffersMutex); mVertexBuffers.insert(vbuf); @@ -85,7 +85,7 @@ namespace Ogre { { assert(numIndexes > 0); D3D11HardwareIndexBuffer* idx = new D3D11HardwareIndexBuffer( - this, itype, numIndexes, usage, mlpD3DDevice, false, useShadowBuffer); + this, itype, numIndexes, usage, mlpD3DDevice, useShadowBuffer); { OGRE_LOCK_MUTEX(mIndexBuffersMutex); mIndexBuffers.insert(idx); diff --git a/RenderSystems/Direct3D11/src/OgreD3D11HardwareIndexBuffer.cpp b/RenderSystems/Direct3D11/src/OgreD3D11HardwareIndexBuffer.cpp index a989ae3f87b..d090c0b1f1a 100644 --- a/RenderSystems/Direct3D11/src/OgreD3D11HardwareIndexBuffer.cpp +++ b/RenderSystems/Direct3D11/src/OgreD3D11HardwareIndexBuffer.cpp @@ -33,8 +33,8 @@ namespace Ogre { //--------------------------------------------------------------------- D3D11HardwareIndexBuffer::D3D11HardwareIndexBuffer(HardwareBufferManagerBase* mgr, HardwareIndexBuffer::IndexType idxType, size_t numIndexes, HardwareBuffer::Usage usage, D3D11Device & device, - bool useSystemMemory, bool useShadowBuffer) - : HardwareIndexBuffer(mgr, idxType, numIndexes, usage, useSystemMemory, false /* see below */) + bool useShadowBuffer) + : HardwareIndexBuffer(mgr, idxType, numIndexes, usage, false, false /* see below */) { // ensure DefaultHardwareIndexBuffer was not created assert(!mShadowBuffer); @@ -42,7 +42,7 @@ namespace Ogre { // everything is done via internal generalisation mBufferImpl = new D3D11HardwareBuffer(D3D11HardwareBuffer::INDEX_BUFFER, - mSizeInBytes, mUsage, device, useSystemMemory, useShadowBuffer, false); + mSizeInBytes, mUsage, device, useShadowBuffer, false); } //--------------------------------------------------------------------- diff --git a/RenderSystems/Direct3D11/src/OgreD3D11HardwareUniformBuffer.cpp b/RenderSystems/Direct3D11/src/OgreD3D11HardwareUniformBuffer.cpp index 365fde88024..e13f040fbe5 100644 --- a/RenderSystems/Direct3D11/src/OgreD3D11HardwareUniformBuffer.cpp +++ b/RenderSystems/Direct3D11/src/OgreD3D11HardwareUniformBuffer.cpp @@ -44,7 +44,7 @@ namespace Ogre { // everything is done via internal generalisation mBufferImpl = new D3D11HardwareBuffer(D3D11HardwareBuffer::CONSTANT_BUFFER, - mSizeInBytes, mUsage, device, false, useShadowBuffer, false); + mSizeInBytes, mUsage, device, useShadowBuffer, false); } //--------------------------------------------------------------------- diff --git a/RenderSystems/Direct3D11/src/OgreD3D11HardwareVertexBuffer.cpp b/RenderSystems/Direct3D11/src/OgreD3D11HardwareVertexBuffer.cpp index 63710555c8e..16cb321356e 100644 --- a/RenderSystems/Direct3D11/src/OgreD3D11HardwareVertexBuffer.cpp +++ b/RenderSystems/Direct3D11/src/OgreD3D11HardwareVertexBuffer.cpp @@ -34,8 +34,8 @@ namespace Ogre { //--------------------------------------------------------------------- D3D11HardwareVertexBuffer::D3D11HardwareVertexBuffer(HardwareBufferManagerBase* mgr, size_t vertexSize, size_t numVertices, HardwareBuffer::Usage usage, D3D11Device & device, - bool useSystemMemory, bool useShadowBuffer, bool streamOut) - : HardwareVertexBuffer(mgr, vertexSize, numVertices, usage, useSystemMemory, false /* see below */), + bool useShadowBuffer, bool streamOut) + : HardwareVertexBuffer(mgr, vertexSize, numVertices, usage, false, false /* see below */), mBufferImpl(0) { @@ -45,7 +45,7 @@ namespace Ogre { // everything is done via internal generalisation mBufferImpl = new D3D11HardwareBuffer(D3D11HardwareBuffer::VERTEX_BUFFER, - mSizeInBytes, mUsage, device, useSystemMemory, useShadowBuffer, streamOut); + mSizeInBytes, mUsage, device, useShadowBuffer, streamOut); } //---------------------------------------------------------------------