Commit 948f5571 by Jamie Madill

Move the map logic to the buffer storage implementation.

Refactoring patch only. BUG=angle:511 Change-Id: Id69efe15ecb32d711a79cc5ff612853e29377368 Reviewed-on: https://chromium-review.googlesource.com/193242Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent ac0a267b
...@@ -69,7 +69,10 @@ class BufferStorage11::TypedBufferStorage11 ...@@ -69,7 +69,10 @@ class BufferStorage11::TypedBufferStorage11
size_t size, size_t destOffset) = 0; size_t size, size_t destOffset) = 0;
virtual void resize(size_t size, bool preserveData) = 0; virtual void resize(size_t size, bool preserveData) = 0;
protected: virtual void *map(GLbitfield access) = 0;
virtual void unmap() = 0;
protected:
TypedBufferStorage11(Renderer11 *renderer, BufferUsage usage); TypedBufferStorage11(Renderer11 *renderer, BufferUsage usage);
Renderer11 *mRenderer; Renderer11 *mRenderer;
...@@ -92,7 +95,10 @@ class BufferStorage11::NativeBuffer11 : public BufferStorage11::TypedBufferStora ...@@ -92,7 +95,10 @@ class BufferStorage11::NativeBuffer11 : public BufferStorage11::TypedBufferStora
size_t size, size_t destOffset); size_t size, size_t destOffset);
virtual void resize(size_t size, bool preserveData); virtual void resize(size_t size, bool preserveData);
private: virtual void *map(GLbitfield access);
virtual void unmap();
private:
ID3D11Buffer *mNativeBuffer; ID3D11Buffer *mNativeBuffer;
static void fillBufferDesc(D3D11_BUFFER_DESC* bufferDesc, Renderer *renderer, BufferUsage usage, unsigned int bufferSize); static void fillBufferDesc(D3D11_BUFFER_DESC* bufferDesc, Renderer *renderer, BufferUsage usage, unsigned int bufferSize);
...@@ -351,32 +357,15 @@ bool BufferStorage11::isMapped() const ...@@ -351,32 +357,15 @@ bool BufferStorage11::isMapped() const
void *BufferStorage11::map(GLbitfield access) void *BufferStorage11::map(GLbitfield access)
{ {
ASSERT(!mIsMapped); ASSERT(!mIsMapped);
D3D11_MAPPED_SUBRESOURCE mappedResource;
HRESULT result;
ID3D11DeviceContext *context = mRenderer->getDeviceContext();
D3D11_MAP d3dMapType = gl_d3d11::GetD3DMapTypeFromBits(access);
UINT d3dMapFlag = ((access & GL_MAP_UNSYNCHRONIZED_BIT) != 0 ? D3D11_MAP_FLAG_DO_NOT_WAIT : 0);
ID3D11Buffer *stagingBuffer = getStagingBuffer()->getNativeBuffer();
result = context->Map(stagingBuffer, 0, d3dMapType, d3dMapFlag, &mappedResource);
ASSERT(SUCCEEDED(result));
mIsMapped = true; mIsMapped = true;
return getStagingBuffer()->map(access);
return mappedResource.pData;
} }
void BufferStorage11::unmap() void BufferStorage11::unmap()
{ {
ASSERT(mIsMapped); ASSERT(mIsMapped);
ID3D11DeviceContext *context = mRenderer->getDeviceContext();
ID3D11Buffer *stagingBuffer = getStagingBuffer()->getNativeBuffer();
context->Unmap(stagingBuffer, 0);
mIsMapped = false; mIsMapped = false;
getStagingBuffer()->unmap();
} }
BufferStorage11::NativeBuffer11 *BufferStorage11::getStagingBuffer() BufferStorage11::NativeBuffer11 *BufferStorage11::getStagingBuffer()
...@@ -522,4 +511,26 @@ void BufferStorage11::NativeBuffer11::fillBufferDesc(D3D11_BUFFER_DESC* bufferDe ...@@ -522,4 +511,26 @@ void BufferStorage11::NativeBuffer11::fillBufferDesc(D3D11_BUFFER_DESC* bufferDe
} }
} }
void *BufferStorage11::NativeBuffer11::map(GLbitfield access)
{
ASSERT(mUsage == BUFFER_USAGE_STAGING);
D3D11_MAPPED_SUBRESOURCE mappedResource;
ID3D11DeviceContext *context = mRenderer->getDeviceContext();
D3D11_MAP d3dMapType = gl_d3d11::GetD3DMapTypeFromBits(access);
UINT d3dMapFlag = ((access & GL_MAP_UNSYNCHRONIZED_BIT) != 0 ? D3D11_MAP_FLAG_DO_NOT_WAIT : 0);
HRESULT result = context->Map(mNativeBuffer, 0, d3dMapType, d3dMapFlag, &mappedResource);
ASSERT(SUCCEEDED(result));
return mappedResource.pData;
}
void BufferStorage11::NativeBuffer11::unmap()
{
ASSERT(mUsage == BUFFER_USAGE_STAGING);
ID3D11DeviceContext *context = mRenderer->getDeviceContext();
context->Unmap(mNativeBuffer, 0);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment