diff options
Diffstat (limited to 'src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage11.cpp')
-rw-r--r-- | src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage11.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage11.cpp index 3647d8a898..2f694db061 100644 --- a/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage11.cpp +++ b/src/3rdparty/angle/src/libGLESv2/renderer/BufferStorage11.cpp @@ -131,7 +131,7 @@ void *BufferStorage11::getData() return mResolvedData; } -void BufferStorage11::setData(const void* data, unsigned int size, unsigned int offset) +void BufferStorage11::setData(const void* data, unsigned int size, unsigned int offset, unsigned int target) { ID3D11Device *device = mRenderer->getDevice(); ID3D11DeviceContext *context = mRenderer->getDeviceContext(); @@ -201,7 +201,10 @@ void BufferStorage11::setData(const void* data, unsigned int size, unsigned int D3D11_BUFFER_DESC bufferDesc; bufferDesc.ByteWidth = requiredBufferSize; bufferDesc.Usage = D3D11_USAGE_DEFAULT; - bufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_INDEX_BUFFER; + if (mRenderer->getFeatureLevel() > D3D_FEATURE_LEVEL_9_3) + bufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_INDEX_BUFFER; + else + bufferDesc.BindFlags = target == GL_ARRAY_BUFFER ? D3D11_BIND_VERTEX_BUFFER : D3D11_BIND_INDEX_BUFFER; bufferDesc.CPUAccessFlags = 0; bufferDesc.MiscFlags = 0; bufferDesc.StructureByteStride = 0; @@ -324,7 +327,7 @@ unsigned int BufferStorage11::getSize() const bool BufferStorage11::supportsDirectBinding() const { - return true; + return mRenderer->getFeatureLevel() >= D3D_FEATURE_LEVEL_10_0; } void BufferStorage11::markBufferUsage() |