Commit de703db5 by Tim Van Patten Committed by Commit Bot

Fix ValidateBufferStorageEXT()

ValidateBufferStorageEXT() has a copy/paste error where the flag GL_MAP_PERSISTENT_BIT_EXT is enabled twice while GL_MAP_COHERENT_BIT_EXT is not enabled at all during parameter checking, causing ANGLE to reject valid calls to glBufferStorageEXT(). Bug: angleproject:5473 Test: BufferStorageTestES3.BufferStorageFlagsPersistentCoherentWrite Change-Id: I05596f54d48118f609ef1c88ca222d9fcdb2dd3a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2596956 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: 's avatarCharlie Lao <cclao@google.com> Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com>
parent 67170564
...@@ -1274,7 +1274,7 @@ bool ValidateBufferStorageEXT(const Context *context, ...@@ -1274,7 +1274,7 @@ bool ValidateBufferStorageEXT(const Context *context,
constexpr GLbitfield kAllUsageFlags = constexpr GLbitfield kAllUsageFlags =
(GL_DYNAMIC_STORAGE_BIT_EXT | GL_MAP_READ_BIT | GL_MAP_WRITE_BIT | (GL_DYNAMIC_STORAGE_BIT_EXT | GL_MAP_READ_BIT | GL_MAP_WRITE_BIT |
GL_MAP_PERSISTENT_BIT_EXT | GL_MAP_PERSISTENT_BIT_EXT | GL_CLIENT_STORAGE_BIT_EXT); GL_MAP_PERSISTENT_BIT_EXT | GL_MAP_COHERENT_BIT_EXT | GL_CLIENT_STORAGE_BIT_EXT);
if ((flags & ~kAllUsageFlags) != 0) if ((flags & ~kAllUsageFlags) != 0)
{ {
context->validationError(GL_INVALID_VALUE, kInvalidBufferUsageFlags); context->validationError(GL_INVALID_VALUE, kInvalidBufferUsageFlags);
......
...@@ -836,6 +836,21 @@ TEST_P(BufferStorageTestES3, BufferStorageInvalidSize) ...@@ -836,6 +836,21 @@ TEST_P(BufferStorageTestES3, BufferStorageInvalidSize)
EXPECT_GL_ERROR(GL_INVALID_VALUE); EXPECT_GL_ERROR(GL_INVALID_VALUE);
} }
// Tests that buffer storage can be allocated with the GL_MAP_PERSISTENT_BIT_EXT and
// GL_MAP_COHERENT_BIT_EXT flags
TEST_P(BufferStorageTestES3, BufferStorageFlagsPersistentCoherentWrite)
{
ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_buffer_storage"));
std::vector<GLfloat> data(6, 1.0f);
GLBuffer buffer;
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferStorageEXT(GL_ARRAY_BUFFER, data.size(), data.data(),
GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT_EXT | GL_MAP_COHERENT_BIT_EXT);
ASSERT_GL_NO_ERROR();
}
// Verify that glBufferStorage makes a buffer immutable // Verify that glBufferStorage makes a buffer immutable
TEST_P(BufferStorageTestES3, StorageBufferBufferData) TEST_P(BufferStorageTestES3, StorageBufferBufferData)
{ {
......
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