Commit 3fab7634 by Geoff Lang Committed by Commit Bot

Make PBO and map buffer extensions enableable.

BUG=angleproject:1523 Change-Id: Ia934a186ce490083f93b59eedd3bdf48e0fcb727 Reviewed-on: https://chromium-review.googlesource.com/685799Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
parent 5b2a1760
...@@ -624,9 +624,9 @@ const ExtensionInfoMap &GetExtensionInfoMap() ...@@ -624,9 +624,9 @@ const ExtensionInfoMap &GetExtensionInfoMap()
map["GL_OES_rgb8_rgba8"] = esOnlyExtension(&Extensions::rgb8rgba8); map["GL_OES_rgb8_rgba8"] = esOnlyExtension(&Extensions::rgb8rgba8);
map["GL_EXT_texture_format_BGRA8888"] = esOnlyExtension(&Extensions::textureFormatBGRA8888); map["GL_EXT_texture_format_BGRA8888"] = esOnlyExtension(&Extensions::textureFormatBGRA8888);
map["GL_EXT_read_format_bgra"] = esOnlyExtension(&Extensions::readFormatBGRA); map["GL_EXT_read_format_bgra"] = esOnlyExtension(&Extensions::readFormatBGRA);
map["GL_NV_pixel_buffer_object"] = esOnlyExtension(&Extensions::pixelBufferObject); map["GL_NV_pixel_buffer_object"] = enableableExtension(&Extensions::pixelBufferObject);
map["GL_OES_mapbuffer"] = esOnlyExtension(&Extensions::mapBuffer); map["GL_OES_mapbuffer"] = enableableExtension(&Extensions::mapBuffer);
map["GL_EXT_map_buffer_range"] = esOnlyExtension(&Extensions::mapBufferRange); map["GL_EXT_map_buffer_range"] = enableableExtension(&Extensions::mapBufferRange);
map["GL_EXT_color_buffer_half_float"] = enableableExtension(&Extensions::colorBufferHalfFloat); map["GL_EXT_color_buffer_half_float"] = enableableExtension(&Extensions::colorBufferHalfFloat);
map["GL_OES_texture_half_float"] = enableableExtension(&Extensions::textureHalfFloat); map["GL_OES_texture_half_float"] = enableableExtension(&Extensions::textureHalfFloat);
map["GL_OES_texture_half_float_linear"] = enableableExtension(&Extensions::textureHalfFloatLinear); map["GL_OES_texture_half_float_linear"] = enableableExtension(&Extensions::textureHalfFloatLinear);
......
...@@ -447,6 +447,80 @@ TEST_P(WebGLCompatibilityTest, ExtensionCompilerSpec) ...@@ -447,6 +447,80 @@ TEST_P(WebGLCompatibilityTest, ExtensionCompilerSpec)
glDeleteProgram(program); glDeleteProgram(program);
} }
// Test enabling the GL_NV_pixel_buffer_object extension
TEST_P(WebGLCompatibilityTest, EnablePixelBufferObjectExtensions)
{
EXPECT_FALSE(extensionEnabled("GL_NV_pixel_buffer_object"));
EXPECT_FALSE(extensionEnabled("GL_OES_mapbuffer"));
EXPECT_FALSE(extensionEnabled("GL_EXT_map_buffer_range"));
// These extensions become core in in ES3/WebGL2.
ANGLE_SKIP_TEST_IF(getClientMajorVersion() >= 3);
GLBuffer buffer;
glBindBuffer(GL_PIXEL_PACK_BUFFER, buffer);
EXPECT_GL_ERROR(GL_INVALID_ENUM);
if (extensionRequestable("GL_NV_pixel_buffer_object"))
{
glRequestExtensionANGLE("GL_NV_pixel_buffer_object");
EXPECT_GL_NO_ERROR();
glBindBuffer(GL_PIXEL_PACK_BUFFER, buffer);
EXPECT_GL_NO_ERROR();
glBufferData(GL_PIXEL_PACK_BUFFER, 4, nullptr, GL_STATIC_DRAW);
glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
EXPECT_GL_NO_ERROR();
}
}
// Test enabling the GL_OES_mapbuffer and GL_EXT_map_buffer_range extensions
TEST_P(WebGLCompatibilityTest, EnableMapBufferExtensions)
{
EXPECT_FALSE(extensionEnabled("GL_OES_mapbuffer"));
EXPECT_FALSE(extensionEnabled("GL_EXT_map_buffer_range"));
// These extensions become core in in ES3/WebGL2.
ANGLE_SKIP_TEST_IF(getClientMajorVersion() >= 3);
GLBuffer buffer;
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, 4, nullptr, GL_STATIC_DRAW);
glMapBufferOES(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY_OES);
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
glMapBufferRangeEXT(GL_ELEMENT_ARRAY_BUFFER, 0, 4, GL_MAP_WRITE_BIT);
EXPECT_GL_ERROR(GL_INVALID_OPERATION);
GLint access = 0;
glGetBufferParameteriv(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_ACCESS_OES, &access);
EXPECT_GL_ERROR(GL_INVALID_ENUM);
if (extensionRequestable("GL_OES_mapbuffer"))
{
glRequestExtensionANGLE("GL_OES_mapbuffer");
EXPECT_GL_NO_ERROR();
glMapBufferOES(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY_OES);
glUnmapBufferOES(GL_ELEMENT_ARRAY_BUFFER);
glGetBufferParameteriv(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_ACCESS_OES, &access);
EXPECT_GL_NO_ERROR();
}
if (extensionRequestable("GL_EXT_map_buffer_range"))
{
glRequestExtensionANGLE("GL_EXT_map_buffer_range");
EXPECT_GL_NO_ERROR();
glMapBufferRangeEXT(GL_ELEMENT_ARRAY_BUFFER, 0, 4, GL_MAP_WRITE_BIT);
glUnmapBufferOES(GL_ELEMENT_ARRAY_BUFFER);
glGetBufferParameteriv(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_ACCESS_OES, &access);
EXPECT_GL_NO_ERROR();
}
}
// Verify that the context generates the correct error when the framebuffer attachments are // Verify that the context generates the correct error when the framebuffer attachments are
// different sizes // different sizes
TEST_P(WebGLCompatibilityTest, FramebufferAttachmentSizeMissmatch) TEST_P(WebGLCompatibilityTest, FramebufferAttachmentSizeMissmatch)
......
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