diff options
Diffstat (limited to 'src/3rdparty/angle')
-rw-r--r-- | src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage11.cpp | 22 | ||||
-rw-r--r-- | src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage9.cpp | 3 |
2 files changed, 18 insertions, 7 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage11.cpp index 4c37bdbf60..7fe9e6b762 100644 --- a/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage11.cpp +++ b/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage11.cpp @@ -182,7 +182,8 @@ void BufferStorage11::setData(const void* data, unsigned int size, unsigned int return gl::error(GL_OUT_OF_MEMORY); } - memcpy(mappedResource.pData, data, size); + if (data) + memcpy(mappedResource.pData, data, size); context->Unmap(mStagingBuffer, 0); } @@ -211,12 +212,21 @@ void BufferStorage11::setData(const void* data, unsigned int size, unsigned int mBufferSize = 0; } - D3D11_SUBRESOURCE_DATA initialData; - initialData.pSysMem = data; - initialData.SysMemPitch = size; - initialData.SysMemSlicePitch = 0; - result = device->CreateBuffer(&bufferDesc, &initialData, &mBuffer); + if (data) + { + D3D11_SUBRESOURCE_DATA initialData; + initialData.pSysMem = data; + initialData.SysMemPitch = size; + initialData.SysMemSlicePitch = 0; + + result = device->CreateBuffer(&bufferDesc, &initialData, &mBuffer); + } + else + { + result = device->CreateBuffer(&bufferDesc, NULL, &mBuffer); + } + if (FAILED(result)) { return gl::error(GL_OUT_OF_MEMORY); diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage9.cpp index 7fc14fc073..4468461871 100644 --- a/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage9.cpp +++ b/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage9.cpp @@ -54,7 +54,8 @@ void BufferStorage9::setData(const void* data, unsigned int size, unsigned int o } mSize = std::max(mSize, offset + size); - memcpy(reinterpret_cast<char*>(mMemory) + offset, data, size); + if (data) + memcpy(reinterpret_cast<char*>(mMemory) + offset, data, size); } void BufferStorage9::clear() |