Buffer mapping state validation fixes
- Can't update an already mapped bufferData
- Can't unmap an unmapped buffer
- Disallowed illegal mapBufferRange flag combinations
- Can't flush buffer if not mapped
Change-Id: I7013f63e5db64c1016f9ce50a43d0629f0a2950e
Reviewed-on: https://swiftshader-review.googlesource.com/13788
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index f486982..ffac13a 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -649,6 +649,12 @@
return error(GL_INVALID_OPERATION);
}
+ if(buffer->isMapped())
+ {
+ // It is an invalid operation to update an already mapped buffer
+ return error(GL_INVALID_OPERATION);
+ }
+
if((size_t)size + offset > buffer->size())
{
return error(GL_INVALID_VALUE);